月度归档:2013年03月

Darts: Double-ARray Trie System 翻译文档

Darts: Double-ARray Trie System

开篇

Darts 是用于构建双数组 Double-Array [Aoe 1989] 的简单的 C++ Template Library . 双数组 (Double-Array) 是用于实现 Trie 的一种数据结构, 比其它的类 Trie 实现方式(Hash-Tree, Digital Trie, Patricia Tree, Suffix Array) 速度更快。 原始的 Double-Array 使能够支持动态添加删除 key, 但是 Darts 只支持把排好序的词典文件转换为静态的 Double-Array.

Darts 既可以像 Hash 一样作为简单的词典使用,也能非常高效的执行分词词典中必须的 Common Prefix Search 操作。

自2003年7月起, 两个开源的日语分词系统 MeCabChaSen 都使用了 Darts .

继续阅读

Start your future on Coursera today.

日文分词器 Mecab 文档

一、日文分词器 MeCab 简介

mecab (http://mecab.sourceforge.net/) 是奈良先端科学技術大学院的工藤拓开发的日文分词系统, 该作者写过多个 machine learning 方面的软件包, 最有名的就是 CRF++, 目前该作者在 google@Japan 工作。

mecab 是基于CRF 的一个日文分词系统,代码使用 c++ 实现, 基本上内嵌了 CRF++ 的代码, 同时提供了多种脚本语言调用的接口(python, perl, ruby 等).整个系统的架构采用通用泛化的设计, 用户可以通过配置文件定制CRF训练中需要使用的特征模板。 甚至, 如果你有中文的分词语料作为训练语料,可以在该架构下按照其配置文件的规范定制一个中文的分词系统。

日文NLP 界有几个有名的开源分词系统, Juman, Chasen, Mecab.   Juman 和 Chasen 都是比较老的系统了, Mecab 系统比较新, 在很多方面都优于 Juman 和 Chasen, mecab 目前开发也比较活跃。 Mecab 虽然使用 CRF 实现, 但是解析效率上确相当高效, 据作者的介绍, Mecab 比基于 HMM 的 Chasen 的解析速度要快。 笔者在一台 Linux 机器上粗略测试过其速度,将近达到 2MB/s, 完全达到了工程应用的需求, 该系统目前在日文 NLP 界被广泛使用。

中文和日文的有着类似的分词需求,因此mecab 对于中文处理来说有着很好的借鉴价值, 由于mecab 的内部模块化得很清晰,如果能读懂其文档的话,是比较容易能看懂整套代码的。 可惜目前中文的资料很少, 而其自带的文档又都是日文的, 所以了解它的中国人不多。

笔者把 mecab 自带的文档从日文翻译成中文, 希望mecab对于中文分词有兴趣的读者能有借鉴价值。日语水平很烂, 大家凑合着看吧。 对于自由的文档翻译,有一句话: Document is like sex. If it's good, it's very very good. If it's bad, it's better than nothing.

二、关于 MeCab (和布蕪)

Mecab 是京都大学情报学研究科-日本电信电话股份有限公司通信科学基础研究所通过 Unit Project 的合作研究共同开发的词法分析引擎。其设计的基本方针是不依赖于具体的语言,词典,语料库, 采用 Conditional Random Fields (CRF) 模型进行参数估计, 性能优于使用隐马模型的 ChaSen 。同时, 平均解析速度高于 ChaSenJumanKAKASI 这些日文词法分析器. 顺便说一下, Mecab (和布蕪, めかぶ), 是作者最喜欢的食物.

目录

继续阅读

Start your future on Coursera today.

NLP Job-缘起

注:建立了一个自然语言处理&机器学习相关领域的求职博客“NLP Job", 定位“关注自然语言处理|机器学习|数据挖掘|搜索引擎|计算广告等相关领域的工作机会”,欢迎大家关注。

今年春节前,有朋友给我建议,可以在52nlp里提供一些相关领域的求职信息,既不影响52nlp的整体感觉,也可以获得一定的收益,平衡一下开支。虽然52nlp的域名和虚拟服务器的开支微乎其微,不过这个注意却让我有点心动;虽然52nlp从诞生之初就没本着赢利去,但是探索一下商业模式也无妨。不过比较纠结的是以何种方式展开?

春节后与一些朋友,同事,猎头以及公式的HR聊天,聊相关的问题,觉得可行,至少可以在自然语言处理这个领域尝试,这个领域虽然小,但是前景越来越明朗,并且和这个领域相关的机器学习,数据挖掘,搜索和广告都有大量的工作机会。52nlp虽然是个小众博客,但是读者多与这些领域相关,于是考虑尝试一把。

原本考虑在52nlp的博客中穿插一些招聘信息,但觉得不妥,于是决定单独开一个站点,通过52nlp来适度宣传。今天尝试注册域名,没想到nlpjob.com这个域名还可以注册,很开心,关于nlpjob之后是个什么样子,还没考虑好,但是决定先开启这个blog.nlpjob.com的博客,通过这个博客发布一些招聘信息,因为私下里,常常有些朋友找我发招聘信息,不如就在这里统一发算了。当然,除了这些信息,我也会发一些自己所掌握的工作机会,有猎头提供的,也有我所在公司(腾讯)的,还有其他公司提供的,如果大家对某些工作感兴趣,可以将求职目标和简历发到这个邮箱: nlpjob01 at gmail.com,我会帮你推荐相关的工作。

当然,对于任何有相关招聘需求的朋友,社招或者招聘实习生,都可以通过上面那个邮箱或者52nlp微博( http://www.weibo.com/52nlp )找我,提供相关的招聘信息,我会无偿给您发布和推广;如果是猎头朋友或者公司的HR,欢迎洽谈相关业务。

Start your future on Coursera today.