作者注:本教程旨在对哈工大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. 1.2.2 Loaders - 加载器

    Loaders从Android 3.0引入,它使得在activity或是fragment里进行异步数据加载变得非常简单.Loaders有如下的特性: 它在每个 Activity  和 Fragment ...

  2. vmware复制虚拟机出现Error:No suitable device found:no device found for connection 'System eth0'

    vmware复制虚拟机出现Error:No suitable device found:no device found for connection 'System eth0' 废话不多说,直接给出解 ...

  3. 客户端-服务器端互动比较与原生实例(比较ajax,server-sent event,websocket/netsocket)

    昨日学习了websocket的原生实例,觉得有必要把几种常见的客户端-服务器端无刷新交互形式列举比较: 一.Ajax:客户端决定何时主动向Server端发请求 如:无刷新评论.无刷新更换图片. 主要目 ...

  4. springboot查找配置文件路径的过程

    spring加载配置文件是通过listener监视器实现的,在springboot启动时: 在容器启动完成后会广播一个SpringApplicationEvent事件,而SpringApplicati ...

  5. JDK1.5中支持的 for循环的语法

    JDK1.5中支持的 for循环的语法 解答: for(type element : array) { System.out.println(element) } type 集合(不仅仅指Collec ...

  6. The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Cha

    The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Cha ...

  7. IPOL图像处理分析经典在线(文献+源码)

    网址: IPOL Journal · Image Processing On Line https://www.ipol.im/ 分类: 搜索: 下载文献和源码: NLM算法:IPOL Journal ...

  8. CentOS 7安装与配置jdk-8u162

    一.下载jdk-8u162版本 jdk-8u162-linux-x64.rpm 二.上传jdk到centos下 上传完后的文件如下,文件只有读写权限,没有执行权限 使用如下命令授权,如果文件已经有了执 ...

  9. 多线程的设计模式--Future模式,Master-Worker模式,生产者-消费者模式

    代码示例: public interface Data { String getRequest(); } public class FutureData implements Data{ privat ...

  10. thrift框架总结,可伸缩的跨语言服务开发框架

    thrift框架总结,可伸缩的跨语言服务开发框架 前言: 目前流行的服务调用方式有很多种,例如基于 SOAP 消息格式的 Web Service,基于 JSON 消息格式的 RESTful 服务等.其 ...