|
|
51CTO旗下网站
|
|
移动端

北大开源全新中文分词工具包:准确率远超THULAC、结巴分词

最近,北大开源了一个中文分词工具包,它在多个分词数据集上都有非常高的分词准确率。其中广泛使用的结巴分词误差率高达 18.55% 和 20.42,而北大的 pkuseg 只有 3.25% 与 4.32%。

作者:罗睿轩、许晶晶、孙栩来源:机器之心|2019-01-10 14:49

【大咖·来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》

最近,北大开源了一个中文分词工具包,它在多个分词数据集上都有非常高的分词准确率。其中广泛使用的结巴分词误差率高达 18.55% 和 20.42,而北大的 pkuseg 只有 3.25% 与 4.32%。

pkuseg 是由北京大学语言计算与机器学习研究组研制推出的一套全新的中文分词工具包。它简单易用,支持多领域分词,在不同领域的数据上都大幅提高了分词的准确率。

  • 项目地址:https://github.com/lancopku/PKUSeg-python

pkuseg 具有如下几个特点:

  • 高分词准确率:相比于其他的分词工具包,该工具包在不同领域的数据上都大幅提高了分词的准确度。根据北大研究组的测试结果,pkuseg 分别在示例数据集(MSRA 和 CTB8)上降低了 79.33% 和 63.67% 的分词错误率。

  • 多领域分词:研究组训练了多种不同领域的分词模型。根据待分词的领域特点,用户可以自由地选择不同的模型。

  • 支持用户自训练模型:支持用户使用全新的标注数据进行训练。

此外,作者们还选择 THULAC、结巴分词等国内代表分词工具包与 pkuseg 做性能比较。他们选择 Linux 作为测试环境,在新闻数据(MSRA)和混合型文本(CTB8)数据上对不同工具包进行了准确率测试。此外,测试使用的是第二届国际汉语分词评测比赛提供的分词评价脚本。评测结果如下:

我们可以看到,最广泛使用的结巴分词准确率***,清华构建的 THULAC 分词准确率也没有它高。当然,pkuseg 是在这些数据集上训练的,因此它在这些任务上的准确率也会更高一些。

预训练模型

分词模式下,用户需要加载预训练好的模型。研究组提供了三种在不同类型数据上训练得到的模型,根据具体需要,用户可以选择不同的预训练模型。以下是对预训练模型的说明:

  • MSRA:在 MSRA(新闻语料)上训练的模型。新版本代码采用的是此模型。

  • CTB8:在 CTB8(新闻文本及网络文本的混合型语料)上训练的模型。

  • WEIBO:在微博(网络文本语料)上训练的模型。

其中,MSRA 数据由第二届国际汉语分词评测比赛提供,CTB8 数据由 LDC 提供,WEIBO 数据由 NLPCC 分词比赛提供。在 GitHub 项目中,这三个预训练模型都提供了下载地址。

安装与使用

pkuseg 的安装非常简单,我们可以使用 pip 安装,也可以直接从 GitHub 下载:

  1. pip install pkuseg 

使用 pkuseg 实现分词也很简单,基本上和其它分词库的用法都差不多:

  1. '''代码示例1: 使用默认模型及默认词典分词''' 
  2. import pkuseg 
  3.  
  4. #以默认配置加载模型 
  5. seg = pkuseg.pkuseg() 
  6. #进行分词 
  7. text = seg.cut('我爱北京天安门'
  8. print(text) 
  9.  
  10. '''代码示例2: 设置用户自定义词典''' 
  11. import pkuseg 
  12.  
  13. #希望分词时用户词典中的词固定不分开 
  14. lexicon = ['北京大学''北京天安门'
  15. #加载模型,给定用户词典 
  16. seg = pkuseg.pkuseg(user_dict=lexicon) 
  17. text = seg.cut('我爱北京天安门'
  18. print(text) 
  19.  
  20. '''代码示例3''' 
  21. import pkuseg 
  22.  
  23. #假设用户已经下载好了ctb8的模型并放在了'./ctb8'目录下,通过设置model_name加载该模型 
  24. seg = pkuseg.pkuseg(model_name='./ctb8'
  25. text = seg.cut('我爱北京天安门'
  26. print(text) 

对于大型文本数据集,如果需要快速分词的话,我们也可以采用多线程的方式:

  1. '''代码示例4''' 
  2. import pkuseg 
  3. #对input.txt的文件分词输出到output.txt中,使用默认模型和词典,开20个进程 
  4. pkuseg.test('input.txt''output.txt', nthread=20

***,pkuseg 还能重新训练一个分词模型:

  1. '''代码示例5''' 
  2. import pkuseg 
  3.  
  4. #训练文件为'msr_training.utf8',测试文件为'msr_test_gold.utf8',模型存到'./models'目录下,开20个进程训练模型 
  5. pkuseg.train('msr_training.utf8''msr_test_gold.utf8''./models', nthread=20

这些都是 GitHub 上的示例,详细的内容请参考 GitHub 项目,例如参数说明和参考论文等。

【编辑推荐】

  1. 2018年最富含金量的6款开源机器学习项目
  2. 量子计算如何成为AI的“兄弟技术”?
  3. 国家科学技术"大奖"刷屏,一个就值1.5万亿元!这些市场也沸腾了
  4. 揭秘华为“小白宫”:“吓人的技术”诞生的地方
  5. 开源显卡驱动 Nouveau 被 Chrome 列入黑名单
【责任编辑:张燕妮 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

16招轻松掌握PPT技巧

16招轻松掌握PPT技巧

GET职场加薪技能
共16章 | 晒书包

289人订阅学习

20个局域网建设改造案例

20个局域网建设改造案例

网络搭建技巧
共20章 | 捷哥CCIE

645人订阅学习

WOT2019全球人工智能技术峰会

WOT2019全球人工智能技术峰会

通用技术、应用领域、企业赋能三大章节,13大技术专场,60+国内外一线人工智能精英大咖站台,分享人工智能的平台工具、算法模型、语音视觉等技术主题,助力人工智能落地。
共50章 | WOT峰会

0人订阅学习

读 书 +更多

网管员必读——网络基础(第2版)

本书是在《网管员必读—网络基础》(第1版)基础上修改而成的。全书共分9章,分别介绍计算机网络概述(修改)、数制(新增)、网络通信基础...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客