2012-04-16 10 views
9

Estoy usando el NameFinder API ejemplo doc de OpenNLP. Después de inicializar el Finder Nombre de la documentación utiliza el siguiente código para el texto de entrada:OpenNLP Name Finder

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

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

    nameFinder.clearAdaptiveData() 
} 

Sin embargo, cuando haga llegar esta eclipsó los 'documentos' (no 'documento') Variable me da un error diciendo que la variable los documentos no se pueden resolver. ¿A qué se refiere la documentación con la variable de matriz 'documentos'? ¿Debo inicializar una matriz llamada 'documentos' que contiene archivos txt para que este error desaparezca?

Gracias por su ayuda.

Respuesta

16

El OpenNLP documentation indica que el texto de entrada debe segmentarse en documentos, oraciones y tokens. La pieza de código que proporcionó ilustra cómo tratar con varios documentos.

Si tiene un solo documento, no necesita el primero, solo el interno con la matriz de oraciones, que está compuesto por una matriz de tokens.

Para crear una matriz de oraciones de un documento, puede usar OpenNLP SentenceDetector, y para cada oración puede usar OpenNLP Tokenizer para obtener la matriz de tokens.

Su código se verá así:

// 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))); 
} 

Usted puede aprender cómo utilizar el SentenceDetector y la Tokenizer de OpenNLP documentation documentación.

+0

¡Gracias por su respuesta! Lo conecté pero todavía obtuve el error: "No coinciden los tipos: no se puede convertir del tipo de elemento String a String []" y la variable de oraciones me está equivocando en la línea 5: for (String [] sentence: sentence) { – Chris

+0

Sí, hay fue un error Acabo de eliminar el [] de por (Frase de cadena []: oraciones). Gracias. – wcolen

+0

wcolen, gracias por toda su ayuda. El único problema cuando elimino la sintaxis de matriz [] es que la siguiente línea ahora me ladra porque el método de búsqueda toma una matriz como argumento, por lo que la oración no funciona: Span nameSpans [] = nameFinder.find (sentence); – Chris