哈工大語言云(LTP)本地安裝使用及Python呼叫
轉載:http://blog.csdn.net/churximi/article/details/51174182
備註:本文實驗環境為64位win7系統,32位python2.7.11
1.LTP下載
Windows系統直接下載編譯好的二進位制檔案ltp-3.3.1-win-x86.zip,不用管編譯。
2.資料夾放置
(1)新建一個專案資料夾:D:\myprojects\LTP;
(2)將模型檔案解壓後的ltp_data資料夾放入專案資料夾;
(3)將ltp-3.3.1-win-x86.zip解壓後的dll、exe檔案全部拷入專案資料夾。
最後資料夾列表如下:
說明:因為內部預設路徑的關係,這樣放置可以使ltp_data資料夾處在預設路徑上。
3.Python使用ltp_test
LTP提供的模型包括:(在ltp_data資料夾)
cws.model 分句模型,單檔案
pos.model 詞性標註模型,單檔案
ner.model命名實體識別模型,單檔案
parser.model依存句法分析模型,單檔案
srl_data/語義角色標註模型,多檔案(資料夾srl)
主要引數:執行緒數、最終步驟、輸入檔案路徑、模型路徑、詞典路徑等。
具體可通過CMD執行ltp_test.exe檢視。
python程式簡單呼叫:
[python] view plain copy print?- # -*- coding: utf-8 -*-
- """
- 學習:python執行CMD命令command,可以用&連線多個命令
- 功能:python呼叫CMD命令來執行本地LTP功能
- 時間:2016年4月13日 19:07:41
- """
- import os
- project_path = "d:\\myprojects\\LTP"# 專案資料夾目錄
-
# 可設定ltp_test、(cws、pos、par、ner)_cmdline,但是注意各自能用的引數,沒有的引數請置空""
- model_exe = "ltp_test"# 又如cws_cmdline
- threads_num = " --threads "+str(3) # 更改執行緒數
- last_stage = " --last-stage "+"all"# 最終步驟,可設定ws、pos、ner、dp、srl、all
- input_path = " --input "+"d:\\myprojects\\LTP\\file\\test.txt"# 輸入檔案
- seg_lexicon = "" # 分詞使用者詞典
- pos_lexicon = "" # 詞性標註使用者詞典
- output_path = "D:\\myprojects\\LTP\\result\\out.txt"# 輸出檔案
- command = "cd "+project_path+" & "+model_exe+threads_num+input_path+last_stage+" > "+output_path
- os.system(command)
4.Python使用xxx_cmdline
(1)cws_cmdline :分詞命令列
(2)pos_cmdline :詞性標註命令列
(3)par_cmdline :句法分析命令列
(4)ner_cmdline :命名實體識別命令列
python程式簡單呼叫(以cws_cmdline為例,其他類似,引數略不同)
[python] view plain copy print?- # -*- coding: utf-8 -*-
- """
- 功能:LTP本地分詞cws_cmdline,輸入文字需要每行一句。(不能自動分句)
- 時間:2016年4月13日 20:22:39
- """
- import os
- project_path = "d:\\myprojects\\LTP"# 專案資料夾目錄
- model_exe = "cws_cmdline"# 分詞模組,相當於ltp_test的last_stage=ws,但是輸出格式不同
- threads_num = " --threads "+str(3) # 更改執行緒數
- input_path = " --input "+"d:\\myprojects\\LTP\\file\\test.txt"# 輸入檔案
- seg_lexicon = " --segmentor-lexicon "+"D:\\myprojects\\LTP\\file\\seg_lexicon.txt"# 分詞使用者詞典
- output_path = "D:\\myprojects\\LTP\\result\\out.txt"# 輸出檔案
- command = "cd "+project_path+" & "+model_exe+threads_num+input_path+seg_lexicon+" > "+output_path
- os.system(command)
5.注意事項
(1)長度限制:為了防止輸入過長句子對穩定性造成影響,限制輸入字數少於1024字,分詞結果少於256詞。
(2)編碼:統一採用UTF-8
6.使用心得
(1)ltp_test輸出結果只有xml格式;(線上ltp-cloud api呼叫可以返回多種格式)
(2)ltp_test可以自動分句,遇到新的文字段落時,句子編號重新會從0開始(所以已經分好句的文字,輸出結果中的句子編號都是0)
(3)單獨使用某個功能模組時,需要事先分好句或者分好詞;(不同分析之間存在的依賴關係)
(4)#、&、+等特殊符號不會影響LTP本地分析;(線上ltp-cloud api呼叫會有影響);
(5)cws_cmdline分詞模組輸出結果為plain格式,分詞間隔用的是TAB製表符;
(6)pos_cmdline詞性標註模組輸出結果為plain格式,結果用TAB製表符分隔;詞與詞性之間以下劃線(_)連線。
(7)分詞使用者詞典問題:官方說“可以設定使用者詞典,但是ltp的分詞模組並非採用詞典匹配的策略,外部詞典以特徵方式加入機器學習演算法,並不能保證所有的詞都是按照詞典裡的方式進行切分。”
例子:“C++”、“網際網路+”這樣的詞,加入詞典還是不能切分出來。
(8)一定要注意編碼問題:使用者詞典也要用UTF-8無BOM格式編碼,如果是UTF-8格式編碼,將導致第一行的詞不能被正確識別(因為存在位元組字首)。