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'),'\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(smax_words=50weighted=False)

    print pynlpir.get_key_words('Python環境下NLPIR中文分詞系統使用攻略',2,True)

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM