THULAC:清华大学的中文词法分析利器
THULAC:清华大学的中文词法分析利器
thunlp/THULAC 在 GitHub 上拿到了 832 Star。
清华大学自然语言处理实验室搞的这个工具包,功能很聚焦:中文分词和词性标注。背后是一套 5800 万字的人工标注语料库,在标准数据集上分词 F1 值 97.3%,词性标注 F1 值 92.9%。

1、 它干了什么
两件事:把中文句子切分成词,然后给每个词打上词性标签。
比如"我爱北京天安门"扔进去,出来就是"我/r 爱/vm 北京/ns 天安门/ns"。r 是代词,vm 是能愿动词,ns 是地名。分词和标注一步完成,不需要分两趟跑。
速度也不慢。分词加词性标注同开,跑满 300KB/s,每秒处理约 15 万字。只做分词的话能到 1.3MB/s。对大部分应用场景来说够用了。
2、 为什么值得看一眼
NLP 领域做中文分词的工具有不少:结巴分词、LTP、ICTCLAS,各有各的用法。THULAC 在两个地方做得比较扎实。
第一是准确率。CTB5 标准数据集上分词 F1 值 97.3%,词性标注 F1 值 92.9%。跟这个数据集上的最好方法同一水平线。
第二是语料底子。训练语料约 5800 万字,目前公开可查的规模最大的人工标注中文语料库之一。模型能力是从这块料上长出来的,不是小样本调出来的。
模型有三个版本。Model_1 只做分词,由人民日报语料训练。Model_2 分词加词性标注,同样基于人民日报语料。Model_3 精度更高,由多文体标注文本联合训练,但体积较大,需要单独申请。

3、 跟其他工具比怎么样
官方用第二届国际汉语分词测评的标准做了一次横向对比。测试环境 Windows,CPU 是 i5 2.4GHz。
在小文件 pku_test(510KB)上,THULAC 耗时 0.51 秒,准确率 0.944,召回率 0.908。跟 LTP 的准确率 0.960 差了一点,比 ICTCLAS 的 0.939 和结巴的 0.850 要好。
大文件场景差异更明显。一个 51MB 的期刊文本跑下来,THULAC 用了 42.6 秒,速度 1221KB/s。同一文件 ICTCLAS 跑了 106 秒(490KB/s),LTP 跑了 348 秒(150KB/s)。结巴最快,22.6 秒(2315KB/s),但它的准确率和召回率都更低。
THULAC 在速度和准确率之间取了一个不错的平衡点。综合来看,没有明显短板。
4、 怎么上手
C++ 版本是主力。clone 下来 make 一下就搞定:
make
./thulac -input test.txt -output result.txt
只要分词不要词性标注,加个参数:
./thulac -seg_only -input test.txt -output result.txt
繁体转简体、自定义分隔符、加载用户词典这些都有对应参数支持。
代码里调用也很直接。引入 thulac.h,实例化 THULAC 类,调 cut() 方法,结果是一个 vector<pair<词, 词性>>。多线程场景用 multiTreadCut(),传个线程数进去就行。
想训练自己的模型,train_c 程序吃进标注好的语料(格式:词/词性 词/词性),吐出模型文件,覆盖掉 models 目录里的默认模型就能用。Java 版和 Python 版也有独立仓库,SO 版供动态链接调用。
分词模型需要单独下载,去 thulac.thunlp.org 填信息获取。
5、 适合谁用
做中文 NLP 的研究人员。需要分词和词性标注作为下游任务输入的工程项目。学校里做中文文本处理的同学。
协议上研究用途免费,商用需要联系实验室谈授权。论文里用了 THULAC 的话,引用孙茂松老师 2016 年的那篇论文就行。
。
协议上研究用途免费,商用需要联系实验室谈授权。论文里用了 THULAC 的话,引用孙茂松老师 2016 年的那篇论文就行。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)