700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 中文分词工具安装教程及分词和词性标注应用(jieba pyhanlp pkuseg foolnltk thulac snownlp nlpir)

中文分词工具安装教程及分词和词性标注应用(jieba pyhanlp pkuseg foolnltk thulac snownlp nlpir)

时间:2020-11-11 21:25:58

相关推荐

中文分词工具安装教程及分词和词性标注应用(jieba pyhanlp pkuseg foolnltk thulac snownlp nlpir)

2.1 jieba

2.1.1 jieba简介

Jieba中文含义结巴,jieba库是目前做的最好的python分词组件。首先它的安装十分便捷,只需要使用pip安装;其次,它不需要另外下载其它的数据包,在这一点上它比其余五款分词工具都要便捷。另外,jieba库支持的文本编码方式为utf-8。

Jieba库包含许多功能,如分词、词性标注、自定义词典、关键词提取。基于jieba的关键词提取有两种常用算法,一是TF-IDF算法;二是TextRank算法。基于jieba库的分词,包含三种分词模式:

精准模式:试图将句子最精确地切开,适合文本分析);全模式:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义);搜索引擎模式:搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

Jieba官方文档:/project/jieba/

2.1.2 jieba安装

Jieba库安装比较便捷,只需要在命令框中输入:pip install jieba;或者在pycharm中,通过setting-project安装。

2.1.3 jieba分词和词性标注的简单应用

import jiebaimport jieba.posseg as possegtxt1 ='''文本一:人民网华盛顿3月28日电(记者郑琪)据美国约翰斯·霍普金斯大学疫情实时监测系统显示,截至美东时间3月28日下午6时,美国已经至少有新冠病毒感染病例121117例,其中包括死亡病例例。与大约24小时前相比,美国确诊病例至少增加了20400例,死亡病例至少增加了466例。目前美国疫情最为严重的仍是纽约州,共有确诊病例至少52410例。此外,新泽西州有确诊病例11124例,加利福尼亚州有5065例,密歇根州有4650例,马塞诸塞州有4257例,华盛顿州有4008例。'''# 精确模式seg_list = jieba.cut(txt1,cut_all=False)# seg_list = jieba.cut_for_search(txt1)print("jieba分词:" + "/ ".join(seg_list)) # 精确模式list = posseg.cut(txt1)tag_list =[]for tag in list :pos_word = { }pos_word[1] = tag.wordpos_word[2] = tag.flagtag_list.append(pos_word)print('jieba词性标注:',tag_list)

结果展示:jieba分词:/ 文本/ 一/ :/ / 人民网/ 华盛顿/ 3/ 月/ 28/ 日电/ (/ 记者/ 郑琪/ )/ 据/ 美国/ 约翰斯/ ·/ 霍普金斯大学/ 疫情/ 实时/ 监测/ 系统/ 显示/ ,/ 截至/ 美/ 东/ 时间/ 3/ 月/ 28/ 日/ 下午/ 6/ 时/ ,/ / 美国/ 已经/ 至少/ 有/ 新冠/ 病毒感染/ 病例/ 121117/ 例/ ,/ 其中/ 包括/ 死亡/ 病例/ / 例/ 。/ / 与/ 大约/ 24/ 小时/ 前/ 相比/ ,/ 美国/ 确诊/ 病例/ 至少/ 增加/ 了/ 20400/ 例/ ,/ 死亡/ 病例/ 至少/ 增加/ 了/ 466/ 例/ 。/ / 目前/ 美国/ 疫情/ 最为/ 严重/ 的/ 仍/ 是/ 纽约州/ ,/ 共有/ 确诊/ 病例/ 至少/ 52410/ 例/ 。/ 此外/ ,/ 新泽西州/ 有/ 确诊/ 病例/ 11124/ 例/ ,/ 加利福尼亚州/ 有/ 5065/ 例/ ,/ / 密歇根州/ 有/ 4650/ 例/ ,/ 马塞诸塞/ 州/ 有/ 4257/ 例/ ,/ 华盛顿州/ 有/ 4008/ 例/ 。/ jieba词性标注: [{1: '\n', 2: 'x'}, {1: '文本', 2: 'n'}, {1: '一', 2: 'm'}, {1: ':', 2: 'x'}, {1: '\n', 2: 'x'}, {1: '人民网', 2: 'n'}, {1: '华盛顿', 2: 'ns'}, {1: '3', 2: 'm'}, {1: '月', 2: 'm'}, {1: '28', 2: 'm'}, {1: '日电', 2: 'j'}, {1: '(', 2: 'x'}, {1: '记者', 2: 'n'}, {1: '郑琪', 2: 'nr'}, {1: ')', 2: 'x'}, {1: '据', 2: 'p'}, {1: '美国', 2: 'ns'}, {1: '约翰斯', 2: 'nrt'}, {1: '·', 2: 'x'}, {1: '霍普金斯大学', 2: 'nt'}, {1: '疫情', 2: 'n'}, {1: '实时', 2: 'd'}, {1: '监测', 2: 'vn'}, {1: '系统', 2: 'n'}, {1: '显示', 2: 'v'}, {1: ',', 2: 'x'}, {1: '截至', 2: 'v'}, {1: '美', 2: 'ns'}, {1: '东', 2: 'ns'}, {1: '时间', 2: 'n'}, {1: '3', 2: 'm'}, {1: '月', 2: 'm'}, {1: '28', 2: 'm'}, {1: '日', 2: 'm'}, {1: '下午', 2: 't'}, {1: '6', 2: 'm'}, {1: '时', 2: 'n'}, {1: ',', 2: 'x'}, {1: '\n', 2: 'x'}, {1: '美国', 2: 'ns'}, {1: '已经', 2: 'd'}, {1: '至少', 2: 'd'}, {1: '有', 2: 'v'}, {1: '新', 2: 'a'}, {1: '冠', 2: 'n'}, {1: '病毒感染', 2: 'n'}, {1: '病例', 2: 'n'}, {1: '121117', 2: 'm'}, {1: '例', 2: 'v'}, {1: ',', 2: 'x'}, {1: '其中', 2: 'r'}, {1: '包括', 2: 'v'}, {1: '死亡', 2: 'v'}, {1: '病例', 2: 'n'}, {1: '', 2: 'm'}, {1: '例', 2: 'v'}, {1: '。', 2: 'x'}, {1: '\n', 2: 'x'}, {1: '与', 2: 'p'}, {1: '大约', 2: 'd'}, {1: '24', 2: 'm'}, {1: '小时', 2: 'n'}, {1: '前', 2: 'f'}, {1: '相比', 2: 'v'}, {1: ',', 2: 'x'}, {1: '美国', 2: 'ns'}, {1: '确诊', 2: 'v'}, {1: '病例', 2: 'n'}, {1: '至少', 2: 'd'}, {1: '增加', 2: 'v'}, {1: '了', 2: 'ul'}, {1: '20400', 2: 'm'}, {1: '例', 2: 'v'}, {1: ',', 2: 'x'}, {1: '死亡', 2: 'v'}, {1: '病例', 2: 'n'}, {1: '至少', 2: 'd'}, {1: '增加', 2: 'v'}, {1: '了', 2: 'ul'}, {1: '466', 2: 'm'}, {1: '例', 2: 'v'}, {1: '。', 2: 'x'}, {1: '\n', 2: 'x'}, {1: '目前', 2: 't'}, {1: '美国', 2: 'ns'}, {1: '疫情', 2: 'n'}, {1: '最为', 2: 'd'}, {1: '严重', 2: 'a'}, {1: '的', 2: 'uj'}, {1: '仍', 2: 'd'}, {1: '是', 2: 'v'}, {1: '纽约州', 2: 'ns'}, {1: ',', 2: 'x'}, {1: '共有', 2: 'v'}, {1: '确诊', 2: 'v'}, {1: '病例', 2: 'n'}, {1: '至少', 2: 'd'}, {1: '52410', 2: 'm'}, {1: '例', 2: 'v'}, {1: '。', 2: 'x'}, {1: '此外', 2: 'c'}, {1: ',', 2: 'x'}, {1: '新泽西州', 2: 'ns'}, {1: '有', 2: 'v'}, {1: '确诊', 2: 'v'}, {1: '病例', 2: 'n'}, {1: '11124', 2: 'm'}, {1: '例', 2: 'v'}, {1: ',', 2: 'x'}, {1: '加利福尼亚州', 2: 'ns'}, {1: '有', 2: 'v'}, {1: '5065', 2: 'm'}, {1: '例', 2: 'v'}, {1: ',', 2: 'x'}, {1: '\n', 2: 'x'}, {1: '密歇根州', 2: 'ns'}, {1: '有', 2: 'v'}, {1: '4650', 2: 'm'}, {1: '例', 2: 'v'}, {1: ',', 2: 'x'}, {1: '马塞诸塞', 2: 'nr'}, {1: '州', 2: 'n'}, {1: '有', 2: 'v'}, {1: '4257', 2: 'm'}, {1: '例', 2: 'v'}, {1: ',', 2: 'x'}, {1: '华盛顿州', 2: 'ns'}, {1: '有', 2: 'v'}, {1: '4008', 2: 'm'}, {1: '例', 2: 'v'}, {1: '。', 2: 'x'}, {1: '\n', 2: 'x'}]

2.2 thulac

2.2.1 thulac简介

THULAC(THU Lexical Analyzer for Chinese)由清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包,具有中文分词和词性标注功能。THULAC集成了目前世界上规模最大的人工分词和词性标注中文语料库(约含5800万字),模型标注能力强大。该工具包在标准数据集Chinese Treebank(CTB5)上分词的F1值可达97.3%,词性标注的F1值可达到92.9%。同时进行分词和词性标注速度为300KB/s,每秒可处理约15万字。只进行分词速度可达到1.3MB/s。总的来说,可以理解为thulac训练的分词、词性标注语料库很大,性能优良。

Thulac的简单分词,可以通过python程序import thulac,新建thulac.thulac(args)类,其中args为程序的参数,之后可以通过调用thulac.cut()进行单句分词。

Thulac使用参考文档:/

2.2.2 thulac安装

Thulac库的安装也较为简单,不需要下载特别的数据包,安装方法:pip install thulac。

2.2.3 thulac分词和词性标注的简单应用

# -*- coding: utf-8 -*-import thulactxt1 ='''文本一:人民网华盛顿3月28日电(记者郑琪)据美国约翰斯·霍普金斯大学疫情实时监测系统显示,截至美东时间3月28日下午6时,美国已经至少有新冠病毒感染病例121117例,其中包括死亡病例例。与大约24小时前相比,美国确诊病例至少增加了20400例,死亡病例至少增加了466例。目前美国疫情最为严重的仍是纽约州,共有确诊病例至少52410例。此外,新泽西州有确诊病例11124例,加利福尼亚州有5065例,密歇根州有4650例,马塞诸塞州有4257例,华盛顿州有4008例。'''#seg_only设置词性标注与否,deli设置分词以后以什么分隔thu1 = thulac.thulac(seg_only=False, deli='_')text = thu1.cut(txt1, text=True)print('thulac分词:',text)print('thulac词性标注:',text)

结果展示:

Model loaded succeedthulac分词: 文本_n 一_m :_w人民网_n 华盛顿_ns 3月_t 28日_t 电_n (_w 记者_n 郑琪_np )_w 据_p 美国_ns 约翰斯_np ·_w 霍普金斯_nz 大学_n 疫情_n 实时_a 监测_v 系统_n 显示_v ,_w 截至_v 美东_ns 时间_n 3月_t 28日_t 下午_t 6时_t ,_w美国_ns 已经_d 至少_d 有_v 新_a 冠_v 病毒_n 感染_v 病例_n 121117_m 例_q ,_w 其中_r 包括_v 死亡_v 病例_n _m 例_n 。_w与_p 大约_d 24_m 小时_n 前_f 相比_v ,_w 美国_ns 确诊_v 病例_n 至少_d 增加_v 了_u 20400_m 例_q ,_w 死亡_v 病例_n 至少_d 增加_v 了_u 466_m 例_q 。_w目前_t 美国_ns 疫情_n 最为_d 严重_a 的_u 仍_d 是_v 纽约州_ns ,_w 共有_v 确诊_v 病例_n 至少_d 52410_m 例_n 。_w 此外_c ,_w 新泽西州_ns 有_v 确诊_v 病例_n 11124_m 例_q ,_w 加利福尼亚州_ns 有_v 5065_m 例_q ,_w密歇根州_ns 有_v 4650_m 例_q ,_w 马塞诸塞州_ns 有_v 4257_m 例_q ,_w 华盛顿州_ns 有_v 4008_m 例_q 。_wthulac词性标注: 文本_n 一_m :_w人民网_n 华盛顿_ns 3月_t 28日_t 电_n (_w 记者_n 郑琪_np )_w 据_p 美国_ns 约翰斯_np ·_w 霍普金斯_nz 大学_n 疫情_n 实时_a 监测_v 系统_n 显示_v ,_w 截至_v 美东_ns 时间_n 3月_t 28日_t 下午_t 6时_t ,_w美国_ns 已经_d 至少_d 有_v 新_a 冠_v 病毒_n 感染_v 病例_n 121117_m 例_q ,_w 其中_r 包括_v 死亡_v 病例_n _m 例_n 。_w与_p 大约_d 24_m 小时_n 前_f 相比_v ,_w 美国_ns 确诊_v 病例_n 至少_d 增加_v 了_u 20400_m 例_q ,_w 死亡_v 病例_n 至少_d 增加_v 了_u 466_m 例_q 。_w目前_t 美国_ns 疫情_n 最为_d 严重_a 的_u 仍_d 是_v 纽约州_ns ,_w 共有_v 确诊_v 病例_n 至少_d 52410_m 例_n 。_w 此外_c ,_w 新泽西州_ns 有_v 确诊_v 病例_n 11124_m 例_q ,_w 加利福尼亚州_ns 有_v 5065_m 例_q ,_w密歇根州_ns 有_v 4650_m 例_q ,_w 马塞诸塞州_ns 有_v 4257_m 例_q ,_w 华盛顿州_ns 有_v 4008_m 例_q 。_w

2.3 foolNLTK

2.3.1 foolNLTK简介

FoolNLTK是一个使用双向LSTM(BiLSTM 模型)构建的便捷的中文处理工具包,可支持python编译环境。FoolNLTK包含中文分词、词性标注、命名实体识别、自定义用户词典。根据官方文档描述,这个中文工具包可能不是最快的开源中文分词,但很可能是最准的开源中文分词。

Foolnltk分词、词性标注、命名实体识别应用十分简单,只需要调用cut、pos_cut、analysis函数。

2.3.2 foolNLTK安装

Foolnltk安装也不需要数据包,但是它需要依赖库,如tesonflow库,如果没有安装这个库,运行foolnltk安装会失败。foolnltk安装方法:pip install foolnltk,tensorflow安装方法:pip install tensorflow==1.15,解释foolnltk依赖tensorflow 1.15版本的,安装最新版会出错。

2.3.3 foolNLTK分词和词性标注的简单应用

# -*- coding: utf-8 -*-import fooltxt1 ='''文本一:人民网华盛顿3月28日电(记者郑琪)据美国约翰斯·霍普金斯大学疫情实时监测系统显示,截至美东时间3月28日下午6时,美国已经至少有新冠病毒感染病例121117例,其中包括死亡病例例。与大约24小时前相比,美国确诊病例至少增加了20400例,死亡病例至少增加了466例。目前美国疫情最为严重的仍是纽约州,共有确诊病例至少52410例。此外,新泽西州有确诊病例11124例,加利福尼亚州有5065例,密歇根州有4650例,马塞诸塞州有4257例,华盛顿州有4008例。'''#cut函数分词cut_word = fool.cut(txt1)print('foolnltk分词:',cut_word)#pos_cut函数词性标注tag_word = fool.pos_cut(txt1)print('foolnltk词性标注:',tag_word)#analysis函数命名实体识别

结果展示:

foolnltk分词: [['\n', '文本', '一', ':', '\n', '人民网', '华盛顿', '3月', '28日', '电', '(', '记者', '郑琪', ')', '据', '美国', '约翰斯·霍普金斯', '大学', '疫情', '实时', '监测', '系统', '显示', ',', '截至', '美东', '时间', '3月', '28日', '下午', '6时', ',', '\n', '美国', '已经', '至少', '有', '新冠', '病毒', '感染', '病例', '121117', '例', ',', '其中', '包括', '死亡', '病例', '', '例', '。', '\n', '与', '大约', '24', '小时', '前', '相比', ',', '美国', '确诊', '病例', '至少', '增加', '了', '20400', '例', ',', '死亡', '病例', '至少', '增加', '了', '466', '例', '。', '\n', '目前', '美国', '疫情', '最为', '严重', '的', '仍', '是', '纽约州', ',', '共有', '确诊', '病例', '至少', '52410', '例', '。', '此外', ',', '新泽西州', '有', '确诊', '病例', '11124', '例', ',', '加利福尼亚州', '有', '5065', '例', ',', '\n', '密歇根州', '有', '4650', '例', ',', '马塞', '诸塞州', '有', '4257', '例', ',', '华盛', '顿州', '有', '4008', '例', '。', '\n']]-04-01 19:16:03.129466: I tensorflow/core/common_runtime/gpu/:1159] Device interconnect StreamExecutor with strength 1 edge matrix:-04-01 19:16:03.129711: I tensorflow/core/common_runtime/gpu/:1165]foolnltk词性标注: [[('\n', 'ns'), ('文本', 'n'), ('一', 'm'), (':', 'wm'), ('\n', 'nx'), ('人民网', 'n'), ('华盛顿', 'ns'), ('3月', 't'), ('28日', 't'), ('电', 'n'), ('(', 'wkz'), ('记者', 'n'), ('郑琪', 'nr'), (')', 'wky'), ('据', 'p'), ('美国', 'ns'), ('约翰斯·霍普金斯', 'ns'), ('大学', 'n'), ('疫情', 'n'), ('实时', 'n'), ('监测', 'n'), ('系统', 'n'), ('显示', 'v'), (',', 'wd'), ('截至', 'v'), ('美东', 'n'), ('时间', 'n'), ('3月', 't'), ('28日', 't'), ('下午', 't'), ('6时', 't'), (',', 'wd'), ('\n', 'ns'), ('美国', 'ns'), ('已经', 'd'), ('至少', 'd'), ('有', 'vyou'), ('新冠', 'nz'), ('病毒', 'n'), ('感染', 'v'), ('病例', 'n'), ('121117', 'm'), ('例', 'q'), (',', 'wd'), ('其中', 'r'), ('包括', 'v'), ('死亡', 'n'), ('病例', 'n'), ('', 'm'), ('例', 'q'), ('。', 'wj'), ('\n', 'n'), ('与', 'c'), ('大约', 'd'), ('24', 'm'), ('小时', 'n'), ('前', 'f'), ('相比', 'vi'), (',', 'wd'), ('美国', 'ns'), ('确诊', 'v'), ('病例', 'n'), ('至少', 'd'), ('增加', 'v'), ('了', 'y'), ('20400', 'n'), ('例', 'n'), (',', 'wd'), ('死亡', 'n'), ('病例', 'n'), ('至少', 'd'), ('增加', 'v'), ('了', 'y'), ('466', 'ns'), ('例', 'n'), ('。', 'wj'), ('\n', 'n'), ('目前', 't'), ('美国', 'ns'), ('疫情', 'n'), ('最为', 'd'), ('严重', 'a'), ('的', 'ude'), ('仍', 'd'), ('是', 'vshi'), ('纽约州', 'n'), (',', 'wd'), ('共有', 'v'), ('确诊', 'v'), ('病例', 'n'), ('至少', 'd'), ('52410', 'v'), ('例', 'n'), ('。', 'wj'), ('此外', 'c'), (',', 'wd'), ('新泽西州', 'ns'), ('有', 'vyou'), ('确诊', 'v'), ('病例', 'n'), ('11124', 'n'), ('例', 'n'), (',', 'wd'), ('加利福尼亚州', 'ns'), ('有', 'vyou'), ('5065', 'm'), ('例', 'q'), (',', 'wd'), ('\n', 'ns'), ('密歇根州', 'ns'), ('有', 'vyou'), ('4650', 'm'), ('例', 'q'), (',', 'wd'), ('马塞', 'ns'), ('诸塞州', 'ns'), ('有', 'vyou'), ('4257', 'm'), ('例', 'q'), (',', 'wd'), ('华盛', 'nz'), ('顿州', 'n'), ('有', 'vyou'), ('4008', 'm'), ('例', 'q'), ('。', 'wj'), ('\n', 'm')]]

2.4 hanLP

2.4.1 hanlp简介

HanLP是一系列模型与算法组成的NLP工具包,由大快搜索主导并完全开源,目标是普及自然语言处理在生产环境中的应用。hanlp支持中文分词(N-最短路分词、CRF分词、索引分词、用户自定义词调、词性标注),命名实体识别(中国人民、音译人民、日本人民,地名,实体机构名识别),关键词提取,自动摘要,短语提取,拼音转换,简繁转换,文本推荐,依存句法分析(MaxEnt依存句法分析、神经网络依存句法分析)。

Hanlp支持python环境下编译运行,pyhanlp是hanlp为封装的python组件。Pyhanlp也支持分词、词性标注、命名实体识别。

Hanlp官方参考文档:/hankcs/HanLP

2.4.2 pyhanlp安装

在python环境下运作hanlp,需要下载安装pyhanlp库,安装方法:pip install pyhanlp,另外还需要下载data-for-1.7.7.zip数据包,并将数据放置到pyhanlp的库文件中,再运行from python import *即可自动解压。

Data数据包下载地址:/hankcs/HanLP/releases

具体安装步骤可以参考这篇文档:/maxxu11/p/12594387.html

2.4.3 pyhanlp分词和词性标注的简单应用

# -*- coding: utf-8 -*-from pyhanlp import*txt1 ='''文本一:人民网华盛顿3月28日电(记者郑琪)据美国约翰斯·霍普金斯大学疫情实时监测系统显示,截至美东时间3月28日下午6时,美国已经至少有新冠病毒感染病例121117例,其中包括死亡病例例。与大约24小时前相比,美国确诊病例至少增加了20400例,死亡病例至少增加了466例。目前美国疫情最为严重的仍是纽约州,共有确诊病例至少52410例。此外,新泽西州有确诊病例11124例,加利福尼亚州有5065例,密歇根州有4650例,马塞诸塞州有4257例,华盛顿州有4008例。'''tag_word = HanLP.segment(txt1)print('hanlp词性标注:',tag_word)

结果展示:

hanlp词性标注: [/w, 文本/n, 一/m, :/w, /w, 人民网/nz, 华盛顿/nrf, 3月/t, 28/m, 日电/j, (/w, 记者/nnt, 郑琪/nr, )/w, 据/p, 美国/nsf, 约翰斯·/nrf, 霍普金斯大学/ntu, 疫情/n, 实时/n, 监测/vn, 系统/n, 显示/v, ,/w, 截至/v, 美东/ns, 时间/n, 3月/t, 28/m, 日/b, 下午/t, 6/m, 时/qt, ,/w, /w, 美国/nsf, 已经/d, 至少/d, 有/vyou, 新/a, 冠/ng, 病毒感染/nz, 病例/n, 121117/m, 例/n, ,/w, 其中/rz, 包括/v, 死亡/vi, 病例/n, /m, 例/n, 。/w, /w, 与/cc, 大约/d, 24/m, 小时/n, 前/f, 相比/vi, ,/w, 美国/nsf, 确诊/v, 病例/n, 至少/d, 增加/v, 了/ule, 20400/m, 例/n, ,/w, 死亡/vi, 病例/n, 至少/d, 增加/v, 了/ule, 466/m, 例/n, 。/w, /w, 目前/t, 美国/nsf, 疫情/n, 最为/d, 严重/a, 的/ude1, 仍/d, 是/vshi, 纽约/nsf, 州/n, ,/w, 共有/v, 确诊/v, 病例/n, 至少/d, 52410/m, 例/n, 。/w, 此外/c, ,/w, 新泽西州/nsf, 有/vyou, 确诊/v, 病例/n, 11124/m, 例/n, ,/w, 加利福尼亚州/nsf, 有/vyou, 5065/m, 例/n, ,/w, /w, 密歇根州/nsf, 有/vyou, 4650/m, 例/n, ,/w, 马塞诸塞/nz, 州/n, 有/vyou, 4257/m, 例/n, ,/w, 华盛顿州/nsf, 有/vyou, 4008/m, 例/n, 。/w, /w]

2.5 nlpir

2.5.1 nlpir简介

Nlpir平台是文本数据处理平台,NLPIR平台能够全方位多角度满足应用者对大数据文本的处理需求,包括大数据完整的技术链条:网络抓取、正文提取、中英文分词、词性标注、实体抽取、词频统计、关键词提取、语义信息抽取、文本分类、情感分析、语义深度扩展、繁简编码转换、自动注音、文本聚类等。pynlpir是NLPIR / ICTCLAS中文分词软件的Python包装器,它具有分词、词性标注、关键词提取等功能。

2.5.2 nlpir安装

在pycharm环境下使用nlpir,需要安装pynlpir模块,安装命令:pip install pynlpir。安装运行可能会遇到license过期问题。

解决办法:下载下面链接文件,替换原有的NLPIR.user文件,NLPIR.user文件路径在你的nlpir库文件的data目录下。

文件下载路径:

/NLPIR-team/NLPIR/tree/master/License/license%20for%20a%20month/NLPIR-ICTCLAS%E5%88%86%E8%AF%8D%E7%B3%BB%E7%BB%9F%E6%8E%88%E6%9D%83

2.5.3 nlpir分词和词性标注的简单应用

# -*- coding: utf-8 -*-import pynlpirtxt1 ='''文本一:人民网华盛顿3月28日电(记者郑琪)据美国约翰斯·霍普金斯大学疫情实时监测系统显示,截至美东时间3月28日下午6时,美国已经至少有新冠病毒感染病例121117例,其中包括死亡病例例。与大约24小时前相比,美国确诊病例至少增加了20400例,死亡病例至少增加了466例。目前美国疫情最为严重的仍是纽约州,共有确诊病例至少52410例。此外,新泽西州有确诊病例11124例,加利福尼亚州有5065例,密歇根州有4650例,马塞诸塞州有4257例,华盛顿州有4008例。'''pynlpir.open()#pos_tagging:是否进行词性标注tag_seg = pynlpir.segment(txt1,pos_tagging=False)print('pynlpir分词:',tag_seg)tag_word = pynlpir.segment(txt1, pos_tagging=True)print('pynlpir词性标注:',tag_word)pynlpir.close()

结果展示:

pynlpir分词: ['文本', '一', ':', '\n人民网', '华盛顿', '3月', '28日', '电', '(', '记者', '郑琪', ')', '据', '美国', '约翰斯·霍普金斯', '大学', '疫情', '实时', '监测', '系统', '显示', ',', '截至', '美', '东', '时间', '3月', '28日', '下午', '6时', ',', '\n美国', '已经', '至少', '有', '新', '冠', '病毒', '感染', '病例', '121117', '例', ',', '其中', '包括', '死亡', '病例', '', '例', '。', '\n与', '大约', '24', '小时', '前', '相比', ',', '美国', '确诊', '病例', '至少', '增加', '了', '20400', '例', ',', '死亡', '病例', '至少', '增加', '了', '466', '例', '。', '\n目前', '美国', '疫情', '最为', '严重', '的', '仍', '是', '纽约州', ',', '共有', '确诊', '病例', '至少', '52410', '例', '。', '此外', ',', '新泽西州', '有', '确诊', '病例', '11124', '例', ',', '加利福尼亚州', '有', '5065', '例', ',', '\n密歇根州', '有', '4650', '例', ',', '马塞诸塞州', '有', '4257', '例', ',', '华盛顿州', '有', '4008', '例', '。']pynlpir词性标注: [('文本', 'noun'), ('一', 'numeral'), (':', 'punctuation mark'), ('\n人民网', 'multiword expression'), ('华盛顿', 'noun'), ('3月', 'time word'), ('28日', 'time word'), ('电', 'noun'), ('(', 'punctuation mark'), ('记者', 'noun'), ('郑琪', 'noun'), (')', 'punctuation mark'), ('据', 'preposition'), ('美国', 'noun'), ('约翰斯·霍普金斯', 'noun'), ('大学', 'noun'), ('疫情', 'noun'), ('实时', 'noun'), ('监测', 'verb'), ('系统', 'noun'), ('显示', 'verb'), (',', 'punctuation mark'), ('截至', 'verb'), ('美', 'distinguishing word'), ('东', 'distinguishing word'), ('时间', 'noun'), ('3月', 'time word'), ('28日', 'time word'), ('下午', 'time word'), ('6时', 'time word'), (',', 'punctuation mark'), ('\n美国', 'noun'), ('已经', 'adverb'), ('至少', 'adverb'), ('有', 'verb'), ('新', 'adjective'), ('冠', 'noun'), ('病毒', 'noun'), ('感染', 'verb'), ('病例', 'noun'), ('121117', 'numeral'), ('例', 'classifier'), (',', 'punctuation mark'), ('其中', 'pronoun'), ('包括', 'verb'), ('死亡', 'verb'), ('病例', 'noun'), ('', 'numeral'), ('例', 'classifier'), ('。', 'punctuation mark'), ('\n与', 'preposition'), ('大约', 'adverb'), ('24', 'numeral'), ('小时', 'noun'), ('前', 'noun of locality'), ('相比', 'verb'), (',', 'punctuation mark'), ('美国', 'noun'), ('确诊', 'verb'), ('病例', 'noun'), ('至少', 'adverb'), ('增加', 'verb'), ('了', 'particle'), ('20400', 'numeral'), ('例', 'classifier'), (',', 'punctuation mark'), ('死亡', 'verb'), ('病例', 'noun'), ('至少', 'adverb'), ('增加', 'verb'), ('了', 'particle'), ('466', 'numeral'), ('例', 'classifier'), ('。', 'punctuation mark'), ('\n目前', 'time word'), ('美国', 'noun'), ('疫情', 'noun'), ('最为', 'adverb'), ('严重', 'adjective'), ('的', 'particle'), ('仍', 'adverb'), ('是', 'verb'), ('纽约州', 'noun'), (',', 'punctuation mark'), ('共有', 'verb'), ('确诊', 'verb'), ('病例', 'noun'), ('至少', 'adverb'), ('52410', 'numeral'), ('例', 'classifier'), ('。', 'punctuation mark'), ('此外', 'conjunction'), (',', 'punctuation mark'), ('新泽西州', 'noun'), ('有', 'verb'), ('确诊', 'verb'), ('病例', 'noun'), ('11124', 'numeral'), ('例', 'classifier'), (',', 'punctuation mark'), ('加利福尼亚州', 'noun'), ('有', 'verb'), ('5065', 'numeral'), ('例', 'classifier'), (',', 'punctuation mark'), ('\n密歇根州', 'noun'), ('有', 'verb'), ('4650', 'numeral'), ('例', 'classifier'), (',', 'punctuation mark'), ('马塞诸塞州', 'noun'), ('有', 'verb'), ('4257', 'numeral'), ('例', 'classifier'), (',', 'punctuation mark'), ('华盛顿州', 'noun'), ('有', 'verb'), ('4008', 'numeral'), ('例', 'classifier'), ('。', 'punctuation mark')]

2.6PKUseg

2.6.1 PKUseg简介

pkuseg是由北京大学语言计算与机器学习研究组研制推出的一套全新的中文分词工具包。pkuseg具有如下几个特点:1、多领域分词。不同于以往的通用中文分词工具,此工具包同时致力于为不同领域的数据提供个性化的预训练模型。根据待分词文本的领域特点,用户可以自由地选择不同的模型。PKUseg目前支持了新闻领域,网络领域,医药领域,旅游领域,以及混合领域的分词预训练模型。在使用中,如果用户明确待分词的领域,可加载对应的模型进行分词。如果用户无法确定具体领域,推荐使用在混合领域上训练的通用模型。2、更高的分词准确率。相比于其他的分词工具包,当使用相同的训练数据和测试数据,pkuseg可以取得更高的分词准确率。3、支持用户自训练模型。支持用户使用全新的标注数据进行训练。4、支持词性标注。

总的来说,PKUseg功能很完善,而且分词准确率很高(后面测试测试看看,是不是如文档描述的这样)。

Pkuseg分词可以设定需要分词文本类型,这一点优于其它分词器。模型可根据model_name选择不同的模型,如医疗语料可以选择medical,金融finance等等。

Pkuseg具体使用可以参考官方文档:

/pkuseg.html

/lancopku/PKUSeg-python

2.6.2 PUKseg安装

PKUseg目前暂时只支持python3.0以上版本,PUKseg需要的data比较多,如用于分词的postag、数据模型,因此安装会比较繁琐一些。首先,安装pkuseg,通过pip install pkuseg 安装;其次,下载数据包,并放置到C盘的目录下,这个目录可以通过运行下面这段代码找出:

import pkuseg

seg = pkuseg.pkuseg(model_name='news') # 程序会自动下载所对应的细领域模型

text = seg.cut('我以前用的是大哥大') # 进行分词

print(text)

词性标注和数据包下载地址:/lancopku/pkuseg-python/releases

2.6.3 pkuseg分词和词性标注的简单应用

# -*- coding: utf-8 -*-import pkusegtxt1 ='''文本一:人民网华盛顿3月28日电(记者郑琪)据美国约翰斯·霍普金斯大学疫情实时监测系统显示,截至美东时间3月28日下午6时,美国已经至少有新冠病毒感染病例121117例,其中包括死亡病例例。与大约24小时前相比,美国确诊病例至少增加了20400例,死亡病例至少增加了466例。目前美国疫情最为严重的仍是纽约州,共有确诊病例至少52410例。此外,新泽西州有确诊病例11124例,加利福尼亚州有5065例,密歇根州有4650例,马塞诸塞州有4257例,华盛顿州有4008例。'''#postag=False表示不词性标注,=True表示进行词性标注seg = pkuseg.pkuseg(model_name='news',postag= False)sge_word = seg.cut(txt1)print('pkuseg分词:',sge_word)tag = pkuseg.pkuseg(model_name='news',postag= True)tag_word = tag.cut(txt1)print('pkuseg词性标注:',tag_word)

结果展示:

pkuseg分词: ['文本', '一', ':', '人民网', '华盛顿', '3月28日', '电', '(', '记者', '郑琪', ')', '据', '美国', '约翰斯·霍普金斯大学', '疫情', '实时', '监测', '系统', '显示', ',', '截至', '美东时间3月28日', '下午6时', ',', '美国', '已经', '至少', '有', '新', '冠', '病毒', '感染', '病例', '121117例', ',', '其中', '包括', '死亡', '病例', '例', '。', '与', '大约', '24小时', '前', '相比', ',', '美国', '确诊', '病例', '至少', '增加', '了', '20400例', ',', '死亡', '病例', '至少', '增加', '了', '466例', '。', '目前', '美国', '疫情', '最为', '严重', '的', '仍是', '纽约州', ',', '共有', '确诊', '病例', '至少', '52410例', '。', '此外', ',', '新泽西州', '有', '确诊', '病例', '11124例', ',', '加利福尼亚州', '有', '5065例', ',', '密歇根州', '有', '4650例', ',', '马塞诸塞州', '有', '4257例', ',', '华盛顿州', '有', '4008例', '。']PKUseg词性标注: [('文本', 'n'), ('一', 'm'), (':', 'w'), ('人民网', 'n'), ('华盛顿', 'ns'), ('3月28日', 'n'), ('电', 'n'), ('(', 'w'), ('记者', 'n'), ('郑琪', 'nr'), (')', 'w'), ('据', 'p'), ('美国', 'ns'), ('约翰斯·霍普金斯大学', 'n'), ('疫情', 'n'), ('实时', 'n'), ('监测', 'vn'), ('系统', 'n'), ('显示', 'v'), (',', 'w'), ('截至', 'v'), ('美东时间3月28日', 't'), ('下午6时', 't'), (',', 'w'), ('美国', 'ns'), ('已经', 'd'), ('至少', 'd'), ('有', 'v'), ('新', 'a'), ('冠', 'n'), ('病毒', 'n'), ('感染', 'v'), ('病例', 'n'), ('121117例', 'n'), (',', 'w'), ('其中', 'r'), ('包括', 'v'), ('死亡', 'v'), ('病例', 'n'), ('例', 'n'), ('。', 'w'), ('与', 'p'), ('大约', 'd'), ('24小时', 'v'), ('前', 'f'), ('相比', 'v'), (',', 'w'), ('美国', 'ns'), ('确诊', 'v'), ('病例', 'n'), ('至少', 'd'), ('增加', 'v'), ('了', 'u'), ('20400例', 'n'), (',', 'w'), ('死亡', 'v'), ('病例', 'n'), ('至少', 'd'), ('增加', 'v'), ('了', 'u'), ('466例', 'n'), ('。', 'w'), ('目前', 't'), ('美国', 'ns'), ('疫情', 'n'), ('最为', 'd'), ('严重', 'a'), ('的', 'u'), ('仍是', 'd'), ('纽约州', 'ns'), (',', 'w'), ('共有', 'v'), ('确诊', 'v'), ('病例', 'n'), ('至少', 'd'), ('52410例', 'v'), ('。', 'w'), ('此外', 'c'), (',', 'w'), ('新泽西州', 'ns'), ('有', 'v'), ('确诊', 'v'), ('病例', 'n'), ('11124例', 'n'), (',', 'w'), ('加利福尼亚州', 'ns'), ('有', 'v'), ('5065例', 'n'), (',', 'w'), ('密歇根州', 'ns'), ('有', 'v'), ('4650例', 'n'), (',', 'w'), ('马塞诸塞州', 'ns'), ('有', 'v'), ('4257例', 'n'), (',', 'w'), ('华盛顿州', 'ns'), ('有', 'v'), ('4008例', 'n'), ('。', 'w')]

2.7SnowNLP

2.7.1 SonwNLP简介

SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是,这里没有用NLTK,所有的算法都是自己实现的,并且自带了一些训练好的字典。注意本程序都是处理的unicode编码,所以使用时请自行decode成unicode。简单来说,snownlp是一个中文的自然语言处理的Python库,snownlp主要功能有:中文分词、词性标注、情感分析、文本分类、转换成拼音、繁体转简体、提取文本关键词、提取文本摘要、tf,idf、Tokenization、文本相似。

总结:snowNLP库的情感分析模块,使用非常方便,功能也很丰富,非常建议大家使用。

官方参考文档:/isnowfy/snownlp

2.7.2 SonwNLP安装

Snownlp作为一个基于python自然语言处理原生库,使用方便是它的优点,同时安装也很方便。安装代码:pip install snownlp

2.7.3 snownlp分词和词性标注的简单应用

# -*- coding: utf-8 -*-from snownlp import SnowNLPtxt1 ='''文本一:人民网华盛顿3月28日电(记者郑琪)据美国约翰斯·霍普金斯大学疫情实时监测系统显示,截至美东时间3月28日下午6时,美国已经至少有新冠病毒感染病例121117例,其中包括死亡病例例。与大约24小时前相比,美国确诊病例至少增加了20400例,死亡病例至少增加了466例。目前美国疫情最为严重的仍是纽约州,共有确诊病例至少52410例。此外,新泽西州有确诊病例11124例,加利福尼亚州有5065例,密歇根州有4650例,马塞诸塞州有4257例,华盛顿州有4008例。'''s = SnowNLP(txt1)print('snownlp分词:',s.words)tag_list = []for tag in s.tags:tag_list.append(tag)print('snownlp词性标注:', tag_list)

结果展示:

snownlp分词: ['文本', '一', ':', '人民', '网', '华盛顿', '3', '月', '28', '日', '电', '(', '记者', '郑琪', ')', '据', '美国', '约翰斯', '·', '霍', '普金斯', '大学', '疫情', '实时', '监测', '系统', '显示', ',', '截至', '美', '东', '时间', '3', '月', '28', '日', '下午', '6', '时', ',', '美国', '已经', '至少', '有', '新', '冠', '病毒', '感染', '病例', '121117', '例', ',', '其中', '包括', '死亡', '病例', '', '例', '。', '与', '大约', '24', '小时前', '相比', ',', '美国', '确诊', '病例', '至少', '增加', '了', '20400', '例', ',', '死亡', '病例', '至少', '增加', '了', '466', '例', '。', '目前', '美国', '疫情', '最为', '严重', '的', '仍', '是', '纽约州', ',', '共有', '确诊', '病例', '至少', '52410', '例', '。', '此外', ',', '新', '泽', '西州', '有', '确诊', '病例', '11124', '例', ',', '加利福尼亚州', '有', '5065', '例', ',', '密歇', '根州', '有', '4650', '例', ',', '马塞', '诸塞州', '有', '4257', '例', ',', '华盛顿', '州', '有', '4008', '例', '。']snownlp词性标注: [('文本', 'n'), ('一', 'm'), (':', 'w'), ('人民', 'n'), ('网', 'n'), ('华盛顿', 'ns'), ('3', 'nz'), ('月', 'n'), ('28', 'm'), ('日', 'q'), ('电', 'n'), ('(', 'w'), ('记者', 'n'), ('郑琪', 'k'), (')', 'w'), ('据', 'p'), ('美国', 'ns'), ('约翰斯', 's'), ('·', 'w'), ('霍', 'nr'), ('普金斯', 'nr'), ('大学', 'n'), ('疫情', 'n'), ('实时', 'n'), ('监测', 'vn'), ('系统', 'n'), ('显示', 'v'), (',', 'w'), ('截至', 'v'), ('美', 'j'), ('东', 'j'), ('时间', 'n'), ('3', 'vvn'), ('月', 'n'), ('28', 'm'), ('日', 'q'), ('下午', 't'), ('6', 'Ag'), ('时', 'Ng'), (',', 'w'), ('美国', 'ns'), ('已经', 'd'), ('至少', 'd'), ('有', 'v'), ('新', 'a'), ('冠', 'j'), ('病毒', 'n'), ('感染', 'v'), ('病例', 'n'), ('121117', 'm'), ('例', 'q'), (',', 'w'), ('其中', 'r'), ('包括', 'v'), ('死亡', 'v'), ('病例', 'n'), ('', 'u'), ('例', 'n'), ('。', 'w'), ('与', 'c'), ('大约', 'd'), ('24', 'Dg'), ('小时前', 'Vg'), ('相比', 'v'), (',', 'w'), ('美国', 'ns'), ('确诊', 'v'), ('病例', 'n'), ('至少', 'd'), ('增加', 'v'), ('了', 'u'), ('20400', 'm'), ('例', 'q'), (',', 'w'), ('死亡', 'v'), ('病例', 'n'), ('至少', 'd'), ('增加', 'v'), ('了', 'u'), ('466', 'm'), ('例', 'q'), ('。', 'w'), ('目前', 't'), ('美国', 'ns'), ('疫情', 'n'), ('最为', 'd'), ('严重', 'a'), ('的', 'u'), ('仍', 'd'), ('是', 'v'), ('纽约州', 'ns'), (',', 'w'), ('共有', 'v'), ('确诊', 'v'), ('病例', 'n'), ('至少', 'd'), ('52410', 'Vg'), ('例', 'n'), ('。', 'w'), ('此外', 'c'), (',', 'w'), ('新', 'a'), ('泽', 'nr'), ('西州', 'nr'), ('有', 'v'), ('确诊', 'v'), ('病例', 'n'), ('11124', 'm'), ('例', 'q'), (',', 'w'), ('加利福尼亚州', 'ns'), ('有', 'v'), ('5065', 'm'), ('例', 'q'), (',', 'w'), ('密歇', 'e'), ('根州', 'e'), ('有', 'v'), ('4650', 'y'), ('例', 'n'), (',', 'w'), ('马塞', 'ns'), ('诸塞州', 'Tg'), ('有', 'v'), ('4257', 'Tg'), ('例', 'n'), (',', 'w'), ('华盛顿', 'ns'), ('州', 'n'), ('有', 'v'), ('4008', 'Bg'), ('例', 'n'), ('。', 'w')]

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。