- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用斯坦福 CoreNLP 库从自然语言内容中提取信息。
我的目标是从句子中提取“主语- Action -宾语”对(简化)。
作为示例,请考虑以下句子:
John Smith only eats an apple and a banana for lunch. He's on a diet and his mother told him that it would be very healthy to eat less for lunch. John doesn't like it at all but since he's very serious with his diet, he doesn't want to stop.
从这句话中我想得到如下结果:
如何做到这一点?
或更具体地说:如何解析依赖树(或更适合的树?)以获得上面指定的结果?
任何给定此任务的提示、资源或代码片段都将受到高度赞赏。
旁注:我设法用他们的代表性提及替换共指,然后将 he
和 his
更改为相应的实体(在这种情况下是 John Smith)。
最佳答案
Stanford CoreNLP 工具包附带了一个依赖解析器。
首先,这是一个描述树中边类型的链接:
http://universaldependencies.github.io/docs/
您可以通过多种方式使用该工具包生成依赖关系树。
这里有一些示例代码可以帮助您入门:
import java.io.*;
import java.util.*;
import edu.stanford.nlp.io.*;
import edu.stanford.nlp.ling.*;
import edu.stanford.nlp.pipeline.*;
import edu.stanford.nlp.util.*;
import edu.stanford.nlp.semgraph.*;
import edu.stanford.nlp.trees.TreeCoreAnnotations.*;
public class DependencyTreeExample {
public static void main (String[] args) throws IOException {
// set up properties
Properties props = new Properties();
props.setProperty("ssplit.eolonly","true");
props.setProperty("annotators",
"tokenize, ssplit, pos, depparse");
// set up pipeline
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
// get contents from file
String content = new Scanner(new File(args[0])).useDelimiter("\\Z").next();
System.out.println(content);
// read in a product review per line
Annotation annotation = new Annotation(content);
pipeline.annotate(annotation);
List<CoreMap> sentences = annotation.get(CoreAnnotations.SentencesAnnotation.class);
for (CoreMap sentence : sentences) {
System.out.println("---");
System.out.println("sentence: "+sentence);
SemanticGraph tree = sentence.get(SemanticGraphCoreAnnotations.CollapsedCCProcessedDependenciesAnnotation.class);
System.out.println(tree.toString(SemanticGraph.OutputFormat.READABLE));
}
}
}
说明:
输出示例:
sentence: John doesn't like it at all.
dep reln gov
--- ---- ---
like-4 root root
John-1 nsubj like-4
does-2 aux like-4
n't-3 neg like-4
it-5 dobj like-4
at-6 case all-7
all-7 nmod:at like-4
.-8 punct like-4
这将打印出依赖关系解析。通过使用 SemanticGraph 对象,您可以编写代码来查找所需的模式类型。
您会注意到,在此示例中,“like”通过“nsubj”指向“John”,“like”通过“dobj”指向“it”
作为引用,您应该查看 edu.stanford.nlp.semgraph.SemanticGraph
http://nlp.stanford.edu/nlp/javadoc/javanlp/edu/stanford/nlp/semgraph/SemanticGraph.html
关于nlp - 使用斯坦福 CoreNLP 进行关系提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31858305/
网站corenlp.run这应该是 CoreNLP 的演示站点,它显示了与我在本地机器上运行 CoreNLP 管道时完全不同的结果。 该网站实际上显示了正确的结果,而本地机器版本则没有。我想知道是否有
我不明白如何从我的 Java 应用程序加载 CoreNLP 的 Shift-Reduce Constituency Parser (SRCP)。 我正在使用 Apache Maven 来管理我的项目的
我正在尝试部署 stanford-corenlp-3.2.0-models.jar 但我的主机说 jar 太大? 如果我只是想使用 POS,我可以使用什么 jar 来代替。 或者我怎样才能分割 jar
当我启动CoreNLP Server时在 Linux 上: java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -po
从 https://github.com/stanfordnlp/CoreNLP 下载 CoreNLP 。当我运行时 $ java -mx4g src.edu.stanford.nlp.parser.
我正在尝试使用 Stanford CoreNLP。我使用了网络上的一些代码来了解 coreference 工具的运行情况。我尝试在 Eclipse 中运行该项目,但一直遇到内存不足异常。我尝试增加堆大
我正在使用斯坦福 coreNLP ( http://nlp.stanford.edu/software/corenlp.shtml ) 来解析句子并提取单词之间的依赖关系。 我已经设法像提供的链接中的
我正在尝试使用 Stanford coreNLP 将句子拆分为单词。我对包含撇号的单词有疑问。 例如,句子:我今年 24 岁。 像这样拆分:[我]['][24][岁][老] 是否可以使用 Stanfo
我想使用斯坦福 CoreNLP(或其他工具)提取两个实体之间的完整关系。 例如: Windows is more popular than Linux. This tool requires Java
stanford-corenlp 中的默认线程数是多少?具体来说,命名实体提取器,然后是信息提取器。另外,我希望两者都使用单个线程进行调试,我该如何设置? 谢谢! 最佳答案 默认为 1 个线程。 有两
我试图让斯坦福 CoreNLP 作为服务器正常运行(尽管问题可能会影响非服务器使用),但不断收到此错误: "ERROR CoreNLP - Failure to load language speci
在从斯坦福 CoreNLP 网站构建示例应用程序时,我遇到了一个奇怪的异常: Exception in thread "main" java.lang.RuntimeException: edu.st
我已经在 Eclipse 中设置了一个 Maven 项目。 他们只是一个类,src/main/java/App.java 包 com.nlptools.corenlp; import java.uti
我正在使用 CoreNlp 从大文本中提取信息。然而,它使用“三重”方法,其中单个句子产生许多输出,这很好,但有些句子没有意义。我试图通过运行另一个无监督 NLP 并尝试利用 CoreNlp 中的函数
我的代码开头有以下内容: import twitter4j.*; import java.util.List; import java.util.Properties; import ja
我正在尝试按照http://nlp.stanford.edu/downloads/corenlp.shtml中的说明在Stanford CoreNLP中添加一个新的注释器。 “添加新注释器Stanfo
我刚开始使用 Java 编写的程序,并且在让斯坦福CoreNLP 做它应该做的事情时遇到了很多麻烦。我将程序解压到它自己的目录中,并向其中添加了程序应该处理的 XML 文件。我用来在命令行中处理文件的
我正在尝试使用斯坦福 CoreNLP 关系提取器 ( http://nlp.stanford.edu/software/relationExtractor.shtml )。 我已经安装了 CoreNL
我在使用斯坦福大学的句子注释器时遇到了问题。作为输入,我得到了文本,其中包含句子,但其中某些部分的点后没有空格。像这样: Dog loves cat.Cat loves mouse. Mouse ha
我正在研究以下问题:我想使用 Stanford CoreNLP 将句子拆分为子句。例句可以是: "Richard is working with CoreNLP, but does not reall
我是一名优秀的程序员,十分优秀!