|
今天继续来写pynlpir分词库的后续pynlpir.nlpir(以下简称nlpir)。nlpir比pynlpir的功能相似,更易于使用,下面开始介绍。
初始化
pynlpir.nlpir.Init(data_dir, encoding=GBK_CODE, license_code=None)
使用Init方法初始化函数。
需要说明的是,在我自己运行的代码中,发现如下问题:
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)
- s(str) - 要处理的中文文本。
- pos_tagging(bool) - 是否使用分段词返回词性标签。
这里需要注意的是两个参数也都要填全,不然会报错。
处理文本文件
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)
获取文本中的关键词:
- s(str) - 要处理的中文文本。
- max_words(int) - 要返回的关键字的最大数量。
- 加权(bool) - 是否返回关键词'权重。
获取一个文件夹中所有文件的关键词
pynlpir.nlpir.GetFileKeyWords(filename, max_words=50, weighted=False)
- filename(str) - 要处理的文件夹。
- max_words(int) - 要返回的关键字的最大数量。
- 加权(bool) - 是否返回关键词'权重。
获取文本中的新词
pynlpir.nlpir.GetNewWords(s, max_words=50, weighted=False)
- s(str) - 要处理的中文文本。
- max_words(int) - 要返回的新单词的最大数量。
- weighted(bool) - 是否返回新单词的权重。
获取一个文件夹中所有文件的新词
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)
weight(bool) - 是否在结果中包含单词权重。
将新的被标记的词加入到用户词典中
pynlpir.nlpir.NWI_Results2UserDict()
该功能一定要在NWI_Conplete()之后使用。
大体上就是这样,感觉有用的也就是前面的部分,后面的初学者应该用不上,也存在很多问题没有解决,以后慢慢再看。 |