使用 Docker 中的LTP

最简单的方式就是使用我们在docker中已经编译好的LTP服务。这种方式避免了多种不同系统编译安装时可能出现的各种问题,也避免了模型和代码匹配等问题。如果您希望快速部署LTP的接口服务器并使用。推荐这种方法。

1. 安装docker,在 docker官方下载地址 下载安装即可。如果您还没有了解docker是什么,可以参考 此处 2.1 使用本仓库Dockerfile构建镜像,仅下载Dockerfile文件,放在一个空文件夹下,并在该文件夹下执行:

docker build -t ltp/ltp . # 由于网络原因可能中途失败。多执行几次即可。

2.2 在此处下载最新的LTP的镜像文件。` ltp3.4.0-docker <http://osr393crn.bkt.clouddn.com/docker/ltp_3_4_0.tar>`_ 下载的文件较大,下载完成后比较其(md5=f42d128a20e26a4b8c2edf63932fed67)核对是否下载正确。注意此步骤与2.1功能相同,尝试一种可行方案即可。更推荐2.1方案。:

docker load -i ltp_3_4_0.tar
  1. 在配置中给docker运行给予足够大的内存。我们这里设置了6G运行内存。

  2. 使用如下命令启动容器,这里的8080是映射到本地的端口号,可以根据需要改动为其他未占用的端口:

    docker run -d -p 8080:12345 ltp/ltp /ltp_server --last-stage all
    
  3. 使用如下命令测试服务器是否部署成功。启动后可能需要等待数十秒的模型加载时间。:

    curl -d "s=他点头表示同意我的意见。&f=xml&t=all" http://127.0.0.1:8080/ltp
    
  4. 按照文档进行接口访问即可

LTP 的源码编译安装

如果你想要使用LTP,必须拥有两部分内容

  • LTP项目文件
  • LTP模型文件

你可以从以下链接获得最新的LTP项目源码。

如果你是windows用户,你也可以跳过从源代码编译的环节,从以下链接获得编译好的二进制文件

你可以从以下链接获得LTP的模型文件

依赖:CMake

LTP使用编译工具CMake构建项目。在安装LTP之前,你需要首先安装CMake。CMake可以在 CMake项目官网 。如果你是Windows用户,请下载CMake的二进制安装包;如果你是Linux,Mac OS或Cygwin的用户,可以通过编译源码的方式安装CMake,当然,你也可以使用Linux的软件源来安装。

在 Windows (MSVC) 下编译

第一步:构建 VC Project

在项目文件夹下新建一个名为 build 的目录,打开CMake Gui,在source code中填入项目目录,在binaries中填入 build 目录。然后Configure -> Generate。

http://ir.hit.edu.cn/~yjliu/image/2013-7-12-cmake-win-setup.png

或者在命令行build目录下运行:

cmake ..

第二步:编译

构建后得到ALL_BUILD、RUN_TESTS、ZERO_CHECK三个VC Project。使用VS打开ALL_BUILD项目,选择Release [1] 方式构建项目。

在 Linux, macOS 和 Cygwin 下编译

Linux、Mac OSX和Cygwin的用户,可以直接在项目根目录下使用命令进行编译:

./configure
make

编译结果说明

编译成功后,会在 bin 目录下生成以下二进制程序:

程序名 说明
ltp_test LTP主程序
ltp_server [2] LTP Server

bin/examples 目录下生成以下二进制程序:

程序名 说明
cws_cmdline 分词模块命令行程序
pos_cmdline 词性标注模块命令行程序
ner_cmdline 命名实体识别模块命令行程序
par_cmdline 依存句法分析模块命令行程序

lib 目录下生成以下静态链接库 [3] :

程序名 说明
splitsnt.lib 分句lib库
segmentor.lib 分词lib库
postagger.lib 词性标注lib库
parser.lib 依存句法分析lib库
ner.lib 命名实体识别lib库
srl.lib 语义角色标注lib库

tools/train 目录下生成以下二进制程序:

[1]boost::multi_array 与VS2010不兼容的bug已经在3.1.0中得到修复,3.1.x及以上版本已经可以使用Debug方式构建,但出于效率考虑,仍旧建议使用Release方式构建。
[2]在window版本中 ltp_serverMaxentSRLExtractSRLGetInstance 并不被编译。
[3]window下产生的静态库的后缀是.lib,linux下产生的静态库的后缀是.a