Python 调用 StanfordNLP 服务

Stanford NLP Group 提供了自然语言软件处理工具,目前(2021年)能够非常非常方便快捷的调用 POS、NER 等功能。本例是以 Server 方式提供服务,让 Python 能够调用相关服务。相关的步骤如下:

  1. Download-CoreNLP 页面中下载 CoreNLP 以及其他需要的语言模型依赖包

  2. 解压缩 CoreNLP 文件,同时语言模型依赖包放在其中

  3. 使用 Java 启动 Server 的两种情况,使用默认的英语模型处理英文数据: java -mx4g -cp '*' edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 9000 -timeout 15000;第二种情况是需要添加非英语语言模型,处理非英文数据。例如处理中文语言: java -Xmx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -serverProperties StanfordCoreNLP-chinese.properties -port 9000 -timeout 15000。两种模式都申明了最大的内存、端口以及超时时间。

  4. 调用服务的方式是网络 API 的方式,因此可以使用 Python 中 requests 进行网络请求方式调用相关服务外,还可以使用其他网络请求的方式获取服务(例如 curl)

    1
    2
    import requests
    print(requests.post('http://[::]:9000/?properties={"annotators":"tokenize,ssplit,pos","outputFormat":"json"}', data = {'data':'整个世界垮掉,这不仅仅是一个测试,而且还是一个测试'}).text)

参考

  1. Usage - CoreNLP
作者

ZenRay

发布于

2021-01-18

更新于

2021-04-11

许可协议

CC BY-NC-SA 4.0