Gramática inglesa para el análisis en NLTK.

¿Hay una gramática en inglés lista para usar que solo pueda cargarla y usar en NLTK? He buscado ejemplos de análisis con NLTK, pero parece que tengo que especificar manualmente la gramática antes de analizar una oración.

¡Muchas gracias!

Puedes echar un vistazo a pyStatParser , un simple analizador estadístico de Python que devuelve los árboles de análisis NLTK. Viene con bancos de carga públicos y genera el modelo gtwigtical solo la primera vez que crea una instancia de un objeto Parser (en aproximadamente 8 segundos). Utiliza un algoritmo CKY y analiza oraciones de longitud promedio (como la que se muestra a continuación) en menos de un segundo.

>>> from stat_parser import Parser >>> parser = Parser() >>> print parser.parse("How can the net amount of entropy of the universe be massively decreased?") (SBARQ (WHADVP (WRB how)) (SQ (MD can) (NP (NP (DT the) (JJ net) (NN amount)) (PP (IN of) (NP (NP (NNS entropy)) (PP (IN of) (NP (DT the) (NN universe)))))) (VP (VB be) (ADJP (RB massively) (VBN decreased)))) (. ?)) 

Mi biblioteca, spaCy , proporciona un analizador de dependencia de alto rendimiento.

Instalación:

 pip install spacy python -m spacy.en.download all 

Uso:

 from spacy.en import English nlp = English() doc = nlp(u'A whole document.\nNo preprocessing require. Robust to arbitrary formating.') for sent in doc: for token in sent: if token.is_alpha: print token.orth_, token.tag_, token.head.lemma_ 

Choi et al. (2015) descubrió que spaCy es el analizador de dependencia más rápido disponible. Procesa más de 13,000 oraciones por segundo, en un solo hilo. En la evaluación estándar de WSJ, obtuvo un puntaje de 92.7%, más del 1% más preciso que cualquiera de los modelos de CoreNLP.

Hay una biblioteca llamada Pattern . Es bastante rápido y fácil de usar.

 >>> from pattern.en import parse >>> >>> s = 'The mobile web is more important than mobile apps.' >>> s = parse(s, relations=True, lemmata=True) >>> print s 'The/DT/B-NP/O/NP-SBJ-1/the mobile/JJ/I-NP/O/NP-SBJ-1/mobile' ... 

Hay algunas gramáticas en la distribución nltk_data . En su intérprete de Python, emita nltk.download() .

Use MaltParser, allí tiene una gramática inglesa pre-entrenada, y también algunos otros idiomas pre-entrenados. Y el Maltparser es un analizador de dependencias y no un simple Analizador de abajo hacia arriba o de arriba hacia abajo.

Simplemente descargue el MaltParser de http://www.maltparser.org/index.html y use el NLTK de esta manera:

 import nltk parser = nltk.parse.malt.MaltParser() 

He intentado NLTK, PyStatParser, patrón. IMHO Pattern es el mejor analizador de inglés introducido en el artículo anterior. Porque admite la instalación de pip y hay un documento de lujo en el sitio web ( http://www.clips.ua.ac.be/pages/pattern-en ). No pude encontrar un documento razonable para NLTK (y me dio un resultado inexacto por su valor predeterminado. Y no pude encontrar la forma de sintonizarlo). pyStatParser es mucho más lento que lo descrito anteriormente en mi entorno. (Aproximadamente un minuto para la inicialización y tomó un par de segundos para analizar oraciones largas. Tal vez no lo usé correctamente).

¿Probaste el etiquetado POS en NLTK?

 text = word_tokenize("And now for something completely different") nltk.pos_tag(text) 

La respuesta es algo como esto.

 [('And', 'CC'), ('now', 'RB'), ('for', 'IN'), ('something', 'NN'),('completely', 'RB'), ('different', 'JJ')] 

Conseguí este ejemplo desde aquí NLTK_chapter03