作者注:本教程旨在对哈工大LTP在github上的LTP4J(LTP的java版本)教程的补充,请结合以下参考网站一起食用。

参考网站:

【1】哈工大语言技术平台云官网--LTP使用文档

http://ltp.readthedocs.io/zh_CN/latest/install.html

【2】《编译哈工大语言技术平台云LTP(C++)源码及LTP4J(Java)源码》

http://codepub.cn/2015/05/07/Compile-the-Language-Technology-Platform(C++)-and-LTP4J(Java)source-code/?utm_source=tuicool&utm_medium=referral

【3】哈工大语言技术平台github—LTP4J使用文档

https://github.com/HIT-SCIR/ltp4j/blob/master/doc/ltp4j-document-1.0.md


一、哈工大LTP

简介:哈工大语言技术平台Language Technology Platform(LTP)是哈工大社会计算与信息检索研究中心历时十年开发的一整套中文语言处理系统。LTP制定了基于XML的语言处理结果表示,并在此基础上提供了一整套自底向上的丰富而且高效的中文语言处理模块(包括词法、句法、语义等6项中文处理核心技术),以及基于动态链接库(Dynamic Link Library, DLL)的应用程序接口,可视化工具,并且能够以网络服务(Web Service)的形式进行使用。


二、使用哈工大LTP的实例分析

1、分词

(1)调用LTP进行分词的完整代码:TestSegment.java

(2)分析的句子:

  “中国的神威太湖之光计算机被用于天气预报、制药研究和工业设计等领域。“

(3)运行结果:

(4)代码分析:

① 

Segmentor类加载本地接口segmentor_jni,加载cws.model分词模型文件。

② 

本地接口segmentor_jni里的segment方法将分词后的结果放在words链表。

2、词性标注

(1)调用LTP进行词性标注的完整代码:TestPostag.java

(2)分析的句子:

  “中国  的  神威  太湖  之  光  计算机  被  用于  天气  预报  、  制药  研究  和  工业  设计  等  领域  。“

(3)运行结果:

(4)代码分析:

① 

Postagger类加载本地接口postagger_jni,加载pos.model词性标注模型。

② 

定义String变量存放待词性标注的句子,需先分好词。

③ 

用“  ”作分隔符将分词后的每个词存进链表。

④ 

本地接口postagger_jni里的postag方法将词性标注后的结果放在postags链表。

3、依存句法分析

(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使用教程

本次实验使用了哈工大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】首先注明本次实验的环境变量以及版本号:

JDKjava 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)

OSwin8  64bit

CMakecmake-3.7.0-win64-x64.msi

LTPltp-3.2.2(未编译的C++版本);

ltp-win-x64-Release(已编译的C++版本,windows的二进制文件)

LTP4JV1.0

LTP模型文件:ltp-data-v3.3.1

Microsoft Visual StudioV2015(带有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进行句法分析——回到(二、使用哈工大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:: warning: ‘includeantruntime’ was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds

[javac] Compiling  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:  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++源码

LTPltp-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进行句法分析

——回到 (二、使用哈工大LTP的实例分析)


<教程结束>

 

 

参考资料:

【1】哈工大语言技术平台云官网--LTP使用文档

http://ltp.readthedocs.io/zh_CN/latest/install.html

【2】《编译哈工大语言技术平台云LTP(C++)源码及LTP4J(Java)源码》

http://codepub.cn/2015/05/07/Compile-the-Language-Technology-Platform(C++)-and-LTP4J(Java)source-code/?utm_source=tuicool&utm_medium=referral

【3】哈工大语言技术平台github—LTP4J使用文档

https://github.com/HIT-SCIR/ltp4j/blob/master/doc/ltp4j-document-1.0.md

参考文件:

使用哈工大LTP进行句法分析的更多相关文章

  1. 3. 哈工大LTP解析

    1. 通俗易懂解释知识图谱(Knowledge Graph) 2. 知识图谱-命名实体识别(NER)详解 3. 哈工大LTP解析 1. 前言 哈工大语言技术平台Language Technology ...

  2. 哈工大LTP进阶使用-三元组事件抽取

    哈工大LTP基本使用-分词.词性标注.依存句法分析.命名实体识别.角色标注 上一节我们讲了LTP的基本使用,接下来我们使用其进行事件抽取. 参考代码:https://github.com/liuhua ...

  3. 哈工大LTP

    http://ltp.ai/ http://pyltp.readthedocs.io/zh_CN/latest/ http://www.cnblogs.com/Denise-hzf/p/6612886 ...

  4. 哈工大LTP语言分析:分词、词性标注、句法分析等

    1. LTP介绍和安装 LTP语言云官网  在线演示 | 语言云(语言技术平台云 LTP-Cloud) 安装LTP的python接口包 $ sudo pip install pyltp 模型文件下载 ...

  5. 哈工大LTP基本使用-分词、词性标注、依存句法分析、命名实体识别、角色标注

    代码 import os from pprint import pprint from pyltp import Segmentor, Postagger, Parser, NamedEntityRe ...

  6. ZH奶酪:哈工大LTP云平台标记含义及性能

    从官网搬过来的 囧rz 哈工大讯飞语言云 由哈工大 和科大讯飞 联合研发的中文自然语言处理云服务平台.结合了哈工大“语言技术平台——LTP” 高效.精准的自然语言处理核心技术和讯飞公司在全国性大规模云 ...

  7. 使用哈工大LTP进行文本命名实体识别并保存到txt

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/broccoli2/article/det ...

  8. python3调用哈工大ltp

    运行环境ubuntu+python3 安装pyltp sudo pip3 install pyltp 下载ltp_data_v3.4.0模型 http://ltp.ai/ 分句 from pyltp ...

  9. 编译哈工大语言技术平台云LTP(C++)源码及LTP4J(Java)源码

    转自:编译哈工大语言技术平台云LTP(C++)源码及LTP4J(Java)源码 JDK:java version “1.8.0_31”Java(TM) SE Runtime Environment ( ...

随机推荐

  1. Java 中 byte 类型初始化问题

    很早的时候由于工作需要,接触过一点 Java,于是有了这个坑,今天回头看到自己在 Stackoverflow 上提的问题发现了它,于是再记录下. 在使用中,需要将 byte 类型的的每一位都置 1.我 ...

  2. 我的直播demo

    推流工具: ffmpeg 接收/转发流工具: nginx-rtmp 在线播放工具: video.js -------------------------------------- demo地址: ht ...

  3. sql server 订阅发布的配置

    网上sql server 的发布订阅功能的教程很多,但是很多东西写的不是很详细,常常给人误解,现在根据自己的情况从新整理一下: 1.服务器端  然后一路下一步, 2.订阅端(重点) 给服务器在本地取一 ...

  4. 什么是Web容器?

    什么是Web容器? 解答:容器就是一种服务程序,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如JAVA中的Tomcat容器,ASP的IIS或PWS都是这样的容器.

  5. Hadoop大数据处理读书笔记

    几个关键性的概念 云计算:是指利用大量计算节点构成的可动态调整的虚拟化计算资源.通过并行化和分布式计算技术,实现业务质量可控的大数据处理的计算技术. NameNode:是HDFS系统中的管理者.它负责 ...

  6. Sql server不同数据类型间拼接(+)

    )+'m' 输出 4m 若 +'m' 输出:在将 varchar 值 'm' 转换成数据类型 int 时失败.  

  7. Java逍遥游记读书笔记<三>

    异常处理 如何判断一个方法中可能抛出异常 该方法中出现throw语句 该方法调用了其他已经带throws子句的方法. 如果方法中可能抛出异常,有两种处理方法: 1.若当前方法有能力处理异常,则用Try ...

  8. point-position目标定位

    双站探测同一目标会构成两条直线:(飞行目标定位2 - ostartech - 博客园 https://www.cnblogs.com/wxl845235800/p/8858116.html) 测角偏差 ...

  9. C语言程序设计-同一天生日[综合应用]

    [问题描述] 在一个有200人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的学号,出生月日,试找出所有生日相同的学生. [输入形式] 第一行为整数n,表示有n个学生,n<=200. ...

  10. mysql 暴力破解 root账号密码

    测试数据库的root账号密码大家都忘记了,好吧,那我们就暴力破解吧 1.找到my.cnf vi /etc/my.cnf在[mysqld]的段中加上一句:skip-grant-tables例如:[mys ...