月度归档:2013年03月

Darts: Double-ARray Trie System 翻译文档

Deep Learning Specialization on Coursera

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 .

继续阅读

日文分词器 Mecab 文档

Deep Learning Specialization on Coursera

一、日文分词器 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 (和布蕪, めかぶ), 是作者最喜欢的食物.

目录

继续阅读

NLP Job-缘起

Deep Learning Specialization on Coursera

注:建立了一个自然语言处理&机器学习相关领域的求职博客“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,欢迎洽谈相关业务。