1.中文分词概念
中文分词(Chinese Word Segmentation) 指的是将一个汉字序列切分成一个一个单独的词。分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。
2.现有的的中文分词工具
中科院计算所NLPIR http://ictclas.nlpir.org/nlpir/
ansj分词器 https://github.com/NLPchina/ansj_seg
哈工大的LTP https://github.com/HIT-SCIR/ltp
清华大学THULAC https://github.com/thunlp/THULAC
斯坦福分词器 https://nlp.stanford.edu/software/segmenter.shtml
Hanlp分词器 https://github.com/hankcs/HanLP
结巴分词 https://github.com/yanyiwu/cppjieba
KCWS分词器(字嵌入+Bi-LSTM+CRF) https://github.com/koth/kcws
ZPar https://github.com/frcchang/zpar/releases
IKAnalyzer https://github.com/wks/ik-analyzer
3.认识、使用中文分词包
3.1使用中科院计算所NLPIR语义分析系统
打开NLPIR大数据搜索与挖掘共享平台
点击“开始分析”就可以得到分析结果
此外,还有实体抽取、词频统计、文本分类、情感分析等对分词结果的不同查看方式。
3.1.1使用总结
使用中科院计算所NLPIR语义分析系统比较简单,图形化的在线操作方式简单易上手,并且分词结果是符合我们在日常生活中的使用习惯的,分词结果能够被我们接受。在本次分析中,发现了词典中没有收录的新词:“毕业论文”、“信息管理”和“全体老师”。
3.2使用jieba中文分词包
3.2.1 安装jieba
安装相应的包:通过指令语句安装jieba分词包,代码:
pip install jieba
3.2.2 使用jieba中文分词
- 分词cut
jieba.cut : 方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型
jieba.cut_for_search : 方法接受两个参数:需要分词的字符串;是否使用 HMM 模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细
待分词的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。注意:不建议直接输入 GBK 字符串,可能无法预料地错误解码成 UTF-8
jieba.cut 以及 jieba.cut_for_search 返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode),或者用jieba.lcut 以及jieba.lcut_for_search 直接返回 list
jieba.Tokenizer(dictionary=DEFAULT_DICT) : 新建自定义分词器,可用于同时使用不同词典。jieba.dt 为默认分词器,所有全局分词相关函数都是该分词器的映射。
例子
-
新建一个demo.py文件
- 执行
python demo.py
关键词提取
基于TF-IDF(term frequency-inverse document frequency)算法的关键词抽取(逆文档词频)
import jieba.analyse
jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
- sentence: 为待提取的文本
- topK: 为返回几个TF/IDF权重最大的关键词,默认值为20
- withWeight: 为是否一并返回关键词权重值,默认值为False
-
allowPOS: 仅包括指定词性的词,默认值为空,即不筛选
-
运行结果
使用jieba对txt文件进行中文分词
我选用的txt文件是之前爬取到的公管学院官网上面的新闻。
此外,经过事先的查询,由于存在“停用词”,在进行分词的时候可能会扰乱结果,所以在网上下载了停用词表。
代码:
import jieba.analyse
path = '/home/IR02LJC/jieba/ggnews .txt'
file_in = open(path, 'r')
content = file_in.read()
try:
jieba.analyse.set_stop_words('/home/IR02LJC/jieba/停用词表.txt')
tags = jieba.analyse.extract_tags(content, topK=100, withWeight=True)
for v, n in tags:
#权重是小数,为了凑整,乘了一万
print(v + '\t' + str(int(n * 10000)))
finally:
file_in.close()
运行结果显示如下:
[IR02LJC@VM_0_10_centos jieba]$ python demo.py
Building prefix dict from the default dictionary ...
Loading model from cache /tmp/jieba.cache
Loading model cost 0.956 seconds.
Prefix dict has been built succesfully.
我院 1127
学院 961
同学 920
教授 797
2017 795
公共 721
老师 685
四川大学 671
管理 581
2016 506
专业 385
院长 335
讲座 306
姜晓萍 305
研究 262
交流 259
学生 256
社会工作 255
师生 254
副教授 246
研究生 245
发布 239
2015 235
活动 233
大学 230
管理系 224
治理 223
本次 221
学习 219
学术 219
时间 213
MPA 205
工作 199
社会 189
教育 185
哲学 185
发展 183
档案 179
行政 178
社会保障 175
参加 171
中国 169
介绍 167
建设 164
教师 163
举办 162
课程 162
实践 161
论坛 157
哲学系 156
书记 156
合作 155
社会学 154
学科 153
主题 151
十九 151
2018 144
精神 143
信息资源管理 135
会议 130
实习 122
报告 120
下午 119
代表 117
项目 116
2014 115
本科生 114
创新 114
学科建设 114
成功 114
讨论 112
博士 111
发言 111
30 108
国际 107
云贵 107
图书馆 106
研讨会 106
学会 105
教学 104
城市 104
热烈 101
招生 101
成都 100
07 100
主持 99
评估 97
理论 97
分享 96
教职工 96
高校 96
参观 96
见面会 95
本科 94
团队 92
校区 92
同志 91
全国 91
成都市 90
服务 90
- 词云
得到分词结果之后,还可以利用在线词云生成工具TAGUL制作词云。
参考链接:https://www.jianshu.com/p/17b48b651d79
https://blog.csdn.net/sinat_34022298/article/details/75943272
https://blog.csdn.net/shijiebei2009/article/details/39696571
https://blog.csdn.net/tracydragonlxy/article/details/79014770