"ImportError: cannot import name StanfordNERTagger" in NLTK
"ImportError: cannot import name StanfordNERTagger" in NLTK
我无法在 NLTK 中导入 NER Stanford Tagger。这就是我所做的:
已从 here 下载 java 代码
并添加了一个环境变量 STANFORD_MODELS
,其中包含存储 java 代码的文件夹的路径。
根据 NLTK 站点上提供的信息,这应该足够了。它说:
"Tagger models need to be downloaded from http://nlp.stanford.edu/software and the STANFORD_MODELS environment variable set (a colon-separated list of paths)."
请问有好心人帮帮我吗?
编辑:下载的文件夹位于 /Users/-----------/Documents/JavaJuno/stanford-ner-2015-04-20 并包含这些文件:
LICENSE.txt lib ner.sh stanford-ner-3.5.2-javadoc.jar
NERDemo.java ner-gui.bat sample-conll-file.txt stanford-ner-3.5.2-sources.jar
README.txt ner-gui.command sample-w-time.txt stanford-ner-3.5.2.jar
build.xml ner-gui.sh sample.ner.txt stanford-ner.jar
classifiers ner.bat sample.txt
然后我添加了一个环境变量STANFORD_MODELS:
os.environ["STANFORD_MODELS"] = "/Users/-----------/Documents/JavaJuno/stanford-ner-2015-04-20"
从 nltk.tag 导入 StanfordNERTagger 调用产生错误:
ImportError Traceback (most recent call last)
<ipython-input-356-f4287e573edc> in <module>()
----> 1 from nltk.tag import StanfordNERTagger
ImportError: cannot import name StanfordNERTagger
此外,如果这可能相关,这就是我的 nltk.tag 文件夹中的内容:
__init__.py api.pyc crf.py hmm.pyc senna.py sequential.pyc stanford.py tnt.pyc
__init__.pyc brill.py crf.pyc hunpos.py senna.pyc simplify.py stanford.pyc util.py
api.py brill.pyc hmm.py hunpos.pyc sequential.py simplify.pyc tnt.py util.pyc
EDIT2:我已经成功导入了 NER Tagger,方法是:
from nltk.tag.stanford import NERTagger
但现在从 NLTK 网站调用示例调用时,我得到:
In [360]: st = NERTagger('english.all.3class.distsim.crf.ser.gz')
---------------------------------------------------------------------------
LookupError Traceback (most recent call last)
<ipython-input-360-0c0ab770b0ff> in <module>()
----> 1 st = NERTagger('english.all.3class.distsim.crf.ser.gz')
/Library/Python/2.7/site-packages/nltk/tag/stanford.pyc in __init__(self, *args, **kwargs)
158
159 def __init__(self, *args, **kwargs):
--> 160 super(NERTagger, self).__init__(*args, **kwargs)
161
162 @property
/Library/Python/2.7/site-packages/nltk/tag/stanford.pyc in __init__(self, path_to_model, path_to_jar, encoding, verbose, java_options)
40 self._JAR, path_to_jar,
41 searchpath=(), url=_stanford_url,
---> 42 verbose=verbose)
43
44 self._stanford_model = find_file(path_to_model,
/Library/Python/2.7/site-packages/nltk/__init__.pyc in find_jar(name, path_to_jar, env_vars, searchpath, url, verbose)
595 (name, url))
596 div = '='*75
--> 597 raise LookupError('\n\n%s\n%s\n%s' % (div, msg, div))
598
599 ##########################################################################
LookupError:
===========================================================================
NLTK was unable to find stanford-ner.jar! Set the CLASSPATH
environment variable.
For more information, on stanford-ner.jar, see:
<http://nlp.stanford.edu/software>
===========================================================================
所以我错误地设置了环境变量。有人可以帮我吗?
我解决了。
- 像你一样设置 STANFORD_MODELS # 我向你学习了,谢谢!
- 将 nltk.tag.stanford 导入为 st
- tagger = st.StanfordNERTagger(PATH_TO_GZ, PATH_TO_JAR) # 这里 PATH_TO_GZ 和 PATH_TO_JAR 是我存储文件的完整路径 "all.3class.distsim.crf.ser.gz" 和文件 "stanford-ner.jar"
- 现在标注器可以使用了。 # try tagger.tag(‘Rami Eid 正在纽约石溪大学学习’.split())
与CLASSPATH无关
希望对您有所帮助!
这是另一种方法:
from nltk.tag.stanford import NERTagger
import os
java_path = "/Java/jdk1.8.0_45/bin/java.exe"
os.environ['JAVAHOME'] = java_path
st = NERTagger('../ner-model.ser.gz','../stanford-ner.jar')
NERTagger 有两个参数:模型文件的路径和 jar 文件的路径。
试试这个方法:
from nltk.tag.stanford import StanfordNERTagger
st = StanfordNERTagger('/usr/share/stanford-ner/classifiers/english.all.3class.distsim.crf.ser.gz', '/usr/share/stanford-ner/stanford-ner.jar')
st.tag('Rami Eid is studying at Stony Brook University in NY'.split())
对我有用!
from nltk.tag import StanfordNERTagger
import os
java_path = "C:/Program Files/Java/jdk1.8.0_121/bin/java.exe"
os.environ['JAVAHOME'] = "JAVA_PATH" #this java path you get from command 'echo %PATH%'in terminal
st = StanfordNERTagger('/usr/share/stanford ner/classifiers/english.all.3class.distsim.crf.ser.gz','/usr/share/stanford-ner/stanford-ner.jar',encoding='utf-8') #download 'stanford-postagger-2017-06-09' package and give the paths for.gz &.jar
我无法在 NLTK 中导入 NER Stanford Tagger。这就是我所做的:
已从 here 下载 java 代码
并添加了一个环境变量 STANFORD_MODELS
,其中包含存储 java 代码的文件夹的路径。
根据 NLTK 站点上提供的信息,这应该足够了。它说:
"Tagger models need to be downloaded from http://nlp.stanford.edu/software and the STANFORD_MODELS environment variable set (a colon-separated list of paths)."
请问有好心人帮帮我吗?
编辑:下载的文件夹位于 /Users/-----------/Documents/JavaJuno/stanford-ner-2015-04-20 并包含这些文件:
LICENSE.txt lib ner.sh stanford-ner-3.5.2-javadoc.jar
NERDemo.java ner-gui.bat sample-conll-file.txt stanford-ner-3.5.2-sources.jar
README.txt ner-gui.command sample-w-time.txt stanford-ner-3.5.2.jar
build.xml ner-gui.sh sample.ner.txt stanford-ner.jar
classifiers ner.bat sample.txt
然后我添加了一个环境变量STANFORD_MODELS:
os.environ["STANFORD_MODELS"] = "/Users/-----------/Documents/JavaJuno/stanford-ner-2015-04-20"
从 nltk.tag 导入 StanfordNERTagger 调用产生错误:
ImportError Traceback (most recent call last)
<ipython-input-356-f4287e573edc> in <module>()
----> 1 from nltk.tag import StanfordNERTagger
ImportError: cannot import name StanfordNERTagger
此外,如果这可能相关,这就是我的 nltk.tag 文件夹中的内容:
__init__.py api.pyc crf.py hmm.pyc senna.py sequential.pyc stanford.py tnt.pyc
__init__.pyc brill.py crf.pyc hunpos.py senna.pyc simplify.py stanford.pyc util.py
api.py brill.pyc hmm.py hunpos.pyc sequential.py simplify.pyc tnt.py util.pyc
EDIT2:我已经成功导入了 NER Tagger,方法是:
from nltk.tag.stanford import NERTagger
但现在从 NLTK 网站调用示例调用时,我得到:
In [360]: st = NERTagger('english.all.3class.distsim.crf.ser.gz')
---------------------------------------------------------------------------
LookupError Traceback (most recent call last)
<ipython-input-360-0c0ab770b0ff> in <module>()
----> 1 st = NERTagger('english.all.3class.distsim.crf.ser.gz')
/Library/Python/2.7/site-packages/nltk/tag/stanford.pyc in __init__(self, *args, **kwargs)
158
159 def __init__(self, *args, **kwargs):
--> 160 super(NERTagger, self).__init__(*args, **kwargs)
161
162 @property
/Library/Python/2.7/site-packages/nltk/tag/stanford.pyc in __init__(self, path_to_model, path_to_jar, encoding, verbose, java_options)
40 self._JAR, path_to_jar,
41 searchpath=(), url=_stanford_url,
---> 42 verbose=verbose)
43
44 self._stanford_model = find_file(path_to_model,
/Library/Python/2.7/site-packages/nltk/__init__.pyc in find_jar(name, path_to_jar, env_vars, searchpath, url, verbose)
595 (name, url))
596 div = '='*75
--> 597 raise LookupError('\n\n%s\n%s\n%s' % (div, msg, div))
598
599 ##########################################################################
LookupError:
===========================================================================
NLTK was unable to find stanford-ner.jar! Set the CLASSPATH
environment variable.
For more information, on stanford-ner.jar, see:
<http://nlp.stanford.edu/software>
===========================================================================
所以我错误地设置了环境变量。有人可以帮我吗?
我解决了。
- 像你一样设置 STANFORD_MODELS # 我向你学习了,谢谢!
- 将 nltk.tag.stanford 导入为 st
- tagger = st.StanfordNERTagger(PATH_TO_GZ, PATH_TO_JAR) # 这里 PATH_TO_GZ 和 PATH_TO_JAR 是我存储文件的完整路径 "all.3class.distsim.crf.ser.gz" 和文件 "stanford-ner.jar"
- 现在标注器可以使用了。 # try tagger.tag(‘Rami Eid 正在纽约石溪大学学习’.split())
与CLASSPATH无关
希望对您有所帮助!
这是另一种方法:
from nltk.tag.stanford import NERTagger
import os
java_path = "/Java/jdk1.8.0_45/bin/java.exe"
os.environ['JAVAHOME'] = java_path
st = NERTagger('../ner-model.ser.gz','../stanford-ner.jar')
NERTagger 有两个参数:模型文件的路径和 jar 文件的路径。
试试这个方法:
from nltk.tag.stanford import StanfordNERTagger
st = StanfordNERTagger('/usr/share/stanford-ner/classifiers/english.all.3class.distsim.crf.ser.gz', '/usr/share/stanford-ner/stanford-ner.jar')
st.tag('Rami Eid is studying at Stony Brook University in NY'.split())
对我有用!
from nltk.tag import StanfordNERTagger
import os
java_path = "C:/Program Files/Java/jdk1.8.0_121/bin/java.exe"
os.environ['JAVAHOME'] = "JAVA_PATH" #this java path you get from command 'echo %PATH%'in terminal
st = StanfordNERTagger('/usr/share/stanford ner/classifiers/english.all.3class.distsim.crf.ser.gz','/usr/share/stanford-ner/stanford-ner.jar',encoding='utf-8') #download 'stanford-postagger-2017-06-09' package and give the paths for.gz &.jar