一个高效的中文词法分析工具包
谢谢大家支持,可以让有兴趣的人关注这个公众号。让知识传播的更加富有活力,谢谢各位读者。 很多人问博主为什么每次的头像是奥黛丽赫本,因为她是博主女神,每天看看女神也是不错的嘛!
查看之前文章请点击右上角,关注并且查看历史消息,谢谢您的阅读支持
THULAC:一个高效的中文词法分析工具包
原文链接请点击阅读原文。
目录
- 项目介绍
- 编译和安装
- 使用方式
- 代表分词软件的性能对比
- 词性解释
- THULAC模型介绍
- 获取链接
- 注意事项
- 历史
- 开源协议
- 相关论文
- 作者
项目介绍
THULAC(THU Lexical Analyzer for Chinese)是由清华大学自然语言处理实验室推出的一套中文词法分析工具包,主要包括中文分词和词性标注功能。THULAC具有如下几个特点:
- 算法新颖。该工具包使用了基于词图(word lattice)的重排序算法(re-ranking method),在分词、词性标注和重排序方面效率较高,性能较强。
- 模型强大。我们按照统一标注规范整合多个分词、词性标注语料库,得到一份1500万字的分词、词性标注语料库(大小约300M)用于模型训练,模型标注能力强大。
- 准确率高。该工具包在标准数据集Chinese Treebank(CTB5)上分词的F1值可达97.3%,词性标注的F1值可达到92.9%,与该数据集上最好方法效果相当。
- 速度较快。该工具包的分词和词性标注速度为300KB/s,每秒可处理约15万字。仅进行分词速度可达到1.3MB/s。
编译和安装
- C++版 在当前路径下运行 make 会在当前目录下得到thulac和train_c
- java版 可直接按照分词程序命令格式运行可执行的jar包
使用方式
1.分词程序
1.1.命令格式
- C++版
- ./thulac [-t2s] [-seg_only] [-deli delimeter] [-user userword.txt] 从命令行输入输出
- ./thulac [-t2s] [-seg_only] [-deli delimeter] [-user userword.txt] outputfile 利用重定向从文本文件输入输出(注意均为UTF8文本)
- java版
- java -jar THULAC_lite_java_run.jar [-t2s] [-seg_only] [-deli delimeter] [-user userword.txt] 从命令行输入输出
- java -jar THULAC_lite_java_run.jar [-t2s] [-seg_only] [-deli delimeter] [-user userword.txt] -input input_file -output output_file 从文本文件输入输出(注意均为UTF8文本)
1.2.通用参数
-t2s 将句子从繁体转化为简体
-seg_only 只进行分词,不进行词性标注
-deli delimeter 设置词与词性间的分隔符,默认为下划线_
-filter 使用过滤器去除一些没有意义的词语,例如“可以”。
-user userword.txt 设置用户词典,用户词典中的词会被打上uw标签。词典中每一个词一行,UTF8编码
-model_dir dir 设置模型文件所在文件夹,默认为models/
1.3.Java版特有的参数
-input input_file 设置从文件读入,默认为命令行输入
-output output_file 设置输出到文件中,默认为命令行输出
2.模型训练程序
模型训练程序train_c是THULAC分词模型的训练程序,用户可以使用train_c训练获得THULAC的分词模型。
2.1.命令格式
./train_c [-s separator] [-b bigram_threshold] [-i iteration] training_filename model_filename
使用training_filename为训练集,训练出来的模型名字为model_filename
2.2.参数意义
-s 设置词与词性间的分隔符,默认为斜线/
-b 设置二字串的阀值,默认为1
-i 设置训练迭代的轮数,默认为15
2.3.训练集格式
我们使用默认的分隔符(斜线/)作为例子,训练集内容应为
我/r 爱/vm 北京/ns 天安门/ns
类似的已经进行词性标注的句子。
若要训练出只分词的模型,使用默认的分隔符(斜线/)作为例子,训练集内容应为
我/ 爱/ 北京/ 天安门/
类似的句子。
2.4.使用训练出的模型
将训练出来的模型覆盖原来models中的对应模型,之后执行分词程序即可使用训练出来的模型。
代表分词软件的性能对比
我们选择LTP-3.2.0 、ICTCLAS(2015版) 、jieba(C++版)等国内代表分词软件与THULAC做性能比较。我们选择Windows作为测试环境,根据第二届国际汉语分词测评发布的国际中文分词测评标准,对不同软件进行了速度和准确率测试。
在第二届国际汉语分词测评中,共有四家单位提供的测试语料(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 评测结果如下:
msr_test(560KB)
Algorithm |
Time |
Precision |
Recall |
F-Measure |
---|---|---|---|---|
LTP-3.2.0 |
3.21s |
0.867 |
0.896 |
0.881 |
ICTCLAS(2015版) |
0.55s |
0.869 |
0.914 |
0.891 |
jieba(C++版) |
0.26s |
0.814 |
0.809 |
0.811 |
THULAC_lite |
0.62s |
0.877 |
0.899 |
0.888 |
pku_test(510KB)
Algorithm |
Time |
Precision |
Recall |
F-Measure |
---|---|---|---|---|
LTP-3.2.0 |
3.83s |
0.960 |
0.947 |
0.953 |
ICTCLAS(2015版) |
0.53s |
0.939 |
0.944 |
0.941 |
jieba(C++版) |
0.23s |
0.850 |
0.784 |
0.816 |
THULAC_lite |
0.51s |
0.944 |
0.908 |
0.926 |
除了以上在标准测试集上的评测,我们也对各个分词工具在大数据上的速度进行了评测,结果如下:
CNKI_journal.txt(51 MB)
Algorithm |
Time |
Speed |
---|---|---|
LTP-3.2.0 |
348.624s |
149.80KB/s |
ICTCLAS(2015版) |
106.461s |
490.59KB/s |
jieba(C++版) |
22.558s |
2314.89KB/s |
THULAC_lite |
42.625s |
1221.05KB/s |
词性解释
a/形容词 c/连词 d/副词 e/语气词 f/方位词 g/助词
h/前接成分 id/习语 j/简称 k/后接成分 l/处所词
m/数词 mq/数量词 n/名词 ni/机构名 np/人名
ns/地名 nz/其它专名 o/拟声词 p/介词 q/量词
r/代词 t/时间词 u/助词 v/动词 w/标点 x/其它
THULAC模型介绍
- 我们随THULAC源代码附带了简单的分词模型Model_1,仅支持分词功能。该模型由北京大学人民日报分词语料库训练得到(数据大小约56M,原始分词语料请联系北京大学计算语言学研究所授权获取)。
- 我们随THULAC源代码附带了分词和词性标注联合模型Model_2,支持同时分词和词性标注功能。该模型由多个分词语料库训练数据联合训练得到(大小约300M)。
- 我们还提供更复杂、完善和精确的分词和词性标注联合模型Model_3和分词词表。由于模型较大,如有机构或个人需要,请填写“doc/资源申请表.doc”,并发送至 thunlp@gmail.com ,通过审核后我们会将相关资源发送给联系人。
获取链接
Source |
Description |
Size |
Date |
---|---|---|---|
THULAC_lite |
THULAC_lite分词源代码(C++版) |
799KB |
2016-01-10 |
THULAC_lite分词源代码(java版) |
588KB |
2016-01-20 |
|
THULAC_lite分词java版可执行的jar包 |
55KB |
2016-01-20 |
|
THULAC模型,包括分词模型和词性标注模型 |
58.2MB |
2016-01-10 |
|
THULAC_pro_c++_v1.zip |
THULAC模型,包括更复杂完善的分词和词性标注模型以及分词词表 |
162MB |
2016-01-10 |
注意事项
该工具目前仅处理UTF8编码中文文本,之后会逐渐增加支持其他编码的功能,敬请期待。
历史
更新时间 |
更新内容 |
---|---|
2016-01-20 |
增加THULAC分词Java版本。 |
2016-01-10 |
开源THULAC分词工具C++版本。 |
开源协议
- THULAC面向国内外大学、研究所、企业以及个人研究者免费开放源。
- 如有机构或个人拟将THULAC用于商业目的,请发邮件至thunlp@gmail.com洽谈技术许可协议。
- 欢迎对该工具包的任何宝贵意见和建议,请发邮件至thunlp@gmail.com。
- 如果您在THULAC基础上发表论文或取得科研成果,请您在发表论文和申报成果时声明“使用了清华大学THULAC”,并按如下格式引用:
- 中文: 陈新雄, 张开旭, 郭志芃, 刘知远, 孙茂松. THULAC:一个高效的中文词法分析工具包. 2016.
- 英文: Xinxiong Chen, Kaixu Zhang, Zhipeng Guo, Zhiyuan Liu, Maosong Sun. THULAC: An Efficient Lexical Analyzer for Chinese. 2016.
量化投资与机器学习
知识、能力、深度、专业
勤奋、天赋、耐得住寂寞
- 开发人员看测试之细说JBehave
- 智能合约中存在的3种最常见的误解
- O'ReillyAI系列:将学习速率可视化来优化神经网络
- 再下一城,腾讯黑科技介入新零售
- 微信团队广发内部体验邀请,小程序将大火!
- 胖虎科技获1亿元融资 域名“我爱胖虎”创意十足!
- 高挺:区块链在金融领域的三个应用方向
- 条码支付迎来分级限额制 支付宝、微信纷纷响应
- 关键基础设施威胁预警,HDD声波攻击可致蓝屏
- 集成学习之随机森林通俗理解
- 深度学习CNN眼中的图片是什么样的
- 第七节 关联映射之多对多
- 词向量fasttext,CNN is All,强化学习,自回归生成模型,可视化神经网络损失函数
- 比特币开始执行比特币支付协议发票减少钱包的支持
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法