Soy bastante nuevo en NLTK y Python. He sido la creación de la sentencia analiza utilizando el juguete gramáticas dado en los ejemplos, pero me gustaría saber si es posible usar una gramática aprendida de una parte de la Penn Treebank, decir que, a diferencia de la escritura de mi cuenta o usando el juguete gramáticas? (Estoy usando Python 2.7 en Mac)
Muchas gracias

OriginalEl autor Matt Robinson | 2011-08-14

2 Comentarios

  1. 14

    Si quieres una gramática que capta con precisión el Penn Treebank de ejemplo que viene con NLTK, usted puede hacer esto, suponiendo que usted ha descargado el Treebank de datos para NLTK (ver comentario abajo):

    import nltk
    from nltk.corpus import treebank
    from nltk.grammar import ContextFreeGrammar, Nonterminal
    
    tbank_productions = set(production for sent in treebank.parsed_sents()
                            for production in sent.productions())
    tbank_grammar = ContextFreeGrammar(Nonterminal('S'), list(tbank_productions))

    Esto probablemente no, sin embargo, dar algo útil. Desde NLTK sólo admite el análisis con las gramáticas con todos los terminales especificados, usted sólo será capaz de analizar oraciones que contienen palabras en el Treebank de la muestra.

    También, debido a la estructura plana de muchas frases en el Treebank, esta gramática se generalizará muy mal a frases que no estaban incluidos en la formación. Esta es la razón por la PNL aplicaciones que han tratado de analizar el treebank no han utilizado un enfoque de aprendizaje CFG reglas del Treebank. El más cercano técnica a la que sería la Ren juntas directivas de Datos Orientada método de Análisis, pero es mucho más sofisticado.

    Finalmente, este va a ser tan increíblemente lento que es inútil. Así que si usted quiere ver este enfoque en la acción en la gramática de una sola frase sólo para probar que funciona, pruebe el siguiente código (después de que las importaciones de arriba):

    mini_grammar = ContextFreeGrammar(Nonterminal('S'),
                                      treebank.parsed_sents()[0].productions())
    parser = nltk.parse.EarleyChartParser(mini_grammar)
    print parser.parse(treebank.sents()[0])
    Yo soy incapaz de ejecutar el segundo fragmento de código. Me da el siguiente error: el Recurso ‘corpora/treebank/combinado’ no encontrado.
    La causa más probable es que usted no instalar el Treebank de datos al instalar NLTK. Consulte el NLTK de Datos de instrucciones. Básicamente, en un intérprete de Python necesitará import nltk, llamada nltk.download(), en la ventana que aparece haz clic en el «Corpus» de la ficha, seleccione «treebank,» y finalmente haga clic en «Descargar» y cerrar cuando haya terminado.

    OriginalEl autor Constantine

Dejar respuesta

Please enter your comment!
Please enter your name here