NLP(十三)中文分词工具的使用尝试
本文将对三种中文分词工具进行使用尝试,这三种工具分别为哈工大的LTP,结巴分词以及北大的pkuseg。
首先我们先准备好环境,即需要安装三个模块:pyltp, jieba, pkuseg以及LTP的分词模型文件cws.model。在用户字典中添加以下5个词语:
经
少安
贺凤英
F-35战斗机
埃达尔·阿勒坎
测试的Python代码如下:
# -*- coding: utf-8 -*-
import os
import jieba
import pkuseg
from pyltp import Segmentor
lexicon = ['经', '少安', '贺凤英', 'F-35战斗机', '埃达尔·阿勒坎'] # 自定义词典
# 哈工大LTP分词
def ltp_segment(sent):
# 加载文件
cws_model_path = os.path.join('data/cws.model') # 分词模型路径,模型名称为`cws.model`
lexicon_path = os.path.join('data/lexicon.txt') # 参数lexicon是自定义词典的文件路径
segmentor = Segmentor()
segmentor.load_with_lexicon(cws_model_path, lexicon_path)
words = list(segmentor.segment(sent))
segmentor.release()
return words
# 结巴分词
def jieba_cut(sent):
for word in lexicon:
jieba.add_word(word)
return list(jieba.cut(sent))
# pkuseg分词
def pkuseg_cut(sent):
seg = pkuseg.pkuseg(user_dict=lexicon)
words = seg.cut(sent)
return words
sent = '尽管玉亭成家以后,他老婆贺凤英那些年把少安妈欺负上一回又一回,怕老婆的玉亭连一声也不敢吭,但少安他妈不计较他。'
#sent = '据此前报道,以色列于去年5月成为世界上第一个在实战中使用F-35战斗机的国家。'
#sent = '小船4月8日经长江前往小鸟岛。'
#sent = '1958年,埃达尔·阿勒坎出生在土耳其首都安卡拉,但他的求学生涯多在美国度过。'
print('ltp:', ltp_segment(sent))
print('jieba:', jieba_cut(sent))
print('pkuseg:', pkuseg_cut(sent))
&emsp 对于第一句话,输出结果如下:
原文: 尽管玉亭成家以后,他老婆贺凤英那些年把少安妈欺负上一回又一回,怕老婆的玉亭连一声也不敢吭,但少安他妈不计较他。
ltp: ['尽管', '玉亭', '成家', '以后', ',', '他', '老婆', '贺凤英', '那些', '年', '把', '少安', '妈', '欺负', '上', '一', '回', '又', '一', '回', ',', '怕', '老婆', '的', '玉亭', '连', '一', '声', '也', '不', '敢', '吭', ',', '但', '少安', '他妈', '不', '计较', '他', '。']
jieba: ['尽管', '玉亭', '成家', '以后', ',', '他', '老婆', '贺凤英', '那些', '年', '把', '少安', '妈', '欺负', '上', '一回', '又', '一回', ',', '怕老婆', '的', '玉亭', '连', '一声', '也', '不敢', '吭', ',', '但少安', '他妈', '不', '计较', '他', '。']
pkuseg: ['尽管', '玉亭', '成家', '以后', ',', '他', '老婆', '贺凤英', '那些', '年', '把', '少安', '妈', '欺负', '上', '一', '回', '又', '一', '回', ',', '怕', '老婆', '的', '玉亭', '连', '一', '声', '也', '不', '敢', '吭', ',', '但', '少安', '他妈', '不', '计较', '他', '。']
对于第二句话,输出结果如下:
原文: 据此前报道,以色列于去年5月成为世界上第一个在实战中使用F-35战斗机的国家。
ltp: ['据', '此前', '报道', ',', '以色列', '于', '去年', '5月', '成为', '世界', '上', '第一', '个', '在', '实战', '中', '使用', 'F-35', '战斗机', '的', '国家', '。']
jieba: ['据此', '前', '报道', ',', '以色列', '于', '去年', '5', '月', '成为', '世界', '上', '第一个', '在', '实战', '中', '使用', 'F', '-', '35', '战斗机', '的', '国家', '。']
pkuseg: ['据', '此前', '报道', ',', '以色列', '于', '去年', '5月', '成为', '世界', '上', '第一', '个', '在', '实战', '中', '使用', 'F-35战斗机', '的', '国家', '。']
对于第三句话,输出结果如下:
原文: 小船4月8日经长江前往小鸟岛。
ltp: ['小船', '4月', '8日', '经长江', '前往', '小鸟岛', '。']
jieba: ['小船', '4', '月', '8', '日经', '长江', '前往', '小', '鸟岛', '。']
pkuseg: ['小船', '4月', '8日', '经', '长江', '前往', '小鸟', '岛', '。']
对于第四句话,输出结果如下:
原文: 1958年,埃达尔·阿勒坎出生在土耳其首都安卡拉,但他的求学生涯多在美国度过。
ltp: ['1958年', ',', '埃达尔·阿勒坎', '出生', '在', '土耳其', '首都', '安卡拉', ',', '但', '他', '的', '求学', '生涯', '多', '在', '美国', '度过', '。']
jieba: ['1958', '年', ',', '埃', '达尔', '·', '阿勒', '坎', '出生', '在', '土耳其', '首都', '安卡拉', ',', '但', '他', '的', '求学', '生涯', '多', '在', '美国', '度过', '。']
pkuseg: ['1958年', ',', '埃达尔·阿勒坎', '出生', '在', '土耳其', '首都', '安卡拉', ',', '但', '他', '的', '求学', '生涯', '多', '在', '美国', '度过', '。']
接着,对以上的测试情况做一个简单的总结:
用户词典方面:LTP和pkuseg的效果都很好,jieba的表现不尽如人意,这主要是因为自定义的字典的词语里面含有标点符号,关于该问题的解决办法,可以参考网址:https://blog.csdn.net/weixin_42471956/article/details/80795534
从第二句话的效果来看,pkuseg的分词效果应该是最好的,‘经’应该作为单个的词语切分出来,而LTP和jieba即使加了自定义词典,也没有效果,同理,‘F-35战斗机’也是类似的情形。
总的来说,三者的分词效果都很优秀,差距不是很大,但在自定义词典这块,无疑pkuseg的效果更加稳定些。笔者也会在以后的分词使用中多多考虑pkuseg~
有关pkuseg的介绍与使用,可以参考网址:https://github.com/lancopku/PKUSeg-python
注意:不妨了解下笔者的微信公众号: Python爬虫与算法(微信号为:easy_web_scrape), 欢迎大家关注~
NLP(十三)中文分词工具的使用尝试的更多相关文章
- 中文分词工具探析(二):Jieba
1. 前言 Jieba是由fxsjy大神开源的一款中文分词工具,一款属于工业界的分词工具--模型易用简单.代码清晰可读,推荐有志学习NLP或Python的读一下源码.与采用分词模型Bigram + H ...
- 开源中文分词工具探析(三):Ansj
Ansj是由孙健(ansjsun)开源的一个中文分词器,为ICTLAS的Java版本,也采用了Bigram + HMM分词模型(可参考我之前写的文章):在Bigram分词的基础上,识别未登录词,以提高 ...
- 开源中文分词工具探析(五):FNLP
FNLP是由Fudan NLP实验室的邱锡鹏老师开源的一套Java写就的中文NLP工具包,提供诸如分词.词性标注.文本分类.依存句法分析等功能. [开源中文分词工具探析]系列: 中文分词工具探析(一) ...
- 开源中文分词工具探析(五):Stanford CoreNLP
CoreNLP是由斯坦福大学开源的一套Java NLP工具,提供诸如:词性标注(part-of-speech (POS) tagger).命名实体识别(named entity recognizer ...
- 开源中文分词工具探析(六):Stanford CoreNLP
CoreNLP是由斯坦福大学开源的一套Java NLP工具,提供诸如:词性标注(part-of-speech (POS) tagger).命名实体识别(named entity recognizer ...
- 基于开源中文分词工具pkuseg-python,我用张小龙的3万字演讲做了测试
做过搜索的同学都知道,分词的好坏直接决定了搜索的质量,在英文中分词比中文要简单,因为英文是一个个单词通过空格来划分每个词的,而中文都一个个句子,单独一个汉字没有任何意义,必须联系前后文字才能正确表达它 ...
- 中文分词工具简介与安装教程(jieba、nlpir、hanlp、pkuseg、foolnltk、snownlp、thulac)
2.1 jieba 2.1.1 jieba简介 Jieba中文含义结巴,jieba库是目前做的最好的python分词组件.首先它的安装十分便捷,只需要使用pip安装:其次,它不需要另外下载其它的数据包 ...
- 中文分词工具探析(一):ICTCLAS (NLPIR)
1. 前言 ICTCLAS是张华平在2000年推出的中文分词系统,于2009年更名为NLPIR.ICTCLAS是中文分词界元老级工具了,作者开放出了free版本的源代码(1.0整理版本在此). 作者在 ...
- 开源中文分词工具探析(四):THULAC
THULAC是一款相当不错的中文分词工具,准确率高.分词速度蛮快的:并且在工程上做了很多优化,比如:用DAT存储训练特征(压缩训练模型),加入了标点符号的特征(提高分词准确率)等. 1. 前言 THU ...
随机推荐
- 系统学习 Java IO (六)----管道流 PipedInputStream/PipedOutputStream
目录:系统学习 Java IO---- 目录,概览 PipedInputStream 类使得可以作为字节流读取管道的内容. 管道是同一 JVM 内的线程之间的通信通道. 使用两个已连接的管道流时,要为 ...
- 手动搭建自己的nuget服务器及使用
这篇文章的主要目的: 1.搭建自己的私有的nuget服务器 2.打包代码为nuget包 3.在其他项目中使用私有服务器上的nuget包 一. 搭建自己的nuget服务器 1. 创建一个空的ASP.NE ...
- 大流量下的 ElasticSearch 搜索演进
这是泥瓦匠(bysocket.com)的第27篇精华分享 ES (ElasticSearch)是分布式搜索引擎.引擎太晦涩,其实类似一个 MySQL ,一个存储.方便提供下面功能: 近实时搜索 全文检 ...
- (一)C#编程基础复习——开启编程之旅
回想当年学习编程,刚开始学习是非常艰苦的,可能是因为文科生原因,刚开始接触工科类的知识不是很擅长,上去大学第一年基本没有好好学习编程,入门C#编程基础一窍不通,也许那时年少无知,第二学期开始奋发图强, ...
- Java基础介绍运行机制笔记
1. 基础知识点图解 编程语言核心结构:变量.基本语法.分支.循环.数组.…… Java面向对象的核心逻辑:OOP.封装.继承.多态.接口…… 开发Java SE高级应用程序:异常.集合.I/O.多线 ...
- Vue兄弟组件(非父子组件)状态共享与传值
前言:网上大部分文章写的有点乱,很少有讲得易懂的文章. 所以,我写了篇在我能看得懂的基础上又照顾到大家的文章 =.= 作者:X1aoYE 备注:此文原创,转载请注明~ 内容里的<br> ...
- Kafka Eagle V1.3.4更新预览
1.概述 Kafka Eagle是一款开源的Kafka集群监控系统,源代码托管在Github.目前Kafka Eagle已更新到V1.3.4版本,域名已经统一更新为http://www.kafka-e ...
- 图片去水印工具:Inpaint 7.2中文专业破解版下载及使用方法
下载地址: 点我 Inpaint 是一款可以从图片上去除不必要的物体,让您轻松摆脱照片上的水印.划痕.污渍.标志等瑕疵的实用型软件:简单说来,Inpaint 就是一款强大实用的图片去水印软件,您的图片 ...
- MyBatis 一对多映射
From<MyBatis从入门到精通> <!-- 6.1.2.1 collection集合的嵌套结果映射 和association类似,集合的嵌套结果映射就是指通过一次SQL查询将所 ...
- baserecyclerviewadapterhelper -- setOnItemChildClickListener出现的问题
出现问题 使用baserecyclerviewadapterhelper 的时候使用 adapter.setOnItemChildClickListener()方法,点击没有反应. adapter.s ...