【问题标题】:stanford corenlp not working斯坦福 corenlp 不工作
【发布时间】:2013-09-09 18:28:52
【问题描述】:

我使用的是 Windows 8,并在 Eclipse 中使用 pyDev 运行 python。

我从该站点安装了 Stanford coreNLP(python 版本): https://github.com/relwell/stanford-corenlp-python

当我尝试导入 corenlp 时,我收到以下错误消息。

Traceback (most recent call last):
  File "C:\Users\Ghantauke\workspace\PythonTest2\test.py", line 1, in <module>
    import corenlp
  File "C:\Python27\lib\site-packages\corenlp\__init__.py", line 13, in <module>
    from corenlp import StanfordCoreNLP, ParserError, TimeoutError, ProcessError
  File "C:\Python27\lib\site-packages\corenlp\corenlp.py", line 28, in <module>
    import pexpect
  File "C:\Python27\lib\site-packages\pexpect.py", line 85, in <module>
    support it. Pexpect is intended for UNIX-like operating systems.""")
ImportError: No module named resource

A critical module was not found. Probably this operating system does not
support it. Pexpect is intended for UNIX-like operating systems.

这是否意味着它的 python 分支在 Windows 中不起作用?有什么办法可以让它在 Windows 中工作?

如果没有,那么您能否建议我可以在 Windows 中使用的其他替代方案。我只需要解析器。

【问题讨论】:

  • 我在 Windows Server 2012 上遇到了类似的问题,我无法获得 Pexpect,因此 python 包装器无法按原样使用。潜水...
  • 好的,现在似乎可以工作了...@ghantauke 如果你仍然需要这个,你可以试试下面的答案。
  • 安装cygwin,一定要选择他们提供的python。然后在 cygwin 中运行它,我希望它应该可以工作。
  • 我会再次检查我的 cygwin 安装...
  • 您也可以使用虚拟机。不过比 cygwin 的开销要多一些。

标签: python parsing stanford-nlp linguistics


【解决方案1】:

这是我尝试获取corenlp-python 的记录,CoreNLP 的 python 包装器在 Windows Server 2012 上按原样运行。

免责声明:如果您只需要运行可执行文件,请先检查this。考虑subprocess

开始

由于corenlp-python 大量使用pexpect,并且该库仅适用于UNIX,所以我首先想到的是找到一个Windows 端口。

wexpect.py 相当容易找到,并声称可以替代 Pexpect(强调我的):

为了使用 WExpect,您必须安装 CygWin,然后将 WExpect 脚本安装到您​​的系统中(将 py 文件放到您的工作目录中通常就足够了)。 我发现功能几乎相同,因此您应该能够使用 PExpect 手册和示例并将它们应用于此 Microsoft Windows 变体。

所以我就这样做了,下载并安装 CygWin,然后将 wexpect.py 复制到所有其他库所在的 C:\Python27\lib\。我尝试从 Python shell 中 import wexpect 并收到类似于我第一次在 Windows 上尝试 Pexpect 时出现的错误:

ImportError: No module named pywintypes
This module requires the win32 python packages.

A critical module was not found. Probably this operating system does not
support it. Pexpect is intended for UNIX-like systems.

等你,我们期待吗?

无论如何,这是寻找等价物的标准挫败感。按下。

我打开wexpect.py 发现它只会在Windows 系统上尝试pywintypes。合乎逻辑,所以我尝试了:

$ pip install -U pywintypes

...失败了,我到谷歌查询 python Win32 软件包的名称(this answer 帮助):

$ pip install -U pywin32

...提示--allow-external,然后是--allow-unverified,两者都需要包名,ergo:

$ pip install --allow-external pywin32 --allow-unverified pywin32 pywin32

这当然行不通。没有找到这样的包。

sf.net

所以我开始搜索 pywin32 on PyPI 并意识到 only a readme is left 并且我必须再跳四圈才能找到 something more substantial,然后再跳两圈才能找到 this list

我下载了Build 219 for Python 2.7 32-bit。至少现在import wexpect 不会呕吐。

你期待什么?

所以我再次运行corenlp-python 命令,这次它缺少unidecode。这更容易修复,最后我进入了一个可用状态 - 一个错误,不少但很熟悉 - JAR 的路径不正确。

好的。

当你运行corenlp.py时,由于pexpect被调用,记得在顶部附近import wexpect as pexpect注释掉真正的import pexpect行,否则你会得到一个NameError

#import pexpect
import wexpect as pexpect

即使安装了 Java,无论路径如何,这似乎都不起作用。

$ python lib\corenlp\corenlp.py

它返回一个ExceptionPexpect

【讨论】:

  • 我已经停止了这方面的工作,因为我能够强制 Windows 机器连接到在 Linux VM 上运行的 NLP 服务器。
猜你喜欢
  • 1970-01-01
  • 2020-05-05
  • 2019-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多