哈工大語言云(LTP)本地安裝使用及Python調用

備註:本文實驗環境爲64位win7系統,32位python2.7.11

哈工大LTP官方主頁:http://ltp.readthedocs.org/zh_CN/latest/index.html


1.LTP下載

(1)LTP項目文件ltp-3.3.1-win-x86.zip

(2)LTP模型文件3.3.1(2016年4月13日前)

下載地址參考:http://ltp.readthedocs.org/zh_CN/latest/install.html

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)


    ltp_test是一個整合LTP中各模塊的命令行工具。它完成加載模型,依照指定方法執行分析的功能。

    主要參數:線程數、最終步驟、輸入文件路徑、模型路徑、詞典路徑等。

    具體可通過CMD運行ltp_test.exe查看。


python程序簡單調用:

# -*- 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爲例,其他類似,參數略不同)

# -*- 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格式編碼,將導致第一行的詞不能被正確識別(因爲存在字節前綴)。

    

發佈了55 篇原創文章 · 獲贊 272 · 訪問量 91萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章