Python調用中科院NLPIR(ICTCLAS2015)詳解 劉超(lch614730@163.com)


Python調用中科院NLPIR(ICTCLAS2015)詳解

南京理工大學 計算機科學與工程學院  

RuiXia_NUSTM課題組 ChaoLiu(lch614730@163.com)

-------------------------

主要講解內容:

1. NLPIR版本及下載

2. 代碼問題

3. userdict的使用問題

-------------------------

 友情提示:如果是swig問題,自己處理。首先下載swig,swig可以幫助我們將C或者C++編寫的DLL或者SO文件綁定到包括Python在內的多種語言。Windows下將安裝包下載到一定目錄下將該目錄加入環境變量的path中即可使用swig(當然也可以輸入完整的路徑來使用swig)。可以打開命令行窗口,在里面輸入swig,如果出現“Must specify an input file. Use -help for available options.”則表示一切順利。

 

1.NLPIR(ICTCLAS2015)下載地址:http://ictclas.nlpir.org/downloads,目錄如下:

 

 

其中【組合包(本人臨時建立文件,所需要的僅是本文件夾里面的內容)】中的內容需要:

其中: bin文件夾(自己新建的)下包括:importuserdict文件夾下zip解壓文件。Data文件夾為上級目錄的Data文件夾所有內容,nlpir、__init__.py、nlpir.py為sample\pythonsample文件夾下文件。

 

2. A將【組合包】文件夾下的所有內容放入你自己的項目當中,注意修改nlpir.py代碼中dll的路徑,如下圖紅圈所示:其中32bit還是64bit是由你自己的python.exe版本決定,而不是你自己的操作系統。

B、為了分詞、詞性標注、分隔符便於編程,可將nlpir.py代碼中的Seg函數改寫成:

------------------------------------------------------------------------------------------

'''
Chao Liu(njust NUSTM RuiXia)
'''
def NLPIR_Seg_Pos(paragraph,flag = True,echo = '/'):
# NLPIR 分詞 Parameters(paragraph:字符串 ,flag:是否標注詞性,echo:詞性分割符)
para_seg_pos = ''
atoms = segment(paragraph)
for a in atoms:
if len(a.sPOS) < 1: continue
i = paragraph[a.start: a.start + a.length]#.decode('utf-8')#.encode('ascii')
#yield (i, a.sPOS)
if flag == False :
para_seg_pos = para_seg_pos + (str(i) + ' ')
else:
para_seg_pos = para_seg_pos + (str(i)+ echo + a.sPOS +' ')

return para_seg_pos.rstrip()

-----------------------------------------------------------------------------------------

 

3. userdict用戶字典的導入問題,下載的zip包中,有一個文件夾importuserdict,里面有個readme.txt文件,具體操作請看:

采用附件的小工具,可以實現脫機導入用戶詞典;具體步驟如下:
1.與分詞Data文件夾同級建立 bin目錄,下面建立二級目錄ICTCLAS2014;
2.將附件的內容解壓縮后放在ICTCLAS2014下面;
3.編輯bin/ICTCLAS2014下面的userdic.txt,這里放置用戶詞典與標注;
4.執行bin/ICTCLAS2014的批處理文件。即可導入用戶詞典到Data目錄下的field.pdat field.pos。
5.30萬詞條會划分更多的時間,可能需要2小時左右。

 

4.其他問題

如若py代碼中調用不同文件夾下的py程序,需在各級目錄中添加 __init__.py文件,里面無需存放任何代碼。

只需要在py開始添加python系統path,然后在導入文件py,例如:

 

import sys

sys.path.append('libsvm-3.20/python')       //可添加絕對路徑,也可以添加相對路徑。

from svmutil import *

 


免責聲明!

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



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