THULAC(THU Lexical Analyzer for Chinese)由清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包,具有中文分词和词性标注功能。THULAC具有如下几个特点:
能力强。利用我们集成的目前世界上规模最大的人工分词和词性标注中文语料库(约含5800万字)训练而成,模型标注能力强大。
准确率高。该工具包在标准数据集Chinese Treebank(CTB5)上分词的F1值可达97.3%,词性标注的F1值可达到92.9%,与该数据集上最好方法效果相当。
速度较快。同时进行分词和词性标注速度为300KB/s,每秒可处理约15万字。只进行分词速度可达到1.3MB/s。
THULAC在线演示平台thulac.thunlp.org/demo
编译和安装
可直接按照分词程序命令格式运行可执行的jar包
自行编译需要安装Gradle, 然后在项目根目录执行gradle build, 生成文件在build/libs下
(thulac需要模型的支持,需要将下载的模型放到当前目录下)
3.Python版(兼容python2.x和python3.x)
使用方法
通过python程序import thulac,新建thulac.thulac(args)类,其中args为程序的参数。之后可以通过调用thulac.cut()进行单句分词。
具体接口参数可查看python版接口参数(http://thulac.thunlp.org/#jiekou)代码示例
t2s------------------将句子从繁体转化为简体
seg_only-------------只进行分词,不进行词性标注
deli delimeter-------设置词与词性间的分隔符,默认为下划线_
filter---------------使用过滤器去除一些没有意义的词语,例如“可以”
user userword.txt----设置用户词典,用户词典中的词会被打上uw标签。词典中每一个词一行,UTF8编码(python版暂无)
model_dir dir--------设置模型文件所在文件夹,默认为models/
user_path------------设置用户词典,用户词典中的词会被打上uw标签。词典中每一个词一行,UTF8编码
t2s------------------默认False, 是否将句子从繁体转化为简体
just_seg-------------默认False, 时候只进行分词,不进行词性标注
ufilter--------------默认False, 是否使用过滤器去除一些没有意义的词语,例如“可以”
model_path-----------设置模型文件所在文件夹,默认为models/
separator------------默认为‘_’, 设置词与词性之间的分隔符
1.5.C++版接口参数(需include "include/thulac.h")
首先需要实例化THULAC类,然后可以调用以下接口:
int init(const char* model_path = NULL, const char* user_path = NULL, int just_seg = 0, int t2s = 0, int ufilter = 0, char separator = '_');
user_path------------设置用户词典,用户词典中的词会被打上uw标签。词典中每一个词一行,UTF8编码
t2s------------------默认False, 是否将句子从繁体转化为简体
just_seg-------------默认False, 时候只进行分词,不进行词性标注
ufilter--------------默认False, 是否使用过滤器去除一些没有意义的词语,例如“可以”。
model_path-----------设置模型文件所在文件夹,默认为models/
separator------------默认为‘_’, 设置词与词性之间的分隔符
2.模型训练程序
THULAC工具包提供模型训练程序train_c,用户可以使用train_c训练获得THULAC的所需的模型。
-s 设置词与词性间的分隔符,默认为斜线/
-b 设置二字串的阈值,默认为1
-i 设置训练迭代的轮数,默认为15
我们使用默认的分隔符(斜线/)作为例子,训练集内容应为
若要训练出只分词的模型,使用默认的分隔符(斜线/)作为例子,训练集内容应为
将训练出来的模型覆盖原来models中的对应模型,之后执行分词程序即可使用训练出来的模型。
与代表性分词软件的性能对比
我们选择LTP-3.2.0 、ICTCLAS(2015版) 、jieba(C++版)等国内具代表性的分词软件与THULAC做性能比较。我们选择Windows作为测试环境,根据第二届国际汉语分词测评(The Second International Chinese Word Segmentation Bakeoff)发布的国际中文分词测评标准,对不同软件进行了速度和准确率测试。
在第二届国际汉语分词测评中,共有四家单位提供的测试语料(Academia Sinica、 City University 、Peking University 、Microsoft Research), 在评测提供的资源icwb2-data中包含了来自这四家单位的训练集(training)、测试集(testing), 以及根据各自分词标准而提供的相应测试集的标准答案(icwb2-data/scripts/gold).在icwb2-data/scripts目录下含有对分词进行自动评分的perl脚本score。
我们在统一测试环境下,对上述流行分词软件和THULAC进行了测试,使用的模型为各分词软件自带模型。THULAC使用的是随软件提供的简单模型Model_1。评测环境为 Intel Core i5 2.4 GHz 评测结果如下:
除了以上在标准测试集上的评测,我们也对各个分词工具在大数据上的速度进行了评测,结果如下:
词性标记集
为了方便在分词和词性标注后的过滤,在v1_2版本,我们增加了两种词性,如果需要可以下载使用。
THULAC的不同配置
我们随THULAC源代码附带了简单的分词模型Model_1,仅支持分词功能。该模型由人民日报分词语料库训练得到。
我们随THULAC源代码附带了分词和词性标注联合模型Model_2,支持同时分词和词性标注功能。该模型由人民日报分词和词性标注语料库训练得到。
我们还提供更复杂、完善和精确的分词和词性标注联合模型Model_3和分词词表。该模型是由多语料联合训练训练得到(语料包括来自多文体的标注文本和人民日报标注文本等)。由于模型较大,如有机构或个人需要,请填写“资源申请表.doc”(http://thulac.thunlp.org/source/shenqingbiao.docx),并发送至 thunlp@gmail.com ,通过审核后我们会将相关资源发送给联系人。
开源协议
THULAC面向国内外大学、研究所、企业以及个人用于研究目的免费开放源代码。
如有机构或个人拟将THULAC用于商业目的,请发邮件至thunlp@gmail.com洽谈技术许可协议。
欢迎对该工具包提出任何宝贵意见和建议。请发邮件至thunlp@gmail.com。
如果您在THULAC基础上发表论文或取得科研成果,请您在发表论文和申报成果时声明“使用了清华大学THULAC”,并按如下格式引用:
中文: 孙茂松, 陈新雄, 张开旭, 郭志芃, 刘知远. THULAC:一个高效的中文词法分析工具包. 2016.
英文: Maosong Sun, Xinxiong Chen, Kaixu Zhang, Zhipeng Guo, Zhiyuan Liu. THULAC: An Efficient Lexical Analyzer for Chinese. 2016.
指导老师
开发团队
陈新雄,清华大学计算机系博士生
张开旭,清华大学计算机系硕士生
郭志芃,清华大学计算机系硕士生
马骏骅,访问学生
相关论文
Zhongguo Li, Maosong Sun. Punctuation as Implicit Annotations for Chinese Word Segmentation. Computational Linguistics, vol. 35, no. 4, pp. 505-512, 2009.