Python环境下NIPIR(ICTCLAS2014)中文分词系统即PyNLPIR的使用

转载自:http://www.cnblogs.com/java-wgm/p/4224482.html

一、安装

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

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

三、简易代码示例

from pynlpir import nlpir

class WordSegment(object):
    
    def __init__(self):
        '''初始化nlpir资源'''
        if not nlpir.Init(nlpir.PACKAGE_DIR,nlpir.UTF8_CODE,None):
            print 'Initialize NLPIR failed'
            exit(-11111)

    def fileProcess(self,sFile,rFile,isPOS):
        '''
        对文档分词:sFile,待分词文档路径
                   rFile,分词结果文档路径
                   isPOS,是否标注词性(1 是,0 否)
        '''
        nlpir.SetPOSmap(nlpir.ICT_POS_MAP_SECOND)
        if nlpir.FileProcess(sFile,rFile,isPOS)==0:
            print 'FileProcess failed.Traceback to module:word_segmentation.py,function:fileProcess()'
            exit(-111111)
    
    def import_userdict(self,dict_path):
        nlpir.ImportUserDict(dict_path)
        
    def finalizeR(self):
        '''释放nlpir资源'''
        nlpir.Exit()

NLPIR中文分词简单示例

四、pynlpir模块方法

1)pynlpir._get_pos_name(codename='parent'english=True)

    获取某个词性相关信息

    code: 词性

    name:分为'parent'(获取该词性的最顶级词性,默认为'parent'),'child'(获取该词性最具体的信息),'all'(获取该词性相关的所有词性

             信息,相当于从其顶级词性到该词性的一条路径)

    english:默认为True,表示是否以英文输出信息

    以'nsf'词性为例,

   

1
2
3
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)

   

r_list= pynlpir.segment('Python环境下NLPIR中文分词系统使用攻略', pos_tagging=True, pos_names='child', pos_english=True)
    for w in r_list:
        print w[0].encode('gbk'),'\t',w[1]
'''
Python     other proper noun
环境       noun
下             noun of locality
NLPIR     noun
中文             other proper noun
分词       verb
系统      noun
使用             verb
攻             verb
略             adverb
'''

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)]

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值