不能通过终端使用pycorenlp for python3.5

时间:2017-03-20 04:46:40

标签: python-3.5 stanford-nlp

我的默认python是2.7,但是必须在python3.5中执行这个项目

我通过以下命令行安装了pycorenlppip3 install pycorenlp

它显示我已经安装了它:

  

要求已经满足(使用--upgrade升级):pycorenlp in /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages   要求已经满足(使用--upgrade升级):/ Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages(来自pycorenlp)中的请求

但是,当我通过终端输入python3.5进入python环境,然后输入from pycorenlp import StanfordCoreNLP时,它显示错误:

  

ImportError:没有名为pycorenlp的模块

我也尝试了解决方案here但是对于python3.5,例如使用sudochmod,它们都没有用。

你知道如何解决这个问题吗?我必须通过终端运行代码,并且必须使用pycorenlp

1 个答案:

答案 0 :(得分:0)

如果要在Python中访问Stanford CoreNLP,可以尝试使用Stanford CoreNLP服务器。可从此处下载:http://stanfordnlp.github.io/CoreNLP/download.html

  1. 启动Java服务器。我将在这里提供命令,但您可以轻松地添加一行Python代码,使用subprocess调用此命令并启动服务器并获取进程ID。

    cd /path/to/stanford-corenlp-full-2016-10-31 ; java -Xmx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 9000 -timeout 15000 -annotators tokenize,ssplit,pos,lemma,ner,parse,mention,coref
    
  2. 以下是Java服务器上的一些信息:http://stanfordnlp.github.io/CoreNLP/corenlp-server.html

    请注意,这只是一个示例命令,您可以提供所需的任何注释器列表。

    现在Java服务器将运行,您可以在Python程序运行时向它发出调用。以下是使用requests库的基本示例。

    1. 对Stanford CoreNLP服务器进行基本调用:

      import requests
      
      url = 'http://localhost:9000/?'
      request_params = {'outputFormat': 'json'}
      text = "This is a test sentence."
      r = requests.post(url,data=text,params=request_params)
      print r.json()
      
    2. 您将获得带注释的JSON返回。

      1. 关闭服务器。
      2. 我们还在内部使用Python包装器来访问stanza中可用的服务器。我认为包装器可以与Python 3一起使用,但我并不乐观。如果您遇到问题,我提供的Python代码应该可以正常使用Python 3。

        这是节的GitHub:https://github.com/stanfordnlp/stanza