【问题标题】:NLTK was unable to find stanford-postagger.jar! Set the CLASSPATH environment variableNLTK 无法找到 stanford-postagger.jar!设置 CLASSPATH 环境变量
【发布时间】:2016-04-16 00:53:48
【问题描述】:

我正在做一个需要我使用 nltk 和 python 标记令牌的项目。所以我想用这个。但是遇到了一些问题。 我经历了很多其他已经提出的问题和其他论坛,但我仍然无法解决这个问题。 问题是当我尝试执行以下操作时:


from nltk.tag import StanfordPOSTagger st = StanfordPOSTagger('english-bidirectional-distsim.tagger')


我得到以下信息:


    Traceback (most recent call last):

    `File "<pyshell#13>", line 1, in <module>
        st = StanfordPOSTagger('english-bidirectional-distsim.tagger')`

    `File "C:\Users\MY3\AppData\Local\Programs\Python\Python35-32\lib\site-packages\nltk-3.1-py3.5.egg\nltk\tag\stanford.py", line 131, in __init__
        super(StanfordPOSTagger, self).__init__(*args, **kwargs)`

    `File "C:\Users\MY3\AppData\Local\Programs\Python\Python35-32\lib\site-packages\nltk-3.1-py3.5.egg\nltk\tag\stanford.py", line 53, in __init__
        verbose=verbose)`

     `File "C:\Users\MY3\AppData\Local\Programs\Python\Python35-32\lib\site-packages\nltk-3.1-py3.5.egg\nltk\internals.py", line 652, in find_jar
        searchpath, url, verbose, is_regex))`

     `File "C:\Users\MY3\AppData\Local\Programs\Python\Python35-32\lib\site-packages\nltk-3.1-py3.5.egg\nltk\internals.py", line 647, in find_jar_iter
        raise LookupError('\n\n%s\n%s\n%s' % (div, msg, div))`

    LookupError: 

    ===========================================================================
      NLTK was unable to find stanford-postagger.jar! Set the CLASSPATH
      environment variable.

    ===========================================================================

我已经设置了 类路径 - C:\Users\MY3\Desktop\nltk\stanford\stanford-postagger.jar 我也试过C:\Users\MY3\Desktop\nltk\stanford..

斯坦福模型 - C:\Users\MY3\Desktop\nltk\stanford\models\

我也试过这样做..徒劳 File "C:\Python27\lib\site-packages\nltk\tag\stanford.py", line 45, in __init__ env_vars=('STANFORD_MODELS',), verbose=verbose) 但它也不能解决问题。请帮我解决这个问题。

我使用 Windows 8、python 3.5 和 nltk 3.1

【问题讨论】:

标签: python nltk stanford-nlp pos-tagger


【解决方案1】:

我将 Jupyter Notebook 与 Pycharm 一起使用。 我尝试了 Pycharm 中的运行配置来设置环境变量,但不起作用。 所以我在代码中使用os.environ来设置:

import os

os.environ["CLASSPATH"] = "/yourPath/stanford-parser-full-2018-10-17:yourPath/stanford-postagger-full-2018-10-16:yourPath/stanford-ner-2018-10-16"
os.environ["STANFORD_MODELS"] = "yourPath/stanford-postagger-full-2018-10-16/models:yourPath/stanford-ner-2018-10-16/classifiers"

stanford_tagger = StanfordPOSTagger('english-bidirectional-distsim.tagger')

希望它会有所帮助!

【讨论】:

    【解决方案2】:

    更新

    原始答案是为 Stanford POS Tagger 版本 3.6.0,日期 2015-12-09 编写的

    有一个new Version (3.7.0, released 2016-10-31)。这是新版本的代码:

    from nltk.tag import StanfordPOSTagger
    from nltk import word_tokenize
    
    # Add the jar and model via their path (instead of setting environment variables):
    jar = 'your_path/stanford-postagger-full-2016-10-31/stanford-postagger.jar'
    model = 'your_path/stanford-postagger-full-2016-10-31/models/english-left3words-distsim.tagger'
    
    pos_tagger = StanfordPOSTagger(model, jar, encoding='utf8')
    
    text = pos_tagger.tag(word_tokenize("What's the airspeed of an unladen swallow ?"))
    print(text)
    

    原答案

    我遇到了同样的问题(但使用 OS X 和 PyCharm),终于让它工作了。这是我从StanfordPOSTagger Documentationalvas' work on the issue 拼凑而成的(非常感谢!):

    from nltk.internals import find_jars_within_path
    from nltk.tag import StanfordPOSTagger
    from nltk import word_tokenize
    
    # Alternatively to setting the CLASSPATH add the jar and model via their path:
    jar = '/Users/nischi/PycharmProjects/stanford-postagger-full-2015-12-09/stanford-postagger.jar'
    model = '/Users/nischi/PycharmProjects/stanford-postagger-full-2015-12-09/models/english-left3words-distsim.tagger'
    
    pos_tagger = StanfordPOSTagger(model, jar)
    
    # Add other jars from Stanford directory
    stanford_dir = pos_tagger._stanford_jar.rpartition('/')[0]
    stanford_jars = find_jars_within_path(stanford_dir)
    pos_tagger._stanford_jar = ':'.join(stanford_jars)
    
    text = pos_tagger.tag(word_tokenize("What's the airspeed of an unladen swallow ?"))
    print(text)
    

    希望这会有所帮助。

    【讨论】:

    猜你喜欢
    • 2015-12-25
    • 1970-01-01
    • 2018-07-20
    • 2018-10-15
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多