Eclipse下使用Stanford CoreNLP的方法

源码下载地址:CoreNLP官网

目前release的CoreNLP version 3.5.0版本仅支持java-1.8及以上版本,因此有时需要为Eclipse添加jdk-1.8配置,配置方法如下:

  • 首先,去oracle官网下载java-1.8,下载网址为:java下载,安装完成后。
  • 打开Eclipse,选择Window -> Preferences -> Java –> Installed JREs 进行配置:
  • 点击窗体右边的“add”,然后添加一个“Standard VM”(应该是标准虚拟机的意思),然后点击“next”;
  • 在”JRE HOME”那一行点击右边的“Directory…”找到你java 的安装路径,比如“C:Program Files/Java/jdk1.8”

这样你的Eclipse就已经支持jdk-1.8了。

1. 新建java工程,注意编译环境版本选择1.8

2. 将官网下载的源码解压到工程下,并导入所需jar包

如导入stanford-corenlp-3.5.0.jar、stanford-corenlp-3.5.0-javadoc.jar、stanford-corenlp-3.5.0-models.jar、stanford-corenlp-3.5.0-sources.jar、xom.jar等

导入jar包过程为:项目右击->Properties->Java Build Path->Libraries,点击“Add JARs”,在路径中选取相应的jar包即可。

3. 新建TestCoreNLP类,代码如下

 1 package Test;
 2
 3 import java.util.List;
 4 import java.util.Map;
 5 import java.util.Properties;
 6
 7 import edu.stanford.nlp.dcoref.CorefChain;
 8 import edu.stanford.nlp.dcoref.CorefCoreAnnotations.CorefChainAnnotation;
 9 import edu.stanford.nlp.ling.CoreAnnotations.LemmaAnnotation;
10 import edu.stanford.nlp.ling.CoreAnnotations.NamedEntityTagAnnotation;
11 import edu.stanford.nlp.ling.CoreAnnotations.PartOfSpeechAnnotation;
12 import edu.stanford.nlp.ling.CoreAnnotations.SentencesAnnotation;
13 import edu.stanford.nlp.ling.CoreAnnotations.TextAnnotation;
14 import edu.stanford.nlp.ling.CoreAnnotations.TokensAnnotation;
15 import edu.stanford.nlp.ling.CoreLabel;
16 import edu.stanford.nlp.pipeline.Annotation;
17 import edu.stanford.nlp.pipeline.StanfordCoreNLP;
18 import edu.stanford.nlp.semgraph.SemanticGraph;
19 import edu.stanford.nlp.semgraph.SemanticGraphCoreAnnotations.CollapsedCCProcessedDependenciesAnnotation;
20 import edu.stanford.nlp.sentiment.SentimentCoreAnnotations;
21 import edu.stanford.nlp.trees.Tree;
22 import edu.stanford.nlp.trees.TreeCoreAnnotations.TreeAnnotation;
23 import edu.stanford.nlp.util.CoreMap;
24
25 public class TestCoreNLP {
26     public static void main(String[] args) {
27         // creates a StanfordCoreNLP object, with POS tagging, lemmatization, NER, parsing, and coreference resolution
28         Properties props = new Properties();
29         props.put("annotators", "tokenize, ssplit, pos, lemma, ner, parse, dcoref");
30         StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
31
32         // read some text in the text variable
33         String text = "Add your text here:Beijing sings Lenovo";
34
35         // create an empty Annotation just with the given text
36         Annotation document = new Annotation(text);
37
38         // run all Annotators on this text
39         pipeline.annotate(document);
40
41         // these are all the sentences in this document
42         // a CoreMap is essentially a Map that uses class objects as keys and has values with custom types
43         List<CoreMap> sentences = document.get(SentencesAnnotation.class);
44
45         System.out.println("word\tpos\tlemma\tner");
46         for(CoreMap sentence: sentences) {
47              // traversing the words in the current sentence
48              // a CoreLabel is a CoreMap with additional token-specific methods
49             for (CoreLabel token: sentence.get(TokensAnnotation.class)) {
50                 // this is the text of the token
51                 String word = token.get(TextAnnotation.class);
52                 // this is the POS tag of the token
53                 String pos = token.get(PartOfSpeechAnnotation.class);
54                 // this is the NER label of the token
55                 String ne = token.get(NamedEntityTagAnnotation.class);
56                 String lemma = token.get(LemmaAnnotation.class);
57
58                 System.out.println(word+"\t"+pos+"\t"+lemma+"\t"+ne);
59             }
60             // this is the parse tree of the current sentence
61             Tree tree = sentence.get(TreeAnnotation.class);
62
63             // this is the Stanford dependency graph of the current sentence
64             SemanticGraph dependencies = sentence.get(CollapsedCCProcessedDependenciesAnnotation.class);
65         }
66         // This is the coreference link graph
67         // Each chain stores a set of mentions that link to each other,
68         // along with a method for getting the most representative mention
69         // Both sentence and token offsets start at 1!
70         Map<Integer, CorefChain> graph = document.get(CorefChainAnnotation.class);
71     }
72 }

PS:该代码的思想是将text字符串交给Stanford CoreNLP处理,StanfordCoreNLP的各个组件(annotator)按“tokenize(分词), ssplit(断句), pos(词性标注), lemma(词元化), ner(命名实体识别), parse(语法分析), dcoref(同义词分辨)”顺序进行处理。

处理完后List<CoreMap> sentences = document.get(SentencesAnnotation.class);中包含了所有分析结果,遍历即可获知结果。

这里简单的将单词、词性、词元、是否实体打印出来。其余的用法参见官网(如sentiment、parse、relation等)。

4. 执行结果:

时间: 2024-10-03 13:22:38

Eclipse下使用Stanford CoreNLP的方法的相关文章

eclipse下添加viplugin插件的方法

http://www.viplugin.com/ 在eclipse根目录下建立文件:viplugin2.lic,然后在里面添加以下字符串: nd4UFjUMBADcUSeSW8ocLKoGP3lpbWKkcOhIEjarQ15G4hmJI1wysZnHRp1bCsMI

eclipse下使用cygwin的方法(Windows下用eclipse玩gcc/g++和gdb)

明天就回国了,今晚回国前写写如何配置eclipse和CDT.这个配置方法网上讨论不是很多,可能用的人少,毕竟Windows上写C++程序多数喜欢VS,即使写的是Linux程序,很多人仍然会用VS(说只喜欢用VI的人我佩服).的确VS很强大,但我也geek一回,使用eclipse做C++程序(用VI才是真正的geek?好吧,我就这水准了,反正我会用VI,但不习惯VI).希望这篇小小的文章能帮助想在Windows平台上使用gcc/g++和gdb并利用IDE调试程序的人.也希望我们谈到g++和gcc的

【转】Eclipse下配置CDT和MinGW终极方法。

网上关于Eclipse中配置CDT和MinGW的教程很多,但大部分都比较早,有些方法已经不适合现在的版本了.为了让那些喜爱Eclipse,计划在Eclipse平台下开发C++的爱好者不至于因为第一步没有迈开,而放弃一个绚丽多彩的Eclipse世界,我就在这介绍一些在Eclipse下配置CDT和MinGW的方法. 网上有许多介绍Eclipse配置的文章,但大多步骤较多,令人望而却步.在这里,第一部分先介绍Eclipse的安装,第二部分是CDT+MinGW的傻瓜式安装教程.第三部分是CDT+MinG

eclipse下java中注释字体太小和xml中中文字体太小问题解决方法

我们在win7下进行android应用开发,需要搭建相应的开发环境.现在普遍基本上都是eclipse+adt+sdk,在本人搭建完环境后,发现eclipse下,java中的注释和xml中的中文字体变得特别小,无法看的清楚.解决方法如下: 1.Java中字体变大方法: 打开eclipse,Window-->Preferences,如下图打开: 双击第二个红色框,如下图: 将字体改成五号即可. 2.xml中中文字体太小解决方法: 打开eclipse,Window-->Preferences--&g

eclipse下java中凝视字体太小和xml中中文字体太小问题解决方法

我们在win7下进行android应用开发.须要搭建对应的开发环境.如今普遍基本上都是eclipse+adt+sdk,在本人搭建完环境后,发现eclipse下.java中的凝视和xml中的中文字体变得特别小,无法看的清楚.解决方法例如以下: 1.Java中字体变慷慨法: 打开eclipse.Window-->Preferences,例如以下图打开: 双击第二个红色框,例如以下图: 将字体改成五号就可以. 2.xml中中文字体太小解决方法: 打开eclipse.Window-->Preferen

hibernate框架在eclipse下的配置方法(一)

一.ORM O:object 对象 R:Realtion 关系(关系型数据库) M:Mapping 映射 ORM:对象关系型映射 目前流行的编程语言,如Java.C# ,它们都是面向对象的编程语言,而目前主流的数据库产品例如Oracle.DB2等,依然是关系型数据库.编程语言和底层数据库发展的不协调(阻抗不匹配,例如数据库中无法直接实现存储继承.多态.封装等特征和行为),催生出了ORM框架.ORM框架可以作为面向对象语言和关系型数据库之间的桥梁. 二.Hibernate Hibernate是一个

Eclipse下导出java程序可执行的jar包图片无法显示问题的一种解决方法

说明:在eclipse中运行java程序的时候一切正常,可是当把jar包导出的时候却发现图片没法显示,这估计是java程序的各种配置和路径问题所导致,后来找到一种解决方法,供遇到这方面问题的学习java程序的鞋同参考: Java项目下的目录结构如下: 其中class类放在包:package accpedu; (即实际是在如上bin/accpedu文件夹下面) 通过下面的方法来引用图片时,在eclipse里面执行是可以正常显示图片的: ImageIcon image1 = new ImageIco

eclipse下修改项目名导致tomcat内发布名不一致的解决方法

这几天做了一个项目,后来因为一点原因需要修改Javaweb项目的名称,点击项目的名称->右键Refactor->Rename...  输入要修改的项目名称,保存后,部署到tomcat,突然发现eclipse下修改项目名导致tomcat内发布名不一致了 ,郁闷了,开始在网上找到解决办法,我是看 http://blog.chinaunix.net/uid-25820084-id-3531608.html 这个网站的kimutaku001的ChinaUnix博客位朋友的博客,解决了这个问题,我吧他说

将Stanford CoreNLP的解析结果构造为json格式

首次处理英文语料,需要进行一些基础的NLP处理,首选工具当然是Stanford CoreNLP.由于Stanford CoreNLP官方示例的解析结果不宜直接使用,所以我在它的基础上进行修改,最终将解析结果转为json格式,并依照哈工大ltp的解析结果的格式,将依存句法的解析结果也添加到json中. 1.Stanford CoreNLP的安装 最新版的Stanford CoreNLP仅支持jdk1.8,这比较奇葩,因为目前多数机器的jdk还只是1.6或1.7,最以我下载了支持jdk1.6的最后一