中科院分词pynlpir使用说明续(翻译)

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-31 19:14   73   0

今天继续来写pynlpir分词库的后续pynlpir.nlpir(以下简称nlpir)。nlpir比pynlpir的功能相似,更易于使用,下面开始介绍。


初始化

pynlpir.nlpir.Init(data_dir, encoding=GBK_CODE, license_code=None)

使用Init方法初始化函数。

  • data_dirstr) - NLPIR数据文件夹的父文件夹的路径。 PACKAGE_DIR可用于此目的。
  • encodingint) - NLPIR应该期望的编码。 此参数应使用GBK_CODEUTF8_CODEBIG5_CODEGBK_FANTI_CODE
  • license_codestr) - 无限使用的许可证代码。大多数用户不需要使用它。

需要说明的是,在我自己运行的代码中,发现如下问题:

from pynlpir import nlpir
d = '大使馆sgbns-asfdsas会后,大saersu馆saa s-asdfgas会后,大使馆sads asdas会后,大使馆sads asdas会后,大使馆sads-asdas会后.'
s = '大使馆sgbns-asfdsas会后,大saersu馆saa s-asdfgas会后,大使馆sads asdas会后,大使馆sads asdas会后,大使馆sads-asdas会后.'.encode('utf-8')
nlpir.Init(nlpir.PACKAGE_DIR.encode('UTF-8'),nlpir.UTF8_CODE)
c= nlpir.ParagraphProcess(s,True).decode('utf-8')
print(nlpir.PACKAGE_DIR)
print(type(nlpir.PACKAGE_DIR))
print(c)

'''
E:\Program\Anaconda3\lib\site-packages\pynlpir
<class 'str'>
大使馆/n sgbns/n -/wp asfdsas/n 会后/t ,/wd 大/a saersu/n 馆/ng saa/n   s/vshi -/wp asdfgas/n 会后/t ,/wd 大使馆/n sads/n   asdas/n 会后/t ,/wd 大使馆/n sads/n   asdas/n 会后/t ,/wd 大使馆/n sads/n -/wp asdas/n 会后/t ./wj 

'''

第一点,nlpir.PACKAGE_DIR返回的是str类型,Init函数中要求的也是str类型,但是直接运行会报错,提示参数类型不对,我试了一下将其编码为utf-8格式就可以了,不知道是什么情况,有类似情况的小伙伴可以下方留言我。

第二点,Init函数的三个参数都必须填全才可以顺利运行,我想吐槽一下,为啥一定要把参数都填全才可以,我记得以前看过参数不填会有默认值的,可能是有某些我不知道的事情,小伙伴可以给我评论告诉我。

退出

pynlpir.nlpir.Exit()

使用该方法可以退出函数并释放内存。

分词

下面讲最重要的内容,分词。

pynlpir.nlpir.ParagraphProcess(s, pos_tagging=True)
  • sstr) - 要处理的中文文本。
  • pos_taggingbool) - 是否使用分段词返回词性标签。

这里需要注意的是两个参数也都要填全,不然会报错。

处理文本文件

pynlpir.nlpir.FileProcess(source_filename, result_filename, pos_tagging=True)

这个函数的意思是将源文件夹中的文本全部分词,输入到对应的目标文件夹中,并返回分词所消耗的时间,但是我自己测试了一下,虽然跑通了但是并没有分词,也没有返回时间,不知道是哪里操作错误了。

输入用户字典

pynlpir.nlpir.ImportUserDict(filename)

输入用户字典路径,导入字典并返回成功导入的词条的数目。

添加用户词语

pynlpir.nlpir.AddUserWord(word)

将词语加到用户词典中去,成功返回1,失败返回0.

保存用户字典

pynlpir.nlpir.SaveTheUsrDic()

保存成功返回1,否则返回0.

删除用户词语

pynlpir.nlpir.DelUsrWord(word)

如果不存在对应词语返回-1。

获取关键词

pynlpir.nlpir.GetKeyWords(s, max_words=50, weighted=False)

获取文本中的关键词:

  • sstr) - 要处理的中文文本。
  • max_wordsint) - 要返回的关键字的最大数量。
  • 加权bool) - 是否返回关键词'权重。

获取一个文件夹中所有文件的关键词

pynlpir.nlpir.GetFileKeyWords(filename, max_words=50, weighted=False)
  • filenamestr) - 要处理的文件夹。
  • max_wordsint) - 要返回的关键字的最大数量。
  • 加权bool) - 是否返回关键词'权重。

获取文本中的新词

pynlpir.nlpir.GetNewWords(s, max_words=50, weighted=False)
  • sstr) - 要处理的中文文本。
  • max_wordsint) - 要返回的新单词的最大数量。
  • weightedbool) - 是否返回新单词的权重。

获取一个文件夹中所有文件的新词

pynlpir.nlpir.GetFileNewWords(filename, max_words=50, weighted=False)

计算文本指纹

pynlpir.nlpir.FingerPrint(s)

文本指纹可用于去重和过滤,详见https://blog.csdn.net/wh_springer/article/details/52177236

选择使用哪种语音映射

pynlpir.nlpir.SetPOSmap(pos_map)

可以从ICT_POS_MAP_FIRST, ICT_POS_MAP_SECOND, PKU_POS_MAP_FIRST, PKU_POS_MAP_SECOND.中选择。

初始化一个新的词标签

pynlpir.nlpir.NWI_Start()

加入文本中的词语

pynlpir.nlpir.NWI_AddFile(filename)

给新的词标签添加内存

pynlpir.nlpir.NWI_AddMem(filename)

终止新单词标识。释放内存和资源

pynlpir.nlpir.NWI_Complete()

返回新词标签的结果

pynlpir.nlpir.NWI_GetResult(weight)

weightbool) - 是否在结果中包含单词权重。

将新的被标记的词加入到用户词典中

pynlpir.nlpir.NWI_Results2UserDict()

该功能一定要在NWI_Conplete()之后使用。


大体上就是这样,感觉有用的也就是前面的部分,后面的初学者应该用不上,也存在很多问题没有解决,以后慢慢再看。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP