My favorites | Sign in
Project Home Downloads Wiki Issues Source
Search
for
GettingStarted  
从这里开始!
Featured
Updated Dec 9, 2010 by qingyang...@qunar.com

Bamboo项目介绍

  1. Bamboo项目是一个基于机器学习技术的中文自然语言处理平台。
  2. Bamboo项目的主要目标:
    • 中文分词
    • 词性标注
    • 命名实体识别
    • 主题词抽取

Bamboo安装部署

方法一: 安装打过包的最新稳定版

  1. 下载源代码
  2. 安装CRF++工具包
  3. 安装CMake编译环境
    • Slackware 默认自带CMake
    • Ubuntu & Debian 系统使用: apt-get install cmake
    • archlinux系统: 使用pacman -S cmake
    • 其他Linux/Unix系统,请去CMake官方下载源代码编译。地址是:http://www.cmake.org
    • 注:cmake需要2.6版本以上
  4. 使用CMake编译Bamboo
  5. cd bamboo
    mkdir build
    cd build
    cmake .. -DCMAKE_BUILD_TYPE=release
    make all
  6. 安装Bamboo到/opt/bamboo目录
  7. make install
  8. 编译Bamboo PHP扩展
  9. cd /opt/bamboo/exts/php
    phpize
    make
  10. 安装Bamboo PHP扩展
  11. make install
  1. 安装后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的最新源码

  1. 从google code的subversion导出最新的bamboo trunk源码:

Bamboo配置

  1. Bamboo安装完成后,其默认的配置文件都在/opt/bamboo/etc/目录下,每个Bamboo Parser都有自己的配置文件
  2. Bamboo配置方法可以参见Bamboo Configure Guide,建议初次使用者保留参数不变;对于对程序内部流程相对了解的高级用户,可以根据需要对参数进行调整
  3. 在php.ini配置文件中添加如下2行:
    • extension = bamboo.so
    • bamboo.parsers = crf_seg,crf_pos,crf_ner_ns, keyword

Bamboo训练统计

  1. Bamboo中的分词,词性标注和命名实体识别算法都是基于由字构词的文本标注思想,因此在使用Bamboo之前需要准备好已完成标注的的文本语料,然后使用CRF++工具包和相应的特征模板进行训练,最终得出各自的字典,统计信息和模型文件
  2. Bamboo中的主题词抽取是在TF和IDF的基础上,用词句关系图分析的算法计算所有分词的权重,最终给出Top权重词,因此在使用Bamboo的主题词抽取前也需要收集一定规模的文本语料,对其中的分词进行统计和训练,得出各种词的IDF和同现关系,以供抽取时计算使用。
  3. Bamboo训练工具:
  4. /opt/bamboo/bin/auto_build -t [train_type] -f [train_file.txt] -d [train_dir] -p [thread_number]
  5. auto_build的训练参数:
    • -t 选项指定了训练的类型,即是分词、词性、实体词还是主题词的训练
    • -f 选项指定了训练语料的路径,缺省会自动下载98年人民日报1月份的文章作为语料
    • -d 选项指定了训练语料的目录,该目录下的.txt文本文件会被当做主题词抽取的语料
    • -p 选项指定了CRF++训练的线程数量,推荐和cpu数量一致
  6. auto_build的配置文件是/opt/bamboo/etc/build_settings,默认训练完成后,会在/opt/bamboo/下产生2个新目录:data/和index/
    • data目录中存放了文本格式的语料和字典文件
    • index目录中存放了二进制格式的训练model和字典trie树文件
  7. 除了缺省字典,Bamboo还为用户提供了自定义字典的工具lexicon,其具体方法请参考Bamboo Tools,用户可以使用lexicon定制自己的user_combine和break辞典,其功能如下所示:
    • 次 贷 => 次贷
    • 雅虎口碑 => 雅虎 口碑

在代码树中训练模型

在svn co出来的代码树里面,我们可以直接用下面命令训练模型(在代码树根目录下):

./source/tools/auto_build -t seg

生成的字典文件会在代码树根目录下的 index 目录里。

Bamboo测试

  1. Bamboo命令行接口:
  2. /opt/bamboo/bin/bamboo -p [bamboo_parser] -c [bamboo_cfg]
  3. -p 选项的取值可以是crf_seg, crf_pos, crf_ner_nr, crf_ner_ns, crf_ner_nt, keyword,分别对应相应的Bamboo Parser
  4. -c 选项可以指定配置文件的路径,缺省会用/opt/bamboo/etc/目录下默认的配置文件
  5. Bamboo命令从标准输入接收文本,并根据不同的Parser选项输出相应的结果,例如:分词,词性,地名,主题词等
Comment by mft...@gmail.com, Apr 27, 2009

安装的ext目录下竟然还有.svn目录……

Comment by mamimoluo, Jan 22, 2010

很好! 稳定版:nlpbamboo-1.1.1/source/bamboo.cxx缺少stdio.h文件,导致编译时候出现snprintf错误。

svn里面同样的问题,外加缺少tools/的build_setting

Comment by project member laserhe...@gmail.com, Mar 19, 2010

snprintf的错在当前版本应该已经fix掉了。

Comment by fenghlkevin@gmail.com, Jul 8, 2010

以下是执行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

Comment by fenghlkevin@gmail.com, Jul 8, 2010

我使用原代码编译 还需要按照CRF++吗? 邮件联系一下啊 fenghlkevin@gmail.com

Comment by lakersg...@gmail.com, Aug 18, 2010

我有许多问题想要询问,贵方的google Group讨论组好像也取消了,请问我可以询问哪个Email呢? 我的Email: nobody.01@m2k.com.tw 邮件联系一下好吗?

Comment by project member qingyang...@qunar.com, Nov 15, 2010

回答fenghlkevin的问题: Bamboo需要crf++库,所以必须先安装CRF++。

Comment by project member qingyang...@qunar.com, Nov 15, 2010

最新的稳定版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目录

Comment by tripathy...@gmail.com, Nov 5, 2011

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

Comment by danceb...@gmail.com, Nov 19, 2011

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 这个问题如何解决??是配置的问题么?

Comment by danceb...@gmail.com, Nov 21, 2011

tripathy...@gmail.com, 你这个问题可能是由于你的PHP的运行权限不够,或者是你添加了crf_seg以外的parser,他默认带有的index配置文件只支持crf_seg。其他的需要自己去训练后才能增加。另外这个php的扩展似乎要求运行php的用户有足够的权限。

Comment by fangweiw...@gmail.com, Dec 21, 2011

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?


Sign in to add a comment
Powered by Google Project Hosting