2012-06-11 20 views
13

Tengo un texto del que quiero extraer los sintagmas nominales. Puedo obtener fácilmente el analizador tipeado para el texto que tengo, pero ¿cómo puedo extraer las frases nominales en el texto?Extracción de sintagmas nominales de un archivo de texto usando stanford tipeado analizador

+1

me han tratado de conseguir Stanford escribió analizador, pero todavía se pregunta qué etiquetas se representa la frase nominal! –

+0

U necesita herramientas de PNL. mira esta pregunta http://stackoverflow.com/questions/1889675/extract-nouns-from-text-java –

+0

¿Por qué estás usando un analizador de dependencias en primer lugar? Un generador de árbol de análisis sintáctico normal parece ser el camino para conseguir lo que quieres. –

Respuesta

0

Puede utilizar Stanford Core NLP para el etiquetado POS. Puede encontrar un código de muestra en http://nlp.stanford.edu/software/corenlp.shtml#Usage que podría ser un buen punto de partida para la experimentación. Debería dar tokenize, split y pos como propiedades. Esto genera una lista de tokens con sus etiquetas correspondientes.

Toda la lista de etiquetas se puede ver en http://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html. Todas las etiquetas de nombres comenzarían con NN. Al realizar este control, obtendrás los tokens necesarios.

7

Pruebe también link. No estoy seguro de si stanford pos tagger y el etiquetador disponible en el corenlp son iguales o no, pero encontré este enlace para ser más útil.

Después del etiquetado PoS, tendrá que detectar patrones como este (Adjetivo | Sustantivo) * (Preposición del sustantivo)? (Adjetivo | Sustantivo) * Sustantivo

Pruebe este link para obtener más información sobre la detección de frase de sintonía.

9

Puede extraer frases nominales de Tree usando el siguiente código. Se supone que usted ha analizado frase almacenada en de análisis (es decir, análisis sintáctico se emite de clase LexicalizedParser método apply)

public static List<Tree> GetNounPhrases() 
{ 

    List<Tree> phraseList=new ArrayList<Tree>(); 
    for (Tree subtree: parse) 
    { 

     if(subtree.label().value().equals("NP")) 
     { 

     phraseList.add(subtree); 
     System.out.println(subtree); 

     } 
    } 

     return phraseList; 

} 
Cuestiones relacionadas