¿Cuál es el mejor código de Python que extrae todas las frases y parte de las etiquetas de voz (POS) de una oración?

No sé lo mejor, pero hay dos opciones que conozco para hacer esto con Python. Una es usar NLTK y la otra es usar SpaCy. El etiquetado de POS para ambos es relativamente sencillo, pero para la fragmentación (generalizada), ambos exponen una interfaz basada en reglas (donde se pueden definir las reglas). Si solo desea frases nominales, SpaCy es más fácil de usar que NLTK.

Etiquetado POS utilizando NLTK (más detalles aquí – 5. Categorización y etiquetado de palabras)

>>> importar nltk
>>> enviado = “El hombre vio al perro con el telescopio”.
>>> palabras = nltk.word_tokenize (enviado)
>>> nltk.pos_tag (palabras)
[(‘The’, ‘DT’), (‘man’, ‘NN’), (‘saw’, ‘VBD’), (‘the’, ‘DT’), (‘dog’, ‘NN’) , (‘con’, ‘IN’), (‘el’, ‘DT’), (‘telescopio’, ‘NN’), (‘.’, ‘.’)]
>>>

Etiquetado de POS usando SpaCy.

>>> de spacy.es import English
>>> nlp = inglés ()
>>> [(x.text, x.pos_) para x en nlp (unicode (enviado)) if x.pos_! = u’SPACE ‘]
[(u’The ‘, u’DET’), (u’man ‘, u’NOUN’), (u’saw ‘, u’VERB’), (u’the ‘, u’DET’), ( u’dog ‘, u’NOUN’), (u’with ‘, u’ADP’), (u’the ‘, u’DET’), (u’telescope ‘, u’NOUN’), (u ‘ . ‘, u’PUNCT’)]

La fragmentación de frases con NLTK se basa en reglas, así es como construiría un fragmentador que devuelva frases nominales. Más detalles aquí – 7. Extracción de información del texto.

>>> grammar = “NP: {

? * }”
>>> analizador = nltk.RegexpParser (gramática)
>>> t = parser.parse (nltk.pos_tag (palabras))
>>> [str (s.leaves ()) para s en t.subtrees () if s.label () == “NP”]
[“[(‘The’, ‘DT’), (‘man’, ‘NN’)]”, “[(‘the’, ‘DT’), (‘dog’, ‘NN’)]”, ” [(” ‘,’ DT ‘), (‘ telescopio ‘,’ NN ‘)] “]

Si solo quiere frases nominales, SpaCy tiene un iterador incorporado para eso.

>>> [np.text para np en toks.noun_chunks]
[u’El hombre ‘, el perro’, el telescopio ‘]

El enfoque general de fragmentación para ambos se trata muy bien en este tema de SpaCy: fragmentación con gramática basada en reglas en espacios · Problema # 342 · explosión / spaCy – donde el OP describe cómo haría fragmentación con NLTK y la respuesta contiene cómo hazlo en SpaCy.

Sé que solo preguntaste sobre Python, pero para la fragmentación de frases, prefiero OpenNLP (basado en Java) (Bienvenido a Apache OpenNLP). Aquí hay un código Gist (JUnit / OpenNLP para extraer frases sustantivas del texto. Originalmente de mi pastebin (http://pastebin.com/bUDY7fb0) que muestra cómo usarlo en caso de que quiera probarlo.

More Interesting

Cómo construir una PC para juegos y para aprendizaje profundo

¿Qué es mejor, el algoritmo de vecinos más cercanos a k (k-NN) o el clasificador de máquina de vectores de soporte (SVM)? ¿Qué algoritmo se usa principalmente en la práctica? ¿Qué algoritmo garantiza una detección confiable en situaciones impredecibles?

Cómo obtener una posición de RA en el Grupo de Aprendizaje Automático de Microsoft Research India

¿Qué pasa si el universo está aprendiendo y cambiando sus teorías fundamentales? ¿Puede haber una teoría unificada entonces?

¿Cómo se implementa una red neuronal convolucional (CNN) con la estructura de un árbol binario en TensorFlow?

Cómo aprender los conceptos básicos del aprendizaje automático dentro de una semana para una entrevista de trabajo

¿Cuáles son las diferentes áreas donde los bancos pueden usar NLP (procesamiento del lenguaje natural) para mejorar las operaciones comerciales?

¿Cuál es la mejor implementación distribuida de Word2Vec: Gensim o Spark?

Cómo predecir las ventas del próximo año, nivel de día, dada la información de ventas de años anteriores, también a nivel de día, y mediante el uso de Kalman Filtering

¿Hay alguna anomalía inexplicable en la codificación de la computadora que pueda sugerir que las máquinas tienen alma?

¿Cuáles son algunos de los mejores trabajos de investigación o libros para el aprendizaje automático?

¿Cuál es la diferencia entre TF-IDF-CF y CF-IDF?

¿Cómo afectaría la homo / heteroscedasticidad al análisis de regresión?

¿La red neuronal convolucional (CNN) tiene que ver con la arquitectura de red y factores como la tasa de aprendizaje, la función de pérdida utilizada, etc.

¿Quiénes son los mejores expertos en Machine Learning en el Área de la Bahía?