2012-04-16 10 views
9

Sto usando il documento di esempio API NameFinder di OpenNLP. Dopo aver inizializzato il nome Finder la documentazione utilizza il seguente codice per il testo di input:OpenNLP Nome Finder

for (String document[][] : documents) { 

    for (String[] sentence : document) { 
    Span nameSpans[] = nameFinder.find(sentence); 
    // do something with the names 
    } 

    nameFinder.clearAdaptiveData() 
} 

Tuttavia quando ho portare questo in eclisse dei 'documenti' (non 'documento') Variabile mi sta dando un errore che dice la variabile i documenti non possono essere risolti. Qual è la documentazione che si riferisce alla variabile dell'array 'documents'? Devo inizializzare un array chiamato 'documenti' che tiene i file txt per questo errore andare via?

Grazie per il vostro aiuto.

risposta

16

Il OpenNLP documentation indica che il testo di input deve essere segmentato in documenti, frasi e token. Il pezzo di codice che hai fornito illustra come trattare diversi documenti.

Se si dispone di un solo documento non è necessario il primo per, solo quello interno con la matrice di frasi, che è composto da una serie di token.

Per creare un array di frasi da un documento è possibile utilizzare OpenNLP SentenceDetector e, per ogni frase, è possibile utilizzare Tokenizer OpenNLP per ottenere l'array di token.

Il codice sarà simile a questa:

// somehow get the contents from the txt file 
//  and populate a string called documentStr 

String sentences[] = sentenceDetector.sentDetect(documentStr); 
for (String sentence : sentences) { 
    String tokens[] = tokenizer.tokenize(sentence); 
    Span nameSpans[] = nameFinder.find(tokens); 
    // do something with the names 
    System.out.println("Found entity: " + Arrays.toString(Span.spansToStrings(nameSpans, tokens))); 
} 

È possibile imparare a utilizzare il SentenceDetector e il Tokenizer da OpenNLP documentation documentazione.

+0

Grazie per la risposta! L'ho inserito ma ho ancora ricevuto l'errore: "Tipo non corrispondente: impossibile convertire dal tipo di elemento String a String []" e la variabile di frase mi sta errore sulla riga 5: for (String [] frase: frasi) { – Chris

+0

Sì, lì era un errore Ho appena rimosso il [] da per (stringa di frasi []: frasi). Grazie. – wcolen

+0

wcolen, grazie per tutto il tuo aiuto. L'unico problema quando elimino la sintassi dell'array [] è che la riga successiva ora mi abbaia perché il metodo find accetta un array come argomento, quindi la frase non funziona: Span nameSpans [] = nameFinder.find (frase); – Chris

Problemi correlati