连接到专用服务器 - CoreNLP
Connect to Dedicated Server - CoreNLP
我正在寻找连接到 Stanford CoreNLP 服务器的本地实例所需的 python 代码。
我已成功连接并与斯坦福的服务器通信,您需要在命令行提示符中输入以下内容:
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 服务器的本地实例是监听任何请求。我现在需要知道如何与我的本地服务器通信。
谁能告诉我我需要用什么替换 nlp = StanfordCoreNLP('http://localhost:9000')
才能与我的本地 CoreNLP 服务器通信?
您应该使用 Stanford NLP 组的 Python 库 stanza
:
https://github.com/stanfordnlp/stanza
希望下个月在 Python 中有更好的文档和启动和停止服务器的支持。
正如@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 的操作系统上的专用服务器。
我的问题的解决方案 是我遗漏了 'middleman'。我的意思是我错过了连接到我的专用服务器的过程的一部分。我已经正确设置了专用服务器并 运行,并且我有 Python 代码可以连接到服务器,但我没有 "pipeline" 打开我的专用服务器。
为此,我只需要执行以下简单步骤:
将 CoreNLP 3.7.0 下载到下载文件夹。
一个。解压文件夹。请注意您提取到的位置
断开互联网连接!!
在终端中输入以下内容window:
一个。 cd ~/stanford-corenlp-full-2016-10-31(<--无论你在哪里存储这个文件)
b。 java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 80 -timeout 15000
运行 Python代码.
*请注意,我已断开与互联网的连接。如果您不这样做,java 命令将不会连接到您的本地服务器,而是连接到 Stanford 的服务器。
总结: 当使用 Stanford CoreNLP 时,您需要三个组件 (1) Python 脚本中适当的代码行来调用服务器。上面提供的两个选项 (2) 一个正常运行的服务器。我知道的两个选项包括斯坦福大学自己的服务器,或者您在本地系统上拥有的专用服务器。 (3) CoreNLp 软件,用于打开从您的系统到服务器的管道。第三个是我陷入困境的地方。
*我很想知道是否有一种方法可以在不断开互联网连接的情况下连接到我的本地服务器。似乎如果启用了互联网,代码将默认为斯坦福服务器的实例化。是否可以覆盖此默认值?请随时在此侧边栏上发表评论。
编辑: 我不认为以上信息是正确的。根据 Stanford CoreNLP's Server page、"Stanford CoreNLP ships with a built-in server, which requires only the CoreNLP dependencies.",我相信我上面的解决方案只使用了这个 "built-in" 服务器,而不是我的本地专用服务器。我仍在调查这个问题。随着更多信息的发现,我将进行编辑。
我正在寻找连接到 Stanford CoreNLP 服务器的本地实例所需的 python 代码。
我已成功连接并与斯坦福的服务器通信,您需要在命令行提示符中输入以下内容:
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 服务器的本地实例是监听任何请求。我现在需要知道如何与我的本地服务器通信。
谁能告诉我我需要用什么替换 nlp = StanfordCoreNLP('http://localhost:9000')
才能与我的本地 CoreNLP 服务器通信?
您应该使用 Stanford NLP 组的 Python 库 stanza
:
https://github.com/stanfordnlp/stanza
希望下个月在 Python 中有更好的文档和启动和停止服务器的支持。
正如@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 的操作系统上的专用服务器。
我的问题的解决方案 是我遗漏了 'middleman'。我的意思是我错过了连接到我的专用服务器的过程的一部分。我已经正确设置了专用服务器并 运行,并且我有 Python 代码可以连接到服务器,但我没有 "pipeline" 打开我的专用服务器。
为此,我只需要执行以下简单步骤:
将 CoreNLP 3.7.0 下载到下载文件夹。
一个。解压文件夹。请注意您提取到的位置
断开互联网连接!!
在终端中输入以下内容window:
一个。 cd ~/stanford-corenlp-full-2016-10-31(<--无论你在哪里存储这个文件)
b。 java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 80 -timeout 15000
运行 Python代码.
*请注意,我已断开与互联网的连接。如果您不这样做,java 命令将不会连接到您的本地服务器,而是连接到 Stanford 的服务器。
总结: 当使用 Stanford CoreNLP 时,您需要三个组件 (1) Python 脚本中适当的代码行来调用服务器。上面提供的两个选项 (2) 一个正常运行的服务器。我知道的两个选项包括斯坦福大学自己的服务器,或者您在本地系统上拥有的专用服务器。 (3) CoreNLp 软件,用于打开从您的系统到服务器的管道。第三个是我陷入困境的地方。
*我很想知道是否有一种方法可以在不断开互联网连接的情况下连接到我的本地服务器。似乎如果启用了互联网,代码将默认为斯坦福服务器的实例化。是否可以覆盖此默认值?请随时在此侧边栏上发表评论。
编辑: 我不认为以上信息是正确的。根据 Stanford CoreNLP's Server page、"Stanford CoreNLP ships with a built-in server, which requires only the CoreNLP dependencies.",我相信我上面的解决方案只使用了这个 "built-in" 服务器,而不是我的本地专用服务器。我仍在调查这个问题。随着更多信息的发现,我将进行编辑。