python pynlpir中科院分词的使用

举报
红目香薰 发表于 2022/01/31 23:38:02 2022/01/31
【摘要】 ​中科院汉语分词系统是一个非常好用的分词工具,和结巴分词类似,但是比结巴分词功能更加强大,而且更加个性化。中科院分词的使用步骤如下:导入中科院分词模块 初始化pynlpir分词库。在pynlpir库中提供了open()函数用来初始化pynlpir分词库1、需要下载【pynlpir】库​2、【open()】函数介绍:open()函数的原型如下:pynlpir.open(data_dir=pyn...

中科院汉语分词系统是一个非常好用的分词工具,和结巴分词类似,但是比结巴分词功能更加强大,而且更加个性化。

中科院分词的使用步骤如下:

  1. 导入中科院分词模块 初始化pynlpir分词库。
  2. 在pynlpir库中提供了open()函数用来初始化pynlpir分词库

1、需要下载【pynlpir】库

2、【open()】函数介绍:

open()函数的原型如下:

pynlpir.open(data_dir=pynlpir.nlpir.PACKAGE_DIR, encoding=pynlpir.ENCODING, encoding_errors=pynlpir.ENCODING_ERRORS, license_code=None)

参数说明如下:

data_dir:表示分词数据目录对应的绝对路径,默认值为pynlpir.nlpir.PACKAGE_DIR。

encoding:表示针对中文的编码格式,默认为utf_8,也可以为gbk、big5。

encoding_errors:表示所需的编码错误处理方案,默认为strict,也可以为ignore、replace。

license_code:表示使用中科院分词的许可证编码,仅商业用户需要

import pynlpir  #导入pynlpir库

pynlpir.open()  #初始化pynlpir分词库
content = "真正的程序员的程序不会在第一次就正确运行,但是他们愿意守着机器进行若干个小时的调试改错。"
#获取语句中的关键字
key_words = pynlpir.get_key_words(content, weighted=False)
for word in key_words:
    print (word)
pynlpir.close() #关闭pynlpir,释放内存

3、【segment()】函数介绍:

中科院分词提供了segment()函数进行分词,并返回分词后的列表。函数原型如下:

【pynlpir.segment(s, pos_tagging=True, pos_names='parent', pos_english=True)】

参数说明如下:

s:需要分词的中文,必须是Unicode编码或者UTF-8编码的字符串。

pos_tagging:表示是否包含部分的词性标注,值为False时表示只做分词,而不显示词性(形容词、名词等)。

pos_names:参数在pos_tagging为True时才生效,只能是parent、child和all三个值,默认是parent,表示获取该词性的最顶级词性,child表示获取该词性的最具体的信息,all表示获取该词性相关的所有词性信息。

pos_english:表示词性标注结果是否以中文的形式显示,为False表示以中文的形式显示

import pynlpir  #导入pynlpir库
pynlpir.open()  #初始化pynlpir分词库
content = "真正的程序员的程序不会在第一次就正确运行,但是他们愿意守着机器进行若干个小时的调试改错。"
#不输出词性
words = pynlpir.segment(content,pos_tagging=False)
for word in words:
    print (word,"/")
print ("\n****输出词性****")
#获取分词处理后每个词语以及其最顶级的词性,并以中文输出词性
words = pynlpir.segment(content,pos_tagging=True, pos_names='parent', pos_english=False)
for word in words:
    print ("词:", word[0],"词性:", word[1])
pynlpir.close() #关闭pynlpir,释放内存

4、【get_key_words()】函数介绍:

函数原型:【pynlpir.get_key_words(s ,max_words=50, weighted=False)】

参数说明如下:

s:需要分词的中文,必须是Unicode编码或者UTF-8编码的字符串。

max_words:表示最多能够查找的关键字,默认为50。

weighted:表示是否返回关键字的权重,默认不返回

import pynlpir  #导入pynlpir库
pynlpir.open()  #初始化pynlpir分词库
content = "真正的程序员的程序不会在第一次就正确运行,但是他们愿意守着机器进行若干个小时的调试改错。"
#不输出权重
words = pynlpir.get_key_words(content,weighted=False)
for word in words:
    print (word)
print ("\n****关键字带权重****")
words = pynlpir.get_key_words(content,max_words=50,weighted=True)
for word in words:
    print ("关键字:",word[0],"权重:",word[1])
pynlpir.close() #关闭pynlpir,释放内存

5、实际使用:

在实际使用中,往往需要针对某一段文字统计其中关键字出现的次数。

’通过对次数的统计可以知道哪些关键字经常出现。

使用中科院分词进行关键字统计的步骤如下: 定义一个字典对象,用来保存关键字和其出现的次数。初始化该列表数据,关键字出现的次数设置为初始值0。

使用get_key_words()函数获取关键字的列表数据。

使用segment()函数对该段文字进行分词处理,从而得到返回的分词列表数据。 循环遍历分词列表数据,判断其中的元素是否属于关键字,如果属于关键字则将字典对象中对应关键字出现的次数加1

import pynlpir  #导入pynlpir库
pynlpir.open()  #初始化pynlpir分词库
content = "真正的程序员的程序不会在第一次就正确运行,但是他们愿意守着机器进行若干个小时的调试改错。"
wordDict = {}  #定义字典对象,保存关键字及出现的次数
key_words = pynlpir.get_key_words(content, weighted=False)  #获取关键字
for word in key_words:
    wordDict[word] = 0 
words = pynlpir.segment(content, pos_tagging=False, pos_english=False)
for word in words:
    if key_words.count(word) > 0:
        wordDict[word] = wordDict[word] + 1 #关键字次数加1
for item in wordDict:
    print (item,"出现次数为:",wordDict[item]) #输出关键字及出现的次数
pynlpir.close() #关闭pynlpir,释放内存

愿本文对你的文章分析能有一个非常有效的帮助。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。