Bamboo项目介绍
- Bamboo项目是一个基于机器学习技术的中文自然语言处理平台。
- Bamboo项目的主要目标:
Bamboo安装部署
方法一: 安装打过包的最新稳定版
- 下载源代码
- 安装CRF++工具包
- 安装CMake编译环境
- Slackware 默认自带CMake
- Ubuntu & Debian 系统使用: apt-get install cmake
- archlinux系统: 使用pacman -S cmake
- 其他Linux/Unix系统,请去CMake官方下载源代码编译。地址是:http://www.cmake.org
- 注:cmake需要2.6版本以上
- 使用CMake编译Bamboo
cd bamboo
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=release
make all
- 安装Bamboo到/opt/bamboo目录
make install
- 编译Bamboo PHP扩展
cd /opt/bamboo/exts/php
phpize
make
- 安装Bamboo PHP扩展
make install
- 安装后Bamboo的目录结构
- /opt/bamboo/bin/ : 可执行程序和训练脚本文件
- /opt/bamboo/etc/ : 配置文件
- /opt/bamboo/template/ : CRF训练模板文件 (.tmpl)
- /opt/bamboo/processor/ : processor库
- /opt/bamboo/exts/ : 扩展接口
- /usr/lib/ : 动态链接库
- /usr/include/bamboo/ : C/C++的头文件
方法二:安装测试svn trunk的最新源码
- 从google code的subversion导出最新的bamboo trunk源码:
Bamboo配置
- Bamboo安装完成后,其默认的配置文件都在/opt/bamboo/etc/目录下,每个Bamboo Parser都有自己的配置文件
- Bamboo配置方法可以参见Bamboo Configure Guide,建议初次使用者保留参数不变;对于对程序内部流程相对了解的高级用户,可以根据需要对参数进行调整
- 在php.ini配置文件中添加如下2行:
- extension = bamboo.so
- bamboo.parsers = crf_seg,crf_pos,crf_ner_ns, keyword
Bamboo训练统计
- Bamboo中的分词,词性标注和命名实体识别算法都是基于由字构词的文本标注思想,因此在使用Bamboo之前需要准备好已完成标注的的文本语料,然后使用CRF++工具包和相应的特征模板进行训练,最终得出各自的字典,统计信息和模型文件
- Bamboo中的主题词抽取是在TF和IDF的基础上,用词句关系图分析的算法计算所有分词的权重,最终给出Top权重词,因此在使用Bamboo的主题词抽取前也需要收集一定规模的文本语料,对其中的分词进行统计和训练,得出各种词的IDF和同现关系,以供抽取时计算使用。
- Bamboo训练工具:
/opt/bamboo/bin/auto_build -t [train_type] -f [train_file.txt] -d [train_dir] -p [thread_number]
- auto_build的训练参数:
- -t 选项指定了训练的类型,即是分词、词性、实体词还是主题词的训练
- -f 选项指定了训练语料的路径,缺省会自动下载98年人民日报1月份的文章作为语料
- -d 选项指定了训练语料的目录,该目录下的.txt文本文件会被当做主题词抽取的语料
- -p 选项指定了CRF++训练的线程数量,推荐和cpu数量一致
- auto_build的配置文件是/opt/bamboo/etc/build_settings,默认训练完成后,会在/opt/bamboo/下产生2个新目录:data/和index/
- data目录中存放了文本格式的语料和字典文件
- index目录中存放了二进制格式的训练model和字典trie树文件
- 除了缺省字典,Bamboo还为用户提供了自定义字典的工具lexicon,其具体方法请参考Bamboo Tools,用户可以使用lexicon定制自己的user_combine和break辞典,其功能如下所示:
在代码树中训练模型
在svn co出来的代码树里面,我们可以直接用下面命令训练模型(在代码树根目录下):
./source/tools/auto_build -t seg
生成的字典文件会在代码树根目录下的 index 目录里。
Bamboo测试
- Bamboo命令行接口:
/opt/bamboo/bin/bamboo -p [bamboo_parser] -c [bamboo_cfg]
- -p 选项的取值可以是crf_seg, crf_pos, crf_ner_nr, crf_ner_ns, crf_ner_nt, keyword,分别对应相应的Bamboo Parser
- -c 选项可以指定配置文件的路径,缺省会用/opt/bamboo/etc/目录下默认的配置文件
- Bamboo命令从标准输入接收文本,并根据不同的Parser选项输出相应的结果,例如:分词,词性,地名,主题词等
安装的ext目录下竟然还有.svn目录……
很好! 稳定版:nlpbamboo-1.1.1/source/bamboo.cxx缺少stdio.h文件,导致编译时候出现snprintf错误。
svn里面同样的问题,外加缺少tools/的build_setting
snprintf的错在当前版本应该已经fix掉了。
以下是执行0.54版本时的错误。 postgres@postgres-desktop:~/opengis/nlpbamboo/build$ make all Scanning dependencies of target bamboo_static 1% Building CXX object source/CMakeFiles/bamboo_static.dir/bamboo.cxx.o /home/postgres/opengis/nlpbamboo/source/bamboo.cxx: In function ‘void bamboo_init(const char, const char)’: /home/postgres/opengis/nlpbamboo/source/bamboo.cxx:30: error: ‘snprintf’ was not declared in this scope /home/postgres/opengis/nlpbamboo/source/bamboo.cxx: In function ‘char bamboo_parse(void)’: /home/postgres/opengis/nlpbamboo/source/bamboo.cxx:99: error: ‘snprintf’ was not declared in this scope make2?: [source/CMakeFiles/bamboo_static.dir/bamboo.cxx.o] 错误 1 make1?: [source/CMakeFiles/bamboo_static.dir/all] 错误 2 make: all? 错误 2
我使用原代码编译 还需要按照CRF++吗? 邮件联系一下啊 fenghlkevin@gmail.com
我有许多问题想要询问,贵方的google Group讨论组好像也取消了,请问我可以询问哪个Email呢? 我的Email: nobody.01@m2k.com.tw 邮件联系一下好吗?
回答fenghlkevin的问题: Bamboo需要crf++库,所以必须先安装CRF++。
最新的稳定版http://nlpbamboo.googlecode.com/files/nlpbamboo-1.1.2.tar.bz2 改正了原来的nlpbamboo-1.1.1.tar.bz2的两处bug:
1) 在sources/bamboo.cxx的开头加上:#include <cstdio>
2) 去掉了ext子目录下面的.svn目录
Hi I am getting the following error on installing the PHP module (as per recommendation) :
PHP Fatal error: Unable to start bamboo module in Unknown on line 0
bamboo is installed properly and the following command produces the underneath output:
[sushant@xjhg123 ~]$ /opt/bamboo/bin/bamboo parsing '-'...
My PHP version is 5.3.8, OS is ArchLinux? (uname returns 2.6.35.4)
Please help me sort this problem out!
Thanks in advance.
-Sushant
failed to init parser crf_seg PHP Fatal error: Unable to start bamboo module in Unknown on line 0
Fatal error: Unable to start bamboo module in Unknown on line 0 这个问题如何解决??是配置的问题么?
tripathy...@gmail.com, 你这个问题可能是由于你的PHP的运行权限不够,或者是你添加了crf_seg以外的parser,他默认带有的index配置文件只支持crf_seg。其他的需要自己去训练后才能增加。另外这个php的扩展似乎要求运行php的用户有足够的权限。
why i run the command: auto_build -t seg -f myfile.txt -p 2, just get the output: )Do nothing. Then the program stop there?