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

來源:互聯網
上載者:User

標籤:

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

南京理工大學 電腦科學與工程學院  

RuiXia_NUSTM課題組 ChaoLiu([email protected])

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

主要講解內容:

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 *

 

Python調用中科院NLPIR(ICTCLAS2015)詳解 劉超([email protected])

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.