标签: stanford-nlp

使用斯坦福 CoreNLP 进行关系提取

我正在尝试使用斯坦福 CoreNLP 库从自然语言内容中提取信息。

我的目标是从句子中提取“主语-动作-宾语”对(简化)。

作为一个例子,请考虑以下句子:

约翰·史密斯午餐只吃一个苹果和一个香蕉。他正在节食,他的母亲告诉他,午餐少吃一点会非常健康。约翰一点也不喜欢,但由于他对饮食非常严格,所以他不想停止。

从这句话我想得到如下结果:

  • 约翰·史密斯 - 吃 - 午餐只吃一个苹果和一个香蕉
  • 他 - 正在 - 节食
  • 他的母亲告诉他,午餐少吃会非常健康。
  • 约翰 - 不喜欢 - (一点也不)
  • 他——是——对他的饮食很认真

一个人会怎样做呢?

或者更具体地说:如何解析依赖树(或更适合的树?)以获得上面指定的结果?

任何给定此任务的提示、资源或代码片段都将受到高度赞赏。

旁注:我设法用它们的代表性提及替换共指,然后将he和更改his为相应的实体(在这种情况下为约翰·史密斯)。

nlp text-mining stanford-nlp

5
推荐指数
1
解决办法
5097
查看次数

Java 中的 spaCy 替代品

我目前使用 spaCy 来遍历依赖树并生成实体。

nlp = get_spacy_model(detect_lang(unicode_text))
doc = nlp(unicode_text)

entities = set()
for sentence in doc.sents:

  # traverse tree picking up entities
  for token in sentence.subtree:
    ## pick entitites using some pre-defined rules

entities.discard('')
return entities
Run Code Online (Sandbox Code Playgroud)

spaCy 有什么好的 Java 替代品吗?

我正在寻找像 spaCy 那样生成依赖树的库。

编辑:

我研究了斯坦福解析器。但是,它生成了以下解析树:

                     ROOT
                      |
                      NP
       _______________|_________
      |                         NP
      |                _________|___
      |               |             PP
      |               |     ________|___
      NP              NP   |            NP
  ____|__________     |    |     _______|____
 DT   JJ    JJ   NN  NNS   IN   DT      JJ   NN
 |    |     |    | …
Run Code Online (Sandbox Code Playgroud)

nlp pos-tagger stanford-nlp spacy

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

是否可以将 word2vec 预训练的可用向量加载到 spark 中?

有没有办法将GoogleGlove 的预训练向量(模型)(例如GoogleNews-vectors-negative300.bin.gz)加载到 spark 中并执行诸如从 spark 提供的 findSynonyms 之类的操作?还是我需要从头开始加载和操作?

在这篇文章在 Spark 中加载 Word2Vec 模型,Tom Lous 建议将 bin 文件转换为 txt 并从那里开始,我已经这样做了..但接下来是什么?

在我昨天发布的一个问题中,我得到了一个答案,即 Parquet 格式的模型可以在 spark 中加载,因此我发布这个问题是为了确保没有其他选择。

scala stanford-nlp apache-spark word2vec

5
推荐指数
1
解决办法
1523
查看次数

stanford corenlp python 与 pexpect 错误

我正在尝试从 stanford corenlp python 包运行 corenlp.py 。当我运行它时,我收到此错误:

Traceback (most recent call last):
File "corenlp.py", line 592, in <module>
main()
File "corenlp.py", line 580, in main
nlp = StanfordCoreNLP(options.corenlp, properties=options.properties, serving=True)
File "corenlp.py", line 435, in __init__
self._spawn_corenlp()
File "corenlp.py", line 424, in _spawn_corenlp
self.corenlp.expect("\nNLP> ")
File "/Library/Python/2.7/site-packages/pexpect-4.2.1-py2.7.egg/pexpect/spawnbase.py", line 321, in expect
timeout, searchwindowsize, async)
File "/Library/Python/2.7/site-packages/pexpect-4.2.1-py2.7.egg/pexpect/spawnbase.py", line 345, in expect_list
return exp.expect_loop(timeout)
File "/Library/Python/2.7/site-packages/pexpect-4.2.1-py2.7.egg/pexpect/expect.py", line 105, in expect_loop
return self.eof(e)
File "/Library/Python/2.7/site-packages/pexpect-4.2.1-py2.7.egg/pexpect/expect.py", line 50, in eof
raise EOF(msg)
pexpect.exceptions.EOF: End …
Run Code Online (Sandbox Code Playgroud)

python pexpect stanford-nlp

5
推荐指数
0
解决办法
268
查看次数

NLTK CoreNLPDependencyParser:无法建立连接

我正在尝试按照此处的示例通过 NLTK 使用斯坦福解析器。

我遵循示例的前两行(带有必要的导入)

from nltk.parse.corenlp import CoreNLPDependencyParser
dep_parser = CoreNLPDependencyParser(url='http://localhost:9000')
parse, = dep_parser.raw_parse('The quick brown fox jumps over the lazy dog.')
Run Code Online (Sandbox Code Playgroud)

但我收到一条错误消息:

[...] Failed to establish a new connection: [Errno 61] Connection refused"
Run Code Online (Sandbox Code Playgroud)

我意识到尝试连接到作为构造函数输入给出的 url 一定是一个问题。

dep_parser = CoreNLPDependencyParser(url='http://localhost:9000')
Run Code Online (Sandbox Code Playgroud)

如果不是这个,我应该连接到哪个网址?如果这是正确的,问题是什么?

python nlp nltk stanford-nlp

5
推荐指数
1
解决办法
2223
查看次数

麻烦加载手套 840B 300d 矢量

似乎格式是,对于每一行,字符串就像“字号……”。所以很容易分裂。但是当我用下面的脚本分割它们时

import numpy as np
def loadGloveModel(gloveFile):
    print "Loading Glove Model"
    f = open(gloveFile,'r')
    model = {}
    for line in f:
        splitLine = line.split()
        word = splitLine[0]
        embedding = np.array([float(val) for val in splitLine[1:]])
        model[word] = embedding
    print "Done.",len(model)," words loaded!"
    return model
Run Code Online (Sandbox Code Playgroud)

我加载手套 840B 300d.txt。但是得到错误,我打印了我得到的 splitLine

['contact', 'name@domain.com', '0.016426', '0.13728', '0.18781', '0.75784', '0.44012', '0.096794' ... ]
Run Code Online (Sandbox Code Playgroud)

或者

['.', '.', '.', '.', '0.033459', '-0.085658', '0.27155', ...]
Run Code Online (Sandbox Code Playgroud)

请注意,此脚本在 glove.6b.* 中运行良好

python nlp stanford-nlp word2vec

5
推荐指数
1
解决办法
4824
查看次数

stanford-nlp 中使用 python 的回指解析

我正在尝试进行回指解析,下面是我的代码。

首先,我导航到下载 stanford 模块的文件夹。然后我在命令提示符下运行命令来初始化 stanford nlp 模块

java -mx4g -cp "*;stanford-corenlp-full-2017-06-09/*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 9000 -timeout 15000
Run Code Online (Sandbox Code Playgroud)

之后我在 Python 中执行以下代码

from pycorenlp import StanfordCoreNLP
nlp = StanfordCoreNLP('http://localhost:9000')
Run Code Online (Sandbox Code Playgroud)

我想换句Tom is a smart boy. He know a lot of thing.Tom is a smart boy. Tom know a lot of thing.并没有教程或在Python提供任何帮助。

我所能做的就是通过以下 Python 代码进行注释

共指解析

output = nlp.annotate(sentence, properties={'annotators':'dcoref','outputFormat':'json','ner.useSUTime':'false'})
Run Code Online (Sandbox Code Playgroud)

并通过解析 coref

coreferences = output['corefs']
Run Code Online (Sandbox Code Playgroud)

我低于 JSON

coreferences

{u'1': [{u'animacy': u'ANIMATE',
   u'endIndex': 2,
   u'gender': u'MALE',
   u'headIndex': 1,
   u'id': 1,
   u'isRepresentativeMention': True, …
Run Code Online (Sandbox Code Playgroud)

python nlp linguistics stanford-nlp pycorenlp

5
推荐指数
1
解决办法
3169
查看次数

NLP:在 doc2vec / word2vec 中进行预处理

一些关于词和文档嵌入主题的论文(word2vec、doc2vec)提到他们使用斯坦福 CoreNLP 框架来标记/词形还原/词性标记输入的词/句子:

语料库使用斯坦福 CoreNLP (Manning et al., 2014) 进行词形还原和 POS 标记,并且每个标记都被替换为其引理和词性标记

( http://www.ep.liu.se/ecp/131/039/ecp17131039.pdf )

对于预处理,我们使用斯坦福 CoreNLP 对单词进行标记和小写

( https://arxiv.org/pdf/1607.05368.pdf )

所以我的问题是:

  • 为什么第一篇论文应用 POS 标签?然后每个令牌会被替换为类似的东西{lemma}_{POS},整个东西用来训练模型吗?还是标签用于过滤令牌?例如,gensims WikiCorpus 默认应用词形还原,然后只保留几种类型的词性(动词、名词等)并去除其余部分。那么推荐的方式是什么?

  • 在我看来,第二篇论文中的引述就像他们只是将单词分开然后小写。这也是我在使用维基语料库之前第一次尝试的。在我看来,这应该为文档嵌入提供更好的结果,因为大多数 POS 类型都有助于句子的含义。我对吗?

在最初的 doc2vec 论文中,我没有找到有关其预处理的详细信息。

nlp stanford-nlp gensim word2vec doc2vec

5
推荐指数
1
解决办法
517
查看次数

导入 StanfordNER 标记器 Google Colab

我在尝试导入 StanfordNER Tagger 以用于 NER 时遇到了一些问题。这是我的代码(从这里的其他帖子中提取了部分代码):

import os
def install_java():
  !apt-get install -y openjdk-8-jdk-headless -qq > /dev/null
  os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-8-openjdk-amd64"
  !java -version
install_java()

!pip install StanfordCoreNLP
from stanfordcorenlp import StanfordCoreNLP
nlp = StanfordCoreNLP('stanford-corenlp', lang='en', memory='4g')
Run Code Online (Sandbox Code Playgroud)

我得到的错误突出显示了告诉我的最后一行代码:

OSError: stanford-corenlp is not a directory.
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒!

编辑:这是另一行对我有用的代码。对于 StanfordNERTagger 中的内容,将这些文件加载​​到 Colab 中并提供路径名。对我最初提出的问题做同样的事情。为我工作。

from nltk.tag import StanfordNERTagger
from nltk.tokenize import word_tokenize



st = StanfordNERTagger('/content/english.muc.7class.distsim.crf.ser.gz',
                   '/content/stanford-ner.jar',
                   encoding='utf-8')

text = 'While in France, Christine Lagarde discussed short-term stimulus efforts in a recent interview with the Wall Street …
Run Code Online (Sandbox Code Playgroud)

python stanford-nlp google-colaboratory

5
推荐指数
1
解决办法
1001
查看次数

把一个名词变成它的代词

我想用代词替换句子中的名词。我将使用它为 NLP 任务创建数据集。例如,如果我的句子是 -->

“杰克和瑞恩是朋友。杰克也是米歇尔的朋友。”

然后我想用“他”替换第二个杰克(斜体和粗体)。我已经完成了词性标注以在我的句子中找到名词。但我不知道如何从这里开始。如果我有一个可以使用的所有可能代词的列表,是否有一个语料库或系统可以告诉我最适合这个词的代词?

python nlp stanford-nlp python-3.x coreference-resolution

5
推荐指数
1
解决办法
210
查看次数