执行和测试stanford核心nlp示例

我下载了stanford core nlp软件包并试图在我的机器上测试它。

使用命令: java -cp "*" -mx1g edu.stanford.nlp.sentiment.SentimentPipeline -file input.txt

我以positivenegativeforms获得情绪结果。 input.txt包含要测试的句子。

更多命令: java -cp stanford-corenlp-3.3.0.jar;stanford-corenlp-3.3.0-models.jar;xom.jar;joda-time.jar -Xmx600m edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma,parse -file input.txt在执行时给出以下行:

 H:\Drive E\Stanford\stanfor-corenlp-full-2013~>java -cp stanford-corenlp-3.3.0.j ar;stanford-corenlp-3.3.0-models.jar;xom.jar;joda-time.jar -Xmx600m edu.stanford .nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma,parse -file input.txt Adding annotator tokenize Adding annotator ssplit Adding annotator pos Reading POS tagger model from edu/stanford/nlp/models/pos-tagger/english-left3wo rds/english-left3words-distsim.tagger ... done [36.6 sec]. Adding annotator lemma Adding annotator parse Loading parser from serialized file edu/stanford/nlp/models/lexparser/englishPCF G.ser.gz ... done [13.7 sec]. Ready to process: 1 files, skipped 0, total 1 Processing file H:\Drive E\Stanford\stanfor-corenlp-full-2013~\input.txt ... wri ting to H:\Drive E\Stanford\stanfor-corenlp-full-2013~\input.txt.xml { Annotating file H:\Drive E\Stanford\stanfor-corenlp-full-2013~\input.txt [13.6 81 seconds] } [20.280 seconds] Processed 1 documents Skipped 0 documents, error annotating 0 documents Annotation pipeline timing information: PTBTokenizerAnnotator: 0.4 sec. WordsToSentencesAnnotator: 0.0 sec. POSTaggerAnnotator: 1.8 sec. MorphaAnnotator: 2.2 sec. ParserAnnotator: 9.1 sec. TOTAL: 13.6 sec. for 10 tokens at 0.7 tokens/sec. Pipeline setup: 58.2 sec. Total time for StanfordCoreNLP pipeline: 79.6 sec. H:\Drive E\Stanford\stanfor-corenlp-full-2013~> 

可以理解。 没有信息的结果。

我有一个例子: stanford core nlp java output

 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.trees.*; import edu.stanford.nlp.util.*; public class StanfordCoreNlpDemo { public static void main(String[] args) throws IOException { PrintWriter out; if (args.length > 1) { out = new PrintWriter(args[1]); } else { out = new PrintWriter(System.out); } PrintWriter xmlOut = null; if (args.length > 2) { xmlOut = new PrintWriter(args[2]); } StanfordCoreNLP pipeline = new StanfordCoreNLP(); Annotation annotation; if (args.length > 0) { annotation = new Annotation(IOUtils.slurpFileNoExceptions(args[0])); } else { annotation = new Annotation("Kosgi Santosh sent an email to Stanford University. He didn't get a reply."); } pipeline.annotate(annotation); pipeline.prettyPrint(annotation, out); if (xmlOut != null) { pipeline.xmlPrint(annotation, xmlOut); } // An Annotation is a Map and you can get and use the various analyses individually. // For instance, this gets the parse tree of the first sentence in the text. List sentences = annotation.get(CoreAnnotations.SentencesAnnotation.class); if (sentences != null && sentences.size() > 0) { CoreMap sentence = sentences.get(0); Tree tree = sentence.get(TreeCoreAnnotations.TreeAnnotation.class); out.println(); out.println("The first sentence parsed is:"); tree.pennPrint(out); } } } 

试图在netbeans中执行它,包括必要的库。 但它总是卡在中间或Exception in thread “main” java.lang.OutOfMemoryError: Java heap space给出exceptionException in thread “main” java.lang.OutOfMemoryError: Java heap space

我将内存设置为在property/run/VM box分配

知道如何使用命令行在java示例上运行?

我想获得这个例子的情绪评分

UPDATE

输出: java -cp "*" -mx1g edu.stanford.nlp.sentiment.SentimentPipeline -file input.txt

在此处输入图像描述

out put of: java -cp stanford-corenlp-3.3.0.j ar;stanford-corenlp-3.3.0-models.jar;xom.jar;joda-time.jar -Xmx600m edu.stanford .nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma,parse -file input.txt

出于上述命令

您需要将“情绪”注释器添加到注释器列表中:

 -annotators tokenize,ssplit,pos,lemma,parse,sentiment 

这将为XML中的每个句子节点添加“情绪”属性。

您可以在代码中执行以下操作:

 String text = "I am feeling very sad and frustrated."; Properties props = new Properties(); props.setProperty("annotators", "tokenize, ssplit, pos, lemma, parse, sentiment"); StanfordCoreNLP pipeline = new StanfordCoreNLP(props); <...> Annotation annotation = pipeline.process(text); List sentences = annotation.get(CoreAnnotations.SentencesAnnotation.class); for (CoreMap sentence : sentences) { String sentiment = sentence.get(SentimentCoreAnnotations.SentimentClass.class); System.out.println(sentiment + "\t" + sentence); } 

它将打印句子和句子本身的情绪,例如“我感到非常伤心和沮丧。”:

 Negative I am feeling very sad and frustrated. 

根据此处的示例,您需要运行情感分析。

 java -cp "*" -mx5g edu.stanford.nlp.sentiment.SentimentPipeline -file input.txt 

显然这是一个内存昂贵的操作,它可能不完整只有1千兆字节。 然后你可以使用“评估工具”

 java -cp "*" edu.stanford.nlp.sentiment.Evaluate edu/stanford/nlp/models/sentiment/sentiment.ser.gz input.txt 

这对我来说很好 –

Maven依赖:

   edu.stanford.nlp stanford-corenlp 3.5.2 models   edu.stanford.nlp stanford-corenlp 3.5.2   edu.stanford.nlp stanford-parser 3.5.2  

Java代码:

 public static void main(String[] args) throws IOException { String text = "This World is an amazing place"; Properties props = new Properties(); props.setProperty("annotators", "tokenize, ssplit, pos, lemma, parse, sentiment"); StanfordCoreNLP pipeline = new StanfordCoreNLP(props); Annotation annotation = pipeline.process(text); List sentences = annotation.get(CoreAnnotations.SentencesAnnotation.class); for (CoreMap sentence : sentences) { String sentiment = sentence.get(SentimentCoreAnnotations.SentimentClass.class); System.out.println(sentiment + "\t" + sentence); } } 

结果:

非常积极这个世界是一个了不起的地方