一个高效的中文词法分析工具包

谢谢大家支持,可以让有兴趣的人关注这个公众号。让知识传播的更加富有活力,谢谢各位读者。 很多人问博主为什么每次的头像是奥黛丽赫本,因为她是博主女神,每天看看女神也是不错的嘛!

查看之前文章请点击右上角,关注并且查看历史消息,谢谢您的阅读支持

THULAC:一个高效的中文词法分析工具包

原文链接请点击阅读原文。

目录

  • 项目介绍
  • 编译和安装
  • 使用方式
  • 代表分词软件的性能对比
  • 词性解释
  • THULAC模型介绍
  • 获取链接
  • 注意事项
  • 历史
  • 开源协议
  • 相关论文
  • 作者

项目介绍

THULAC(THU Lexical Analyzer for Chinese)是由清华大学自然语言处理实验室推出的一套中文词法分析工具包,主要包括中文分词和词性标注功能。THULAC具有如下几个特点:

  1. 算法新颖。该工具包使用了基于词图(word lattice)的重排序算法(re-ranking method),在分词、词性标注和重排序方面效率较高,性能较强。
  2. 模型强大。我们按照统一标注规范整合多个分词、词性标注语料库,得到一份1500万字的分词、词性标注语料库(大小约300M)用于模型训练,模型标注能力强大。
  3. 准确率高。该工具包在标准数据集Chinese Treebank(CTB5)上分词的F1值可达97.3%,词性标注的F1值可达到92.9%,与该数据集上最好方法效果相当。
  4. 速度较快。该工具包的分词和词性标注速度为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模型介绍

  1. 我们随THULAC源代码附带了简单的分词模型Model_1,仅支持分词功能。该模型由北京大学人民日报分词语料库训练得到(数据大小约56M,原始分词语料请联系北京大学计算语言学研究所授权获取)。
  2. 我们随THULAC源代码附带了分词和词性标注联合模型Model_2,支持同时分词和词性标注功能。该模型由多个分词语料库训练数据联合训练得到(大小约300M)。
  3. 我们还提供更复杂、完善和精确的分词和词性标注联合模型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++版本。

开源协议

  1. THULAC面向国内外大学、研究所、企业以及个人研究者免费开放源。
  2. 如有机构或个人拟将THULAC用于商业目的,请发邮件至thunlp@gmail.com洽谈技术许可协议。
  3. 欢迎对该工具包的任何宝贵意见和建议,请发邮件至thunlp@gmail.com。
  4. 如果您在THULAC基础上发表论文或取得科研成果,请您在发表论文和申报成果时声明“使用了清华大学THULAC”,并按如下格式引用:
    • 中文: 陈新雄, 张开旭, 郭志芃, 刘知远, 孙茂松. THULAC:一个高效的中文词法分析工具包. 2016.
    • 英文: Xinxiong Chen, Kaixu Zhang, Zhipeng Guo, Zhiyuan Liu, Maosong Sun. THULAC: An Efficient Lexical Analyzer for Chinese. 2016.

量化投资与机器学习

知识、能力、深度、专业

勤奋、天赋、耐得住寂寞

原文发布于微信公众号 - 量化投资与机器学习(ZXL_LHTZ_JQXX)

原文发表时间:2016-01-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PPV课数据科学社区

Python NLP入门教程

本文简要介绍Python自然语言处理(NLP),使用Python的NLTK库。NLTK是Python的自然语言处理工具包,在NLP领域中,最常使用的一个Pyth...

3997
来自专栏hanlp学习笔记

NLP学习------HanLP使用实验

在之前的实验中得到了不在词向量里的词与分词结果,结果有500多个词不在词向量里,解决方案就是重新分词,或再追加训练这些词到词向量里。但后者相对麻烦且目前样本量不...

1960
来自专栏QQ音乐技术团队的专栏

蓝牙协议中的SBC编码

一、从信息的传输说起 ? 上图是一个典型的蓝牙耳机应用场景。手机上的音频信息经过编码以后通过蓝牙协议被蓝牙耳机接收,经过解码以后,蓝牙耳机成功获取手机上的音频...

50710
来自专栏LET

为什么需要纹理压缩?

2788
来自专栏木子昭的博客

泰坦尼克乘客存活状况(决策树案例)

1912年4月15日凌晨2点20分,“永不沉没”的“泰坦尼克”走完了它短暂的航程,缓缓沉入大西洋这座安静冰冷的坟墓。 ? 欢迎你们说我幼稚荒诞,也欢迎你...

36712
来自专栏量子位

众筹项目能否成功?用机器学习预测可以早知道

安妮 编译自 Shrikar Archak 量子位出品 | 公众号 QbitAI Kickstarter是一家美国的众筹平台。自2009年成立至今,已经有36万...

3755
来自专栏阮一峰的网络日志

巧用Photoshop进行科学研究

Photoshop CS3 Extended是一个强大的软件。你可以用它,让你的报名照变得漂亮一些,然后上传到社交网站上;你也可以将一个名人的脑袋,移植到一张裸...

1912
来自专栏企鹅号快讯

R实战——大众点评-汉拿山评论情感浅析

有实际的需求才有行动的动力,因为一个朋友开了一家烤肉店,在大众点评上线了团购套餐,遭遇了几次中差评,朋友第一次接触这个,也不知道怎么回复和处理,于是向我寻求帮助...

2979
来自专栏DHUtoBUAA

基于电子海图的水面无人艇全局路径规划

  该论文已经在ICMIR2017会议上发表,附上springer的文献地址 Research and Implementation of Global Pat...

3145
来自专栏GIS讲堂

“GIS讲堂”第十课—WEBGIS中的地图图例

图例是集中于地图一角或一侧的地图上各种符号和颜色所代表内容与指标的说明,有助于更好的认识地图。它具有双重任务,在编图时作为图解表示地图内容的准绳,用图时作为必不...

1731

扫码关注云+社区

领取腾讯云代金券