做者注:本教程旨在對哈工大LTP在github上的LTP4J(LTP的java版本)教程的補充,請結合如下參考網站一塊兒食用。html
參考網站:java
【1】哈工大語言技術平臺雲官網--LTP使用文檔git
http://ltp.readthedocs.io/zh_CN/latest/install.htmlgithub
【2】《編譯哈工大語言技術平臺雲LTP(C++)源碼及LTP4J(Java)源碼》apache
【3】哈工大語言技術平臺github—LTP4J使用文檔數組
https://github.com/HIT-SCIR/ltp4j/blob/master/doc/ltp4j-document-1.0.md網絡
簡介:哈工大語言技術平臺Language Technology Platform(LTP)是哈工大社會計算與信息檢索研究中心歷時十年開發的一整套中文語言處理系統。LTP制定了基於XML的語言處理結果表示,並在此基礎上提供了一整套自底向上的豐富並且高效的中文語言處理模塊(包括詞法、句法、語義等6項中文處理核心技術),以及基於動態連接庫(Dynamic Link Library, DLL)的應用程序接口,可視化工具,而且可以以網絡服務(Web Service)的形式進行使用。工具
(1)調用LTP進行分詞的完整代碼:TestSegment.javapost
(2)分析的句子:
「中國的神威太湖之光計算機被用於天氣預報、製藥研究和工業設計等領域。「
(3)運行結果:
(4)代碼分析:
①
Segmentor類加載本地接口segmentor_jni,加載cws.model分詞模型文件。
②
本地接口segmentor_jni裏的segment方法將分詞後的結果放在words鏈表。
(1)調用LTP進行詞性標註的完整代碼:TestPostag.java
(2)分析的句子:
「中國 的 神威 太湖 之 光 計算機 被 用於 天氣 預報 、 製藥 研究 和 工業 設計 等 領域 。「
(3)運行結果:
(4)代碼分析:
①
Postagger類加載本地接口postagger_jni,加載pos.model詞性標註模型。
②
定義String變量存放待詞性標註的句子,需先分好詞。
③
用「 」做分隔符將分詞後的每一個詞存進鏈表。
④
本地接口postagger_jni裏的postag方法將詞性標註後的結果放在postags鏈表。
(1)調用LTP進行依存句法分析的完整代碼:TestParser.java
(2)分析的句子:
「中國_ns 的_u 神威_n 太湖_ns 之_u 光_n 計算機_n 被_p 用於_v 天氣_n 預報_v 、_wp 製藥_v 研究_v 和_c 工業_n 設計_v 等_u 領域_n 。_wp 「
(3)運行結果:
(4)代碼分析:
①
Parser類加載本地接口parser_jni,加載parser.model依存句法分析模型。
②
定義String變量存放要句法分析的句子,需先分好詞並標註詞性。
③
用「 」做分隔符將每一個詞對先存進數組,而後用「_」做分隔符將詞和詞性分別存進words和tags鏈表。
④
輸入待分析的詞序列和相應的詞性序列,將依存弧和依存關係類型分別存進heads和deprels鏈表。
本次實驗使用了哈工大LTP接口的一個java封裝——ltp4j。
在哈工大LTP官網(http://ltp.readthedocs.io/zh_CN/)上有LTP(C++)的詳細使用說明,在java封裝版本ltp4j的github上有詳細的ltp4j使用說明文檔
(https://github.com/HIT-SCIR/ltp4j/blob/master/doc/ltp4j-document-1.0.md)。
但綜合這兩份說明文檔來看,裏面仍是有些不太清晰的地方,下面的教程中,簡述完整的調用ltp4j的過程,着重補充官網上不清晰的地方,使整個使用文檔更清晰明瞭。
【Step 1】首先註明本次實驗的環境變量以及版本號:
JDK:java version「jdk1.7.0_07」
Java(TM) SE Runtime Environment: (build 1.7.0_07-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)
OS:win8 64bit
CMake:cmake-3.7.0-win64-x64.msi
LTP:ltp-3.2.2(未編譯的C++版本);
ltp-win-x64-Release(已編譯的C++版本,windows的二進制文件)
LTP4J:V1.0
LTP模型文件:ltp-data-v3.3.1
Microsoft Visual Studio:V2015(帶有Visual C++ 2015庫)
【Step 2】教程目錄:
(一)編譯LTP4J.jar
1. Ant方法
2. Eclipse方法
(二)編譯C++代理程序
1. 安裝CMake
2. 下載LTP的C++源碼
3. 配置LTP的安裝路徑
4. 構建VC Project
5. 編譯源碼
6. 再次編譯LTP4J
(三)在Eclipse中使用編譯好的LTP4J
1. 配置Eclipse項目所需資源
2. 寫程序調用ltp4j進行句法分析——回到(2、使用哈工大LTP的實例分析)
【Step 3】使用教程:
(一)編譯LTP4J.jar(有Ant方法和Eclipse方法兩種方法)
1.Ant方法
(1)下載Ant:
ltp4j的源碼使用Ant進行編譯,首先須要下載Ant
(2)配置Ant環境變量:
個人電腦—>屬性—>高級系統設置—>環境變量
新建ANT_HOME值爲:「D:\apache-ant-1.9.4」
編輯PATH,在PATH變量值的末尾添加:「;%ANT_HOME%\bin」
驗證是否配置成功,打開cmd,輸入ant:
C:\Users\TKPad>ant
返回結果:
Buildfile: build.xml does not exist!
Build failed
這樣的話,說明ANT配置成功。由於ant默認運行build.xml文件,該文件須要手動建立,所以這裏的failed並非說ant配置不成功,只是咱們尚未建立build.xml文件。
(3)編譯LTP4J:
首先須要下載ltp4j源代碼,下載完成以後,解壓,好比個人地址爲:D:\ltp4j-master(推薦重命名爲ltp4j),打開cmd,進入d盤ltp4j項目根目錄下,運行ant命令
D:\ltp4j>ant
獲得:
Buildfile: D:\ltp4j\build.xml
clean:
[delete] Deleting directory D:\ltp4j\output
compile:
[mkdir] Created dir: D:\ltp4j\output\classes
[javac] D:\ltp4j\build.xml:17: warning: ‘includeantruntime’ was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 7 source files to D:\ltp4j\output\classes
jar:
[mkdir] Created dir: D:\ltp4j\output\jar
[jar] Building jar: D:\ltp4j\output\jar\ltp4j.jar
main:
BUILD SUCCESSFUL
Total time: 4 seconds
說明編譯成功!查看目錄:D:\ltp4j\output\jar,發現存在ltp4j.jar文件,這時該Jar包就可使用了。
2. Eclipse方法
參考https://github.com/HIT-SCIR/ltp4j/blob/master/doc/ltp4j-document-1.0.md
Eclipse方法
(二)編譯C++代理程序
1. 安裝CMake
LTP使用編譯工具CMake構建項目。在安裝LTP以前,你須要首先安裝CMake。CMake能夠在 CMake項目官網(https://cmake.org/download/)下載 。Windows用戶請下載CMake的二進制安裝包(cmake-3.7.0-win64-x64.msi)。Linux,Mac OS或Cygwin的用戶,能夠經過編譯源碼的方式安裝CMake,固然,你也可使用Linux的軟件源來安裝(參考http://ltp.readthedocs.io/zh_CN/latest/install.html)。
2. 下載LTP的C++源碼
LTP:ltp-3.2.2(未編譯的C++版本);
ltp-win-x64-Release(已編譯的C++版本,windows的二進制文件)
https://github.com/HIT-SCIR/ltp/releases
LTP模型文件:ltp-data-v3.3.1
http://pan.baidu.com/share/link?shareid=1988562907&uk=2738088569
3. 配置LTP的安裝路徑
修改ltp4j的CMakeLists.txt中的LTP_HOME爲ltp-win-x64-Release的路徑。
set (LTP_HOME "D:/NLP_Project/LTP_project/ltp-win-x64-Release/")
4. 構建VC Project
①在ltp4j項目文件夾下新建一個名爲build的文件夾,使用CMake-gui,在source code中填入項目文件夾,在binaries中填入build文件夾。而後Configure —> Generate。(注意:項目路徑不能含有中文)
②點擊Configure時選擇本機電腦帶有的Microsoft Visual Studio版本,並且裏面必須安裝好Visual C++ 2015庫(或其餘版本庫)。從新Configure前點擊目錄File選擇Delete Cache便可清除記錄。
③運行正常時返回下面的結果:Configuring done;Generating done
(PS:如若報錯,參考下面的網站尋找相應的解決方案:http://codepub.cn/2015/05/07/Compile-the-Language-Technology-Platform(C++)-and-LTP4J(Java)source-code/?utm_source=tuicool&utm_medium=referral)
5. 編譯源碼
①構建後,ltp4j/build文件夾中獲得ALL_BUILD.vcxproj、ZERO_CHECK.vcxproj兩個VC Project。使用Visual Studio打開ALL_BUILD.vcxproj項目,右鍵該項目選擇屬性,按下圖所示選擇Release,×64方式。肯定後,按菜單欄的「生成(Build)」,構建ALL_BUILD項目。
②這時編譯並不成功,須要先執行第6步——再次編譯LTP4J。
6. 再次編譯LTP4J
①在編譯LTP4J前,咱們還要用CMake編譯ltp-3.2.2(未編譯的C++版本)
②這時ltp-3.2.2/build文件夾下會生成VS Project——ALL_BUILD.vcxproj,用Visual Studio打開ltp-3.2.2/build/ ALL_BUILD.vcxproj ,一樣用Release,×64方式,構建ALL_BUILD項目,ltp-3.2.2編譯成功,編譯需用時3-5分鐘左右,運行結果的一部分截圖以下。
③這時將ltp-3.2.2/lib/Debug裏的全部文件copy到ltp4j/build目錄下。在Visual Studio打開ltp4j/build/ ALL_BUILD.vcxproj,用Release,×64方式,構建ALL_BUILD項目,報錯顯示說在ltp文件夾沒法找到dll文件,實際上是項目用了同級的jni文件夾作路徑根目錄。因而,將ltp4j/libs/Release裏的全部dll文件複製到ltp4j/jni中,在源代碼報錯的部分更改下這些dll文件的路徑便可。ltp4j編譯成功,運行結果的一部分截圖以下。
編譯後的dll文件存放在了ltp4j/libs/Debug中,有如下這些:
(三)在Eclipse中使用編譯好的LTP4J
1. 配置Eclipse項目所需資源
在Eclipse中新建Java Project
(1)導入ltp4j.jar
(2)windows下將如下文件copy到Eclipse項目根目錄:
① ltp4j/libs/Debug文件夾中生成的全部動態庫:
② 原ltp-win-x64-Release/lib/Release文件夾下的splitsnt、segmentor、postagger、ner、parser、srl 6個動態庫:
③ 原ltp-3.2.2/lib/Debug的exp、lib、dll庫
③ LTP模板文件ltp-data-v3.3.1
項目包含的庫以下圖:
2. 寫程序調用ltp4j進行句法分析
——回到 (2、使用哈工大LTP的實例分析)
<教程結束>
參考資料:
【1】哈工大語言技術平臺雲官網--LTP使用文檔
http://ltp.readthedocs.io/zh_CN/latest/install.html
【2】《編譯哈工大語言技術平臺雲LTP(C++)源碼及LTP4J(Java)源碼》
【3】哈工大語言技術平臺github—LTP4J使用文檔
https://github.com/HIT-SCIR/ltp4j/blob/master/doc/ltp4j-document-1.0.md
參考文件: