Как я могу использовать теги части речи Stanford NLP на испанском языке? - PullRequest
0 голосов
/ 07 ноября 2019

Я работаю со Stanford CoreNLP и у меня есть сомнения. Я хочу определить грамматическую категорию каждого слова, и когда я выполняю текст в командной строке с помощью:

java -cp "*" -Xmx2g edu.stanford.nlp.pipeline.StanfordCoreNLP -props StanfordCoreNLP-spanish.properties  -annotators tokenize,ssplit,pos, ner  -file entrada.txt -outputFormat conll

, вывод выглядит так:

1       tomar   _       VERB    _       _       _
2       una     _       DET     _       _       _
3       cerveza _       NOUN    _       _       _
4       en      _       ADP     _       _       _
5       Madrid  _       PROPN   _       _       _

Но когда я выполняю изNetBeans с этим кодом:

Properties props = new Properties();
        props.setProperty("annotators", "tokenize, ssplit, pos, lemma, ner");
        props.setProperty("tokenize.language", "es");
        props.setProperty("pos.model", "edu/stanford/nlp/models/pos-tagger/spanish/spanish-distsim.tagger");
        props.setProperty("ner.model", "edu/stanford/nlp/models/ner/spanish.ancora.distsim.s512.crf.ser.gz");
        props.setProperty("ner.applyNumericClassifiers", "true");
        props.setProperty("ner.useSUTime", "false");
        props.setProperty("ner.applyFineGrained", "false");
        props.setProperty("ner.language", "es");

        String text = "Ver una película de miedo, pasear por un parque";
        StanfordCoreNLP pipeline = new StanfordCoreNLP(props);

        Annotation document = new Annotation(text);


        pipeline.annotate(document);
        List<CoreMap> sentences = document.get(SentencesAnnotation.class);
        for(CoreMap sentence: sentences) {
            for (CoreLabel token: sentence.get(TokensAnnotation.class)) {
              String g = token.tag();
              String word = token.get(TextAnnotation.class);
              String pos = token.get(PartOfSpeechAnnotation.class);
              String ne = token.get(NamedEntityTagAnnotation.class);
              String lema = token.get(LemmaAnnotation.class);


              System.out.println(String.format("[%s] "
                      + "[%s] "
                      + "[%s] "
                      + "[%s] " , word, pos, ne, lema));
            }
        }

вывод выглядит так:

[Ver] [vmn0000] [O] [ver] 
[una] [di0000] [O] [una] 
[película] [nc0s000] [O] [película] 
[de] [sp000] [O] [de] 
[miedo] [nc0s000] [O] [miedo] 
[,] [fc] [O] [,] 
[pasear] [vmn0000] [O] [pasear] 
[por] [sp000] [O] [por] 
[un] [di0000] [O] [un] 
[parque] [nc0s000] [O] [parque] 

Итак, как я могу преобразовать теги, такие как "vmn0000" в "Глагол"?

Спасибо заранее !!

1 Ответ

0 голосов
/ 07 ноября 2019

Обязательно используйте Stanford CoreNLP 3.9.2 и модель UD для части речи.

edu/stanford/nlp/models/pos-tagger/spanish/spanish-ud.tagger
...