当前位置:   article > 正文

自然语言处理:分词(断词)与关键词提取方法(一)_中文断词技术

中文断词技术

自然语言处理:scrapy爬取关键词信息(二)
自然语言处理:问答语料生成词汇表,词转向量(三)

1 分词工具

  • jieba
pip/pip3 install jieba
  • 1
  • pynlpir
pip/pip3 install pynlpir
  • 1

2 jieba分词

  • Demo
import jieba

#use jieba cut words
str = "我是最懂你的聊天机器人小辛!"
#分词
segWords_allmode = jieba.cut(str,cut_all=True)
segWords_accuratemode = jieba.cut(str,cut_all=False)
segWords_defaultmode = jieba.cut(str)
segWords_searchenginemode = jieba.cut_for_search(str)
#class generator
print(type(segWords_allmode))
#输出结果转为string类型,用“/”隔开
allmode = "/".join(segWords_allmode)
accmode = "/".join(segWords_accuratemode)
defaultmode = "/".join(segWords_defaultmode)
searchmode = "/".join(segWords_searchenginemode)
#class str
print(type(allmode))
#分词结果容器:list
segResults = []
# class list
print(type(segResults))
#添加分词结果
segResults.append(allmode)
segResults.append(accmode)
segResults.append(defaultmode)
segResults.append(searchmode)
#输出结果
print("全模式分词结果:"+segResults[0])
print("精确模式分词结果:"+segResults[1])
print("默认模式分词结果:"+segResults[2])
print("搜索引擎分词结果:"+segResults[3])
#list转为string
outputResults = "".join(segResults)
# class str
print(type(outputResults))
#保存结果值segResults.txt中
output = open('segResults.txt','w',encoding='utf-8')
#save results in segResults.txt
# print(segResults,file = output)
output.write(outputResults)
output.close()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • Result
全模式分词结果:我/是/最/懂/你/的/聊天/天机/机器/机器人/小/辛//
精确模式分词结果:我/是/最/懂/你/的/聊天/机器人/小辛/!
默认模式分词结果:我/是/最/懂/你/的/聊天/机器人/小辛/!
搜索引擎分词结果:我/是/最/懂/你/的/聊天/机器/机器人/小辛/!
  • 1
  • 2
  • 3
  • 4

3 pynlpir

3.1 分词(断词)

  • 函数
    pynlpir.segment(s, pos_tagging=True, pos_names=‘parent’, pos_english=True)

  • 参数描述

序号参数描述
1s待分割的中文文本,编码为Unicode或UTF-8的字符串
2pos_taggingbool,设置是否包含语音标记,默认True,即是否显示词性
3pos_names返回发音部分的类型名称,有三种:parent,child和all,
parent为通用名称
child为特定名称
all返回全部名称
4pos_englishbool,设置返回发音部分名称的语言True为英语,False为汉语
  • Demo
import pynlpir

s = "我是一个大坏蛋"
# open API
pynlpir.open()
# segmention word
segments = pynlpir.segment(s, pos_tagging=True, pos_names='all', pos_english=False)
print("Type of segmention words: {}".format(type(segments)))
print("Segmention words: {}".format(segments))
print("分词", '\t', 'parent:child')
for segment in segments:
	print(segment[0], '\t', segment[1])
# close API
pynlpir.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • Result
Type of segmention words: <class 'list'>
Segmention words: [('我', '代词:人称代词'), ('是', '动词:动词"是"'), ('一个', '数词:数量词'), ('大', '形容词'), ('坏蛋', '名词')]
分词 	 parent:child
我 	     代词:人称代词
是 	     动词:动词"是"
一个 	 数词:数量词
大 	     形容词
坏蛋 	 名词
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • Analysis
    (1) 分词返回结果为list,列表中元素为tuple;
    (2) tuple由两部分组成:(token, pos),第一个元素为分词结果,第二个元素为词性,词性分为两部分:parent和child;

3.2 关键词提取

  • 函数
    pynlpir.get_key_words(s, max_words=50, weighted=False)

  • 参数描述

序号参数描述
1s待分割的中文文本,编码为Unicode或UTF-8的字符串
2max_words关键词的最大数量,默认为50个
3weightedbool,设置是否返回关键词在文本中的权重
  • Demo
import pynlpir

s = "我是一个大坏蛋"
# open API
pynlpir.open()
# extraction keywords
keywords = pynlpir.get_key_words(s, weighted=True)
print("Type of keywords: {}".format(type(keywords)))
print("Keywords: {}".format(keywords))
print("keywords",  'weights')
for keyword in keywords:
	# print("Type of keyword: {}".format(type(keyword)))
	# print("Keyword value: {}".format(keyword))
	print(keyword[0], '\t', keyword[1])
# close API
pynlpir.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • Result
Type of keywords: <class 'list'>
Keywords: [('坏蛋', 1.2), ('一个', 0.4)]
keywords weights
坏蛋 	 1.2
一个 	 0.4
  • 1
  • 2
  • 3
  • 4
  • 5

[参考文献]
[1]https://pynlpir.readthedocs.io/en/latest/api.html#pynlpir-nlpir
[2]http://www.shareditor.com/blogshow/?blogId=74


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/900557
推荐阅读
相关标签
  

闽ICP备14008679号