2016-05-08 2 views
2

Я хочу использовать парсер stanford в пределах ядраNLP. я уже получил этот пример работает:Stanford Parser - использование немецкой модели jar

http://stanfordnlp.github.io/CoreNLP/simple.html

НО: мне нужна немецкая модель. Поэтому я загрузил «stanford-german-2016-01-19-models.jar».

Но как я могу установить этот файл jar для использования? я нашел только:

LexicalizedParser lp = LexicalizedParser.loadModel("englishPCFG.ser.gz"); 

, но у меня есть баночка с моделями germn, а не ... ser.gz.

Может ли любая помощь помочь?

+1

Я бы предположил, что в jar содержатся данные, и вы добавили бы jar в путь сборки вашего проекта, чтобы получить к нему доступ, нет? –

+0

Ты прав. Конечно, я уже добавил немецкий файл .jar в мой путь сборки в Eclipse. Но должен быть вариант, когда я должен установить этот немецкий файл. Если нет, то как программа может знать, какой язык она должна использовать. – Tobi123

+0

Редактировать: Конечно, я также могу использовать немецкое предложение для ввода, но теги результата ошибочны/не имеют смысла. – Tobi123

ответ

3

Вот некоторые примеры кода для анализа немецкого предложения:

import edu.stanford.nlp.io.IOUtils; 
import edu.stanford.nlp.ling.CoreAnnotations; 
import edu.stanford.nlp.pipeline.*; 
import edu.stanford.nlp.simple.*; 
import edu.stanford.nlp.trees.*; 
import edu.stanford.nlp.util.CoreMap; 
import edu.stanford.nlp.util.PropertiesUtils; 
import edu.stanford.nlp.util.StringUtils; 

import java.util.*; 

public class SimpleGermanExample { 

    public static void main(String[] args) { 
     String sampleGermanText = "..."; 
     Annotation germanAnnotation = new Annotation(sampleGermanText); 
     Properties germanProperties = StringUtils.argsToProperties(
       new String[]{"-props", "StanfordCoreNLP-german.properties"}); 
     StanfordCoreNLP pipeline = new StanfordCoreNLP(germanProperties); 
     pipeline.annotate(germanAnnotation); 
     for (CoreMap sentence : germanAnnotation.get(CoreAnnotations.SentencesAnnotation.class)) { 
      Tree sentenceTree = sentence.get(TreeCoreAnnotations.TreeAnnotation.class); 
      System.out.println(sentenceTree); 
     } 
    } 
} 

Убедитесь, что вы загрузили полный набор инструментов, чтобы использовать этот пример кода.

http://stanfordnlp.github.io/CoreNLP/

сделать Кроме того, что у вас там немецкие модели баночка в вашей CLASSPATH. Вышеупомянутый код будет знать, как смотреть все банки в вашем CLASSPATH и будет распознавать этот файл как находящийся в немецкой банке.

+0

Большое спасибо - я попробую это позже. Итак, просто для того, чтобы освободить: {"-props", "StanfordCoreNLP-german.properties"} - это часть, чтобы рассказать, что оболочка использует ее в немецкой модели? – Tobi123

+0

Да, это правильно. – StanfordNLPHelp

+0

В немецкой модели есть файл с именем: StanfordCoreNLP-german.properties. – StanfordNLPHelp

0

Прежде всего: Это работает, спасибо! Но мне не нужен этот сложный путь со всеми этими аннотаторами. Вот почему я хотел начать с простого CoreNLP Api. Вот мой код:

import edu.stanford.nlp.simple.*; 
import java.util.*; 

public class Main { 

public static void main(String[] args) { 

    Sentence sent = new Sentence("Lucy is in the sky with diamonds."); 
    List<String> posTags = sent.posTags(); 
    List<String> words = sent.words(); 
    for (int i = 0; i < posTags.size(); i++) { 
     System.out.println(words.get(i)+" "+posTags.get(i)); 
    } 
    } 
} 

Как я могу получить файл german prperties с этим примером?

Или другим способом: Как получить только слово с тегом pos в вашем примере?