设为首页 收藏本站
查看: 889|回复: 0

[经验分享] Python环境下NIPIR(ICTCLAS2014)中文分词系统使用攻略

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-30 15:32:36 | 显示全部楼层 |阅读模式
  一、安装
  官方链接:http://pynlpir.readthedocs.org/en/latest/installation.html
  官方网页中介绍了几种安装方法,大家根据个人需要,自行参考!我采用的是:
  Install PyNLPIR using easy_install:
  $ easy_install pynlpir
  二、使用NLPIR进行分词
  注:此处主要使用pynlpir.nlpir模块,该模块使用ctypes为NLPIR提供面向Python的接口,因此在调用NLPIR方法时,基本与调用其C接口是一样的。
       此处假设已导入模块:from pynlpir import nlpir
  1)NLPIR初始化
      nlpir.Init(nlpir.PACKAGE_DIR,nlpir.UTF8_CODE,None) ,其中三个参数:
            nlpir.PACKAGE_DIR,Data目录父目录的绝对路径(即指明在何处可找到Data目录),也可自行指定
            nlpir.UTF8_CODE,分词所使用的编码方式(NLPIR提供UTF-8,GBK,BIG5,GBK-FANTI四种编码),默认是GBK
            license_code,没什么特殊应用的话就默认为None
  2)设置词性标注集
      nlpir.SetPOSmap(pos_map)
             NLPIR官方提供四种词性标注集,具体参见官方API : http://pynlpir.readthedocs.org/en/latest/api.html
            词性标注集中FIRST和SECOND的区别在于前者只采用一级标注,后者同时采用二级标注,如对于“是”,一级标注词性为/v,二
      级标注词性为/vshi
  3)段落分词
      nlpir.ParagraphProcess(str,int)
            str: 待分词段落
            int: 0表示不加词性标注,1则加词性 (注意此处官方API调用参数可能有误)
            return: 分词后内容
  4)文档分词
      nlpir.FileProcess(sFile,rFile,isPOS)
            sFile:待分词文档(文档路径)
            rFile:分词结果文档
            isPOS: 0表示不加词性标注,1则加词性 (注意此处官方API调用参数可能有误)
  5)导入用户字典
      nlpir.ImportUserDict(dict_path)
            dict_path: 字典路径
  nlpir.AddUserWord('卡卡') ,将'卡卡'这个词加入用户字典,返回1表示成功
  nlpir.SaveTheUsrDic() , 将用户字典内容输出到磁盘,返回1表示成功
  nlpir.DelUsrWord('卡卡') , 删除用户字典的指定词,返回-1表示字典中没有该词,否则返回值表示该词在字典中位置
  6)退出
      nlpir.Exit() :释放内存资源
  7)获取关键词或新词
      获取关键词或者新词对段落和文档有各自的方法调用,但参数都一致,即传入待获取的内容,最多获取的词数,以及是否输出词权重信息
  三、简易代码示例


DSC0000.gif DSC0001.gif


1 from pynlpir import nlpir
2
3 class WordSegment(object):
4     
5     def __init__(self):
6         '''初始化nlpir资源'''
7         if not nlpir.Init(nlpir.PACKAGE_DIR,nlpir.UTF8_CODE,None):
8             print 'Initialize NLPIR failed'
9             exit(-11111)
10
11     def fileProcess(self,sFile,rFile,isPOS):
12         '''
13         对文档分词:sFile,待分词文档路径
14                    rFile,分词结果文档路径
15                    isPOS,是否标注词性(1 是,0 否)
16         '''
17         nlpir.SetPOSmap(nlpir.ICT_POS_MAP_SECOND)
18         if nlpir.FileProcess(sFile,rFile,isPOS)==0:
19             print 'FileProcess failed.Traceback to module:word_segmentation.py,function:fileProcess()'
20             exit(-111111)
21     
22     def import_userdict(self,dict_path):
23         nlpir.ImportUserDict(dict_path)
24         
25     def finalizeR(self):
26         '''释放nlpir资源'''
27         nlpir.Exit()
NLPIR中文分词简单示例  四、pynlpir模块方法
  1)pynlpir._get_pos_name(code, name='parent', english=True)
  获取某个词性相关信息
  code: 词性
  name:分为'parent'(获取该词性的最顶级词性,默认为'parent'),'child'(获取该词性最具体的信息),'all'(获取该词性相关的所有词性
  信息,相当于从其顶级词性到该词性的一条路径)
  english:默认为True,表示是否以英文输出信息
  以'nsf'词性为例,
  



print pynlpir._get_pos_name('nsf',name='parent',english=True) # noun
print pynlpir._get_pos_name('nsf',name='child',english=True) # transcribed toponym
print pynlpir._get_pos_name('nsf',name='all',english=False) # 名词:地名:音译地名

  2) pynlpir.open(data_dir=nlpir.PACKAGE_DIR, encoding=ENCODING, license_code=None)
  相当于pynlpir.nlpir.Init()方法
  3) pynlpir.close()
  相当于pynlpir.nlpir.Exit()方法
  4) pynlpir.segment(s, pos_tagging=True, pos_names='parent', pos_english=True)
  





1 r_list= pynlpir.segment('Python环境下NLPIR中文分词系统使用攻略', pos_tagging=True, pos_names='child', pos_english=True)
2     for w in r_list:
3         print w[0].encode('gbk'),'\t',w[1]
4 '''
5 Python     other proper noun
6 环境       noun
7 下             noun of locality
8 NLPIR     noun
9 中文             other proper noun
10 分词       verb
11 系统      noun
12 使用             verb
13 攻             verb
14 略             adverb
15 '''
segment示例  5)pynlpir.get_key_words(s, max_words=50, weighted=False)
  print pynlpir.get_key_words('Python环境下NLPIR中文分词系统使用攻略',2,True)
  # [(u'NLPIR', 3.75), (u'Python', 3.0)]

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-145515-1-1.html 上篇帖子: 再学python类(终结篇) 下篇帖子: python 核心编程第六章课后题自己做的答案
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表