连接到专用服务器 - CoreNLP

时间:2017-04-25 18:56:32

标签: python python-3.x stanford-nlp python-3.6 corenlp-server

我正在寻找连接到Stanford CoreNLP服务器的本地实例化所需的python代码。

我已成功连接并与Stanford的服务器通信,您需要在命令行提示符中输入以下内容:

java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 9000 -timeout 15000

并在你的python代码中有nlp = StanfordCoreNLP('http://localhost:9000')

我现在有一个在CentOS 6上运行的本地CoreNLP服务器。我使用终端提示符:sudo service corenlp start并获取系统响应CoreNLP server started.我假设这意味着我的本地CoreNLP服务器实例正在侦听任何要求。我现在需要知道如何与本地服务器通信。

为了能够与我的本地CoreNLP服务器通信,任何人都可以启发我需要替换nlp = StanfordCoreNLP('http://localhost:9000')的内容吗?

2 个答案:

答案 0 :(得分:0)

您应该使用Stanford NLP小组的Python库stanza

https://github.com/stanfordnlp/stanza

希望在下个月有更好的文档和支持在Python中启动和停止服务器。

答案 1 :(得分:0)

如上所述@StanfordNLPHelp,stanza可以导入并使用以下代码:

from stanza.nlp.corenlp import CoreNLPClient
client = CoreNLPClient(server='http://localhost:9000', default_annotators=['ssplit', 'tokenize', 'lemma', 'pos', 'ner'])
annotated = client.annotate('This is an example document. Here is a second sentence')

此代码的行为方式与此行代码的行为类似,如果您连接到斯坦福大学的服务器nlp = StanfordCoreNLP('http://localhost:9000'),该代码应该很熟悉。

我的问题是我无法连接到驻留在我的本地CentOS操作系统上的专用服务器。

我的问题的解决方案是我错过了'中间人'。我的意思是我错过了我连接到我的专用服务器的过程的一部分。我有专门的服务器正确设置和运行,我有Python代码,可以到达服务器,但我没有“管道”打开我的专用服务器。

要做到这一点,我只需要遵循以下简单步骤:

  1. 将CoreNLP 3.7.0下载到下载文件夹。

    一个。解压缩文件夹。请注意您提取到的位置

  2. 断开互联网连接!!

  3. 在终端窗口中输入以下内容:

    一个。 cd~ / stanford-corenlp-full-2016-10-31(< - 无论你在哪里存储这个文件)

    湾java -mx4g -cp“*”edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 80 -timeout 15000

  4. 运行Python代码。

  5. *请注意,我已从互联网断开连接。如果你不这样做,java命令将不会连接到你的本地服务器,而是斯坦福的。

    摘要:使用Stanford CoreNLP时,您需要三个组件(1)Python脚本中适当的代码行调用服务器。上面提到的两个选项(2)功能正常的服务器。我所知道的两个选项包括斯坦福自己的服务器,或者您在本地系统上使用的专用服务器。 (3)CoreNLp软件,用于打开从系统到服务器的管道。第三是我被赶上的地方。

    *我有兴趣知道是否有办法连接到我的本地服务器而无需断开互联网连接。似乎如果启用了互联网,代码将默认为斯坦福大学的服务器实例。是否可以覆盖此默认值?请随时在此侧栏上输入评论。

    编辑:我不相信上述信息是正确的。根据{{​​3}},“斯坦福CoreNLP附带内置服务器,只需要CoreNLP依赖。”我相信我上面的解决方案只使用这个“内置”服务器而不是本地专用服务器。我还在调查这个问题。我会编辑,因为有更多的信息被发现。