2013-12-03 4 views
9

Я загрузил пакеты stanford core nlp и попытался проверить его на своей машине.Выполнение и тестирование примера stanford core nlp

Использование команды: java -cp "*" -mx1g edu.stanford.nlp.sentiment.SentimentPipeline -file input.txt

я получил результат настроения в виде positive или negative. 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 при выполнении дает follwing строки:

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<CoreMap> 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

Ты мне установить память, которые будут выделены в property/run/VM box

Любая идея, как я могу запустить выше примере Java с помощью командной строки?

Я хочу, чтобы получить оценку настроений на примере

UPDATE

выход из: java -cp "*" -mx1g edu.stanford.nlp.sentiment.SentimentPipeline -file input.txt

enter image description here

из положить: 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

Out of of above command

+0

Что было создано в вашем примере, который сработал? (Это «H: \ Drive E \ Stanford \ stanfor-corenlp-full-2013 ~ \ input.txt.xml») –

+0

@home: 'OutOfMemoryError' Я уже искал и работал над решениями в Интернете. По-прежнему такая же ошибка сохраняется – user123

+0

@ElliottFrisch: Пожалуйста, см. Я обновил вопрос – user123

ответ

14

Вы должны добавить «настроение» аннотатор к списку аннотаторов:

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

Это добавит свойство «настроение» в каждое предложение узла в вашем XML.

+0

Я нашел пример, где не все 6 аннотаторов, используемых для выполнения анализа настроений, но только 4. POS & Lemma не включены, как это может повлиять на результаты? Пример: https://blog.openshift.com/day-20-stanford-corenlp-performing-sentiment-analysis-of-twitter-using-java/ –

3

На примере here вам необходимо запустить анализ настроений.

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

По-видимому, это дорогостоящая операция с памятью, она может не содержать только 1 гигабайт. Затем вы можете использовать «Evaluation Tool»

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

Elliott: Вы правильно, но я взял '-mx1g' в соответствии с моей конфигурацией системы, а в командной строке тоже работал – user123

+0

У вас есть опыт тестирования компонента Stanford coreNLP ? – user123

+0

Нет, у меня есть опыт работы с коммерческим движком сентиментальности, и у вас есть оценки голосов на этом изображении. –

20

Вы можете сделать следующее в вашем коде:

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<CoreMap> 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. 
+0

Где вы передаете входное предложение в программе? – Naveen

+0

Добавлен к примеру Аннотации аннотация = pipe.process (текст); – saganas

1

Это работает хорошо для меня -

зависимостями Maven:

 <dependency> 
      <groupId>edu.stanford.nlp</groupId> 
      <artifactId>stanford-corenlp</artifactId> 
      <version>3.5.2</version> 
      <classifier>models</classifier> 
     </dependency> 
     <dependency> 
      <groupId>edu.stanford.nlp</groupId> 
      <artifactId>stanford-corenlp</artifactId> 
      <version>3.5.2</version> 
     </dependency> 
     <dependency> 
      <groupId>edu.stanford.nlp</groupId> 
      <artifactId>stanford-parser</artifactId> 
      <version>3.5.2</version> 
     </dependency> 

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<CoreMap> sentences = annotation.get(CoreAnnotations.SentencesAnnotation.class); 
     for (CoreMap sentence : sentences) { 
      String sentiment = sentence.get(SentimentCoreAnnotations.SentimentClass.class); 
      System.out.println(sentiment + "\t" + sentence); 
     } 
    } 

Результаты:

Очень позитивный Этот Мир является амази ng place

Смежные вопросы