MeCab介绍
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
-运行依赖
C++ 编译器 (g++ 3.4.3 和 VC7 确认可以编译通过)
iconv (libiconv): 用于词典的编码转换
-安装步骤
- 安装mecab
cd mecab-0.996
./configure
make
make check
make install
2.词典的安装
tar zxfv mecab-ipadic-2.7.0-20070801mecab-ipadic-2.7.0-20070801
./configure --with-charset=utf8
make
make install
- 用户自定义词典(若更新不频繁可直接修改系统词典,此处只介绍用户自定义词典)
更新系统词典比较耗时; 词典更新频繁, 或者没有权限变更系统词典的时候, 也可以使用用户词典。
进入适当的目录 (例: /home/foo/bar)
创建 foo.csv 这种文件
在 foo.csv 中添加词条
编译词典
/usr/local/libexec/mecab/mecab-dict-index -d/usr/local/lib/mecab/dic/ipadic -u foo.dic -f euc-jp -t euc-jp foo.csv
-d DIR: 包含系统词典的目录
-u FILE: FILE 生成的用户词典文件
-f charset: CSV 文件的编码
-t charset: 生成的二进制词典的编码
确认生成了词典文件 /home/foo/bar/foo.dic
在 /usr/local/lib/mecab/dic/ipadic/dicrc 或者 /usr/local/etc/mecabrc 中追加如下行 userdic = /home/foo/bar/foo.dic
-
自定义词典格式
参考:http://www.52nlp.cn/%E6%97%A5%E6%96%87%E5%88%86%E8%AF%8D%E5%99%A8-mecab-%E6%96%87%E6%A1%A3
-
安装mecab-python
import MeCab
mecab = MeCab.Tagger ("-Owakati")
sentence = '太郎はこの本を二郎を見た女性に渡した。'
print(mecab.parse(sentence))
参考:http://blog.csdn.net/willduan1/article/details/68945327
4)安装过程中踩过的坑
不顺利的时候巨坑。。。
- 这里面的坑基本都踩过。。http://www.52nlp.cn/mecab%E5%AE%89%E8%A3%85%E8%BF%87%E7%A8%8B%E4%B8%AD%E7%9A%84%E4%B8%80%E4%BA%9B%E5%9D%91
- 如果在构造函数和解析途中发生错误,将抛出异常 RuntimeError ,解决办法:一般是没有安装词典,或者词典安装不成功,或者用户自定义词典生成错误,需要一一排查
网友评论