相关疑难解决方法(0)

如何在Windows中添加到pythonpath?

我有一个托管所有Django应用程序的目录(C:\My_Projects).我想将此目录添加到我的PYTHONPATH所以我可以直接调用这些应用程序.

我尝试从Windows GUI()添加C:\My_Projects\;到我的Path变量My Computer > Properties > Advanced System Settings > Environment Variables.但它仍然没有读取coltrane模块并生成此错误:

错误:没有名为coltrane的模块

python windows environment-variables pythonpath

347
推荐指数
17
解决办法
129万
查看次数

使用NLTK中的Stanford NER Tagger提取人员和组织列表

我正在尝试使用Python NLTK中的Stanford Named Entity Recognizer(NER)提取人员和组织的列表.当我跑:

from nltk.tag.stanford import NERTagger
st = NERTagger('/usr/share/stanford-ner/classifiers/all.3class.distsim.crf.ser.gz',
               '/usr/share/stanford-ner/stanford-ner.jar') 
r=st.tag('Rami Eid is studying at Stony Brook University in NY'.split())
print(r) 
Run Code Online (Sandbox Code Playgroud)

输出是:

[('Rami', 'PERSON'), ('Eid', 'PERSON'), ('is', 'O'), ('studying', 'O'),
('at', 'O'), ('Stony', 'ORGANIZATION'), ('Brook', 'ORGANIZATION'),
('University', 'ORGANIZATION'), ('in', 'O'), ('NY', 'LOCATION')]
Run Code Online (Sandbox Code Playgroud)

我想要的是从这个列表中提取这种形式的所有人和组织:

Rami Eid
Sony Brook University
Run Code Online (Sandbox Code Playgroud)

我试图循环遍历元组列表:

for x,y in i:
        if y == 'ORGANIZATION':
            print(x)
Run Code Online (Sandbox Code Playgroud)

但是这段代码只打印每行一个实体:

Sony 
Brook 
University
Run Code Online (Sandbox Code Playgroud)

对于真实数据,可以有多个组织,一个句子中的人,我如何在不同实体之间设置限制?

python named-entity-recognition nltk stanford-nlp

24
推荐指数
2
解决办法
2万
查看次数

如何使用Stanford NLP Tagger和NLTK提高速度

有没有办法以更高效的方式使用Standford Tagger?

每次调用NLTK的包装器都会为每个分析的字符串启动一个新的java实例,这非常非常慢,特别是当使用更大的外语模型时......

http://www.nltk.org/api/nltk.tag.html#module-nltk.tag.stanford

python nltk stanford-nlp

12
推荐指数
2
解决办法
5132
查看次数

在NLTK Python中使用Stanford POS Tagger时出错

我试图在NLTK中使用Stanford POS Tagger,但我无法运行此处给出的示例代码http://www.nltk.org/api/nltk.tag.html#module-nltk.tag.stanford

import nltk
from nltk.tag.stanford import POSTagger
st = POSTagger(r'english-bidirectional-distim.tagger',r'D:/stanford-postagger/stanford-postagger.jar')
st.tag('What is the airspeed of an unladen swallow?'.split())
Run Code Online (Sandbox Code Playgroud)

我已经添加了环境变量

CLASSPATH = D:/stanford-postagger/stanford-postagger.jar
STANFORD_MODELS =  D:/stanford-postagger/models/
Run Code Online (Sandbox Code Playgroud)

这是我不断得到的错误

Traceback(最近一次调用最后一次):

File "D:\pos_stanford.py", line 4, in <module>
    st = POSTagger(r'english-bidirectional-distim.tagger',
         r'D:/stanford-postagger/stanford-postagger.jar')  
... LookupError: NLTK was unable to find the english-bidirectional-distim.tagger file! Use software specific configuration paramaters or set the STANFORD_MODELS environment variable.
Run Code Online (Sandbox Code Playgroud)

一些论坛建议

File "C:\Python27\lib\site-packages\nltk\tag\stanford.py", line 45, in __init__
env_vars=('STANFORD_MODELS'), verbose=verbose)
Run Code Online (Sandbox Code Playgroud)

应该改变,以便有一个逗号

env_vars=('STANFORD_MODELS',), verbose=verbose)
Run Code Online (Sandbox Code Playgroud)

但它也没有解决问题.请帮我解决这个问题.

其他信息:我使用的是Windows 7 64位Python 2.7 32位NLTK 2.0

nltk pos-tagger stanford-nlp python-2.7

11
推荐指数
1
解决办法
8374
查看次数

nltk StanfordNERTagger:NoClassDefFoundError:org/slf4j/LoggerFactory(在Windows中)

注意:我使用Python 2.7作为Anaconda发行版的一部分.我希望这不是nltk 3.1的问题.

我正在尝试使用nltk作为NER

import nltk
from nltk.tag.stanford import StanfordNERTagger 
#st = StanfordNERTagger('stanford-ner/all.3class.distsim.crf.ser.gz', 'stanford-ner/stanford-ner.jar')
st = StanfordNERTagger('english.all.3class.distsim.crf.ser.gz') 
print st.tag(str)
Run Code Online (Sandbox Code Playgroud)

但我明白了

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
    at edu.stanford.nlp.io.IOUtils.<clinit>(IOUtils.java:41)
    at edu.stanford.nlp.ie.AbstractSequenceClassifier.classifyAndWriteAnswers(AbstractSequenceClassifier.java:1117)
    at edu.stanford.nlp.ie.AbstractSequenceClassifier.classifyAndWriteAnswers(AbstractSequenceClassifier.java:1076)
    at edu.stanford.nlp.ie.AbstractSequenceClassifier.classifyAndWriteAnswers(AbstractSequenceClassifier.java:1057)
    at edu.stanford.nlp.ie.crf.CRFClassifier.main(CRFClassifier.java:3088)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 5 more

Traceback (most recent call last):
  File "X:\jnk.py", line 47, in <module>
    print st.tag(str)
  File "X:\Anaconda2\lib\site-packages\nltk\tag\stanford.py", line 66, in tag
    return sum(self.tag_sents([tokens]), []) 
  File "X:\Anaconda2\lib\site-packages\nltk\tag\stanford.py", line 89, in tag_sents
    stdout=PIPE, …
Run Code Online (Sandbox Code Playgroud)

python windows nlp nltk stanford-nlp

11
推荐指数
1
解决办法
5390
查看次数

NLTK无法找到stanford-postagger.jar!设置CLASSPATH环境变量

我正在开发一个项目,要求我使用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.

    ===========================================================================
Run Code Online (Sandbox Code Playgroud)

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

python nltk pos-tagger stanford-nlp

11
推荐指数
1
解决办法
2万
查看次数

Stanford使用NLTK命名实体识别器(NER)功能

这是可能的:使用NLTK获得(类似)斯坦福命名实体识别器功能吗?

有什么例子吗?

特别是,我感兴趣的是提取LOCATION部分文本.例如,来自文本

会议将于11月18日在南卡罗来纳州威斯汀西区22号12345举行

理想情况下,我想得到类似的东西

(S  
22/LOCATION
(LOCATION West/LOCATION Westin/LOCATION)
st./LOCATION
,/,
(South/LOCATION Carolina/LOCATION)
,/,
12345/LOCATION
Run Code Online (Sandbox Code Playgroud)

.....

或者干脆

22 West Westin st., South Carolina, 12345
Run Code Online (Sandbox Code Playgroud)

相反,我只能得到

(S
  The/DT
  meeting/NN
  will/MD
  be/VB
  held/VBN
  at/IN
  22/CD
  (LOCATION West/NNP Westin/NNP)
  st./NNP
  ,/,
  (GPE South/NNP Carolina/NNP)
  ,/,
  12345/CD
  on/IN
  Nov.-18/-NONE-)
Run Code Online (Sandbox Code Playgroud)

请注意,如果我将文本输入 http://nlp.stanford.edu:8080/ner/process,我得到的结果远非完美(街道号和邮政编码仍然缺失),但至少"st." 是LOCATION的一部分,南卡罗来纳州是一个位置,而不是一些"GPE/NNP":?

我做错了什么?如何修复它以使用NLTK从某些文本中提取位置片?

提前谢谢了!

location named-entity-recognition nltk

9
推荐指数
1
解决办法
6458
查看次数

Spacy中的依赖解析树

我有句子约翰在商店看到一个华丽的帽子
如何将其表示为依赖树,如下所示?

(S
      (NP (NNP John))
      (VP
        (VBD saw)
        (NP (DT a) (JJ flashy) (NN hat))
        (PP (IN at) (NP (DT the) (NN store)))))
Run Code Online (Sandbox Code Playgroud)

我从这里得到了这个脚本

import spacy
from nltk import Tree
en_nlp = spacy.load('en')

doc = en_nlp("John saw a flashy hat at the store")

def to_nltk_tree(node):
    if node.n_lefts + node.n_rights > 0:
        return Tree(node.orth_, [to_nltk_tree(child) for child in node.children])
    else:
        return node.orth_


[to_nltk_tree(sent.root).pretty_print() for sent in doc.sents]
Run Code Online (Sandbox Code Playgroud)

我得到以下,但我正在寻找树(NLTK)格式.

     saw                 
  ____|_______________    
 |        |           at 
 |        |           |   
 | …
Run Code Online (Sandbox Code Playgroud)

nlp spacy dependency-parsing

8
推荐指数
2
解决办法
2789
查看次数

在NLTK中实例化和使用StanfordTagger

我为这个问题的新手性质道歉 - 我一直试图找出Python包装和名称空间,但更好的观点似乎让我无法理解.也就是说,我想将Python包装器用于斯坦福的词性标注器.我在这里找到文档没有问题,它提供了一个使用示例:

st = StanfordTagger('bidirectional-distsim-wsj-0-18.tagger')
st.tag('What is the airspeed of an unladen swallow ?'.split())
    [('What', 'WP'), ('is', 'VBZ'), ('the', 'DT'), ('airspeed', 'NN'), ('of', 'IN'), ('an', 'DT'), ('unladen', 'JJ'), ('swallow', 'VB'), ('?', '.')]
Run Code Online (Sandbox Code Playgroud)

这看起来很棒,但我似乎无法在我的本地Python + NLTK安装中显示正确的命名空间(我有最新的NLTK版本,并在Python 2.6.x以及2.7.x中尝试过以下) :

>>> import nltk
>>> from nltk import *
>>> from nltk.tag import stanford 
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name stanford
Run Code Online (Sandbox Code Playgroud)

我也尝试了这个import语句,结果相同:

>>> from nltk.tag.stanford import StanfordTagger
Traceback (most recent call last): …
Run Code Online (Sandbox Code Playgroud)

python nltk

7
推荐指数
1
解决办法
5110
查看次数

NLTK:为什么nltk无法识别stanford-ner的CLASSPATH变量?

这是我的代码

from nltk.tag import StanfordNERTagger
st = StanfordNERTagger('english.all.3class.distsim.crf.ser.gz')
Run Code Online (Sandbox Code Playgroud)

我明白了

NLTK was unable to find stanford-ner.jar! Set the CLASSPATH
  environment variable.
Run Code Online (Sandbox Code Playgroud)

这就是我.bashrc在ubuntu中的样子

export CLASSPATH=/home/wolfgang/Downloads/stanford-ner-2015-04-20/stanford-ner-3.5.2.jar
export STANFORD_MODELS=/home/wolfgang/Downloads/stanford-ner-2015-04-20/classifiers
Run Code Online (Sandbox Code Playgroud)

此外,我尝试以这种方式在python中打印环境变量

import os
os.environ.get('CLASSPATH')
Run Code Online (Sandbox Code Playgroud)

我接受了

'/home/wolfgang/Downloads/stanford-ner-2015-04-20/stanford-ner-3.5.2.jar'
Run Code Online (Sandbox Code Playgroud)

因此变量正在设置!

那有什么不对?

为什么不知道我的环境变量?

python named-entity-recognition nltk stanford-nlp

6
推荐指数
1
解决办法
9426
查看次数