zoukankan      html  css  js  c++  java
  • Python环境下NIPIR(ICTCLAS2014)中文分词系统使用攻略

    一、安装

    官方链接: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)获取关键词或新词

        获取关键词或者新词对段落和文档有各自的方法调用,但参数都一致,即传入待获取的内容,最多获取的词数,以及是否输出词权重信息

    三、简易代码示例

     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(codename='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_DIRencoding=ENCODINGlicense_code=None)

        相当于pynlpir.nlpir.Init()方法

    3) pynlpir.close()

        相当于pynlpir.nlpir.Exit()方法

    4) pynlpir.segment(spos_tagging=Truepos_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'),'	',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(smax_words=50weighted=False)

        print pynlpir.get_key_words('Python环境下NLPIR中文分词系统使用攻略',2,True)

        # [(u'NLPIR', 3.75), (u'Python', 3.0)]

  • 相关阅读:
    移动开发 Native APP、Hybrid APP和Web APP介绍
    urllib与urllib2的学习总结(python2.7.X)
    fiddler及postman讲解
    接口测试基础
    UiAutomator2.0 和1.x 的区别
    adb shell am instrument 命令详解
    GT问题记录
    HDU 2492 Ping pong (树状数组)
    CF 567C Geometric Progression
    CF 545E Paths and Trees
  • 原文地址:https://www.cnblogs.com/java-wgm/p/4224482.html
Copyright © 2011-2022 走看看