Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Existe una nueva versión del procesamiento del lenguaje natural de Python?

¿Existe una nueva versión del procesamiento del lenguaje natural de Python?

1 Origen

Este artículo intenta introducir a los lectores en el campo del Procesamiento del Lenguaje Natural (Procesamiento del Lenguaje Natural), a menudo denominado PNL. Sin embargo, a diferencia de los artículos que generalmente solo describen conceptos importantes de PNL, este artículo también utiliza Python para ilustrarlos visualmente. Para los lectores que no están familiarizados con Python, este artículo también proporciona algunos materiales de referencia para enseñarles a programar en Python.

2 Introducción relacionada

2.1 Procesamiento del lenguaje natural

El procesamiento del lenguaje natural incorpora muchas tecnologías para generar, procesar y analizar automáticamente el lenguaje natural o humano. Aunque la mayoría de las técnicas de PNL se heredan de la lingüística y la inteligencia artificial, también están influenciadas por disciplinas relativamente emergentes como el aprendizaje automático, la estadística computacional y la ciencia cognitiva.

Antes de mostrar ejemplos de técnicas de PNL, es necesario introducir alguna terminología muy básica. Tenga en cuenta: para que el artículo sea fácil de entender, estas definiciones no son necesariamente sofisticadas lingüísticamente.

Token: antes de cualquier procesamiento real del texto de entrada, es necesario segmentarlo en unidades lingüísticas como palabras, signos de puntuación, números o caracteres alfanuméricos. Estas unidades se llaman fichas.

Oración: consta de una secuencia ordenada de ejemplos de palabras.

Tokenización: Restaura la frase en sus tokens constituyentes. Tomando como ejemplo el inglés, un idioma segmentado, la existencia de espacios hace que sea relativamente fácil y aburrido restaurar ejemplos de palabras. Sin embargo, para los chinos y los árabes, esta tarea es un poco más difícil porque no existen límites claros. Además, en algunos idiomas no segmentados, casi todos los caracteres pueden existir como un solo carácter, pero también se pueden combinar para formar palabras de varios caracteres.

Corpus: suele ser una gran cantidad de texto compuesto por frases ricas.

Etiqueta de parte del discurso (POS): cualquier palabra se puede clasificar en al menos un conjunto de categorías léxicas o de parte del discurso), por ejemplo: sustantivos, verbos, adjetivos y artículos, etc. . Las etiquetas de parte del discurso utilizan símbolos para representar un elemento de vocabulario: NN (sustantivo), VB (verbo), JJ (adjetivo) y ?AT (artículo). Brown Corpus® es uno de los conjuntos de anotaciones más antiguos y utilizados. Los detalles se discutirán la próxima vez.

Árbol de análisis: utilizando la definición de gramática formal, se puede utilizar un diagrama de árbol para representar la estructura sintáctica de una oración determinada.

Habiendo comprendido la terminología básica, comprendamos las tareas comunes de la PNL:

Etiquetado de parte del discurso (Etiquetado POS): dada una oración y un grupo de etiquetas POS, El procesamiento del lenguaje común es etiquetar cada palabra de la oración. Por ejemplo, la pelota es roja, después de marcar parte del discurso, se convertirá en: La pelota AT/NN es roja VB/JJ. El etiquetador POS de última generación [9] alcanza una precisión de hasta el 96 %. El etiquetado de texto como parte del discurso es muy necesario para problemas de PNL más complejos, como el análisis y la traducción automática, que analizaremos más adelante.

Morfología computacional: una gran cantidad de palabras basadas en "morfemas/raíces" forman el lenguaje natural. Aunque los morfemas son las unidades lingüísticas más pequeñas, son ricas en significado. La morfología computacional se ocupa del uso de computadoras para descubrir y analizar la estructura interna de las palabras.

Análisis de sintaxis (Análisis): En el problema de análisis de sintaxis, el analizador de sintaxis (analizador) construye una oración determinada en un árbol de análisis. Para analizar la gramática, algunos analizadores asumen la existencia de una serie de reglas gramaticales, pero los analizadores actuales son lo suficientemente inteligentes como para inferir directamente árboles de análisis con la ayuda de modelos estadísticos complejos [1]. La mayoría de los analizadores pueden operar en un entorno supervisado y las oraciones han sido etiquetadas como parte del discurso. El análisis de sintaxis estadística es un área de investigación muy activa en el procesamiento del lenguaje natural.

Traducción automática (TA): El propósito de la traducción automática es permitir que las computadoras traduzcan sin problemas un texto determinado en un idioma determinado a otro idioma sin intervención humana. Esta es una de las tareas más difíciles en el procesamiento del lenguaje natural y se ha resuelto de muchas maneras diferentes a lo largo de los años. Casi todos los métodos de traducción automática se basan en el etiquetado de partes del discurso y el análisis sintáctico como preprocesamiento.

2.2 Python

Python es un lenguaje de programación interpretado, orientado a objetos y de tipado dinámico. Aunque su principal ventaja es que permite a los programadores desarrollar proyectos rápidamente, la gran cantidad de bibliotecas estándar lo hace todavía adecuado para proyectos de ingeniería a nivel de producción a gran escala. Python tiene una curva de aprendizaje muy pronunciada y existen muchos recursos excelentes de aprendizaje en línea [11].

2.3 Kit de herramientas de lenguaje natural

Aunque la mayoría de las funciones de Python pueden resolver tareas simples de PNL, no son suficientes para manejar tareas estándar de procesamiento de lenguaje natural. Por eso nació NLTK (Natural Language Processing Toolkit). NLTK integra módulos y corpus, publicados bajo una licencia de código abierto, lo que permite a los estudiantes aprender y producir investigaciones sobre el procesamiento del lenguaje natural. La mayor ventaja de utilizar NLTK es que es completamente autónomo. No solo proporciona funciones y paquetes convenientes para crear bloques de tareas de procesamiento de lenguaje natural comunes, sino que también proporciona versiones de corpus estándar originales y preprocesadas aplicadas en literatura y cursos de procesamiento de lenguaje natural. .

3 Uso de NLTK

El sitio web oficial de NLTK proporciona excelente documentación y tutoriales como guía de aprendizaje [13]. Simplemente repetir las palabras de esos autores sería injusto para ellos y para este artículo. Así que presentaré NLTK trabajando en cuatro tareas de PNL de dificultad creciente. Estas tareas se derivan de ejercicios sin respuesta o variaciones del tutorial NLTK. Por tanto, las soluciones y análisis de cada tarea son originales de este artículo.

3.1 Corpus NLTK

Como se mencionó anteriormente, NLTK incluye varios corpus prácticos ampliamente utilizados en los círculos de investigación de PNL. En esta sección, echamos un vistazo a tres corpus que se utilizarán a continuación:

Brown Corpus: El corpus marrón de inglés americano estándar se considera el primero en ser procesado en lingüística computacional. El corpus de inglés general utilizado en [6 ]. Contiene un millón de palabras de texto en idioma americano publicado en 1961. Representa una muestra de inglés general, extraída de novelas, periodismo y textos religiosos. Posteriormente, después de una gran cantidad de anotaciones manuales, nació una versión etiquetada de parte del discurso.

Gutenberg Corpus: ¿El Gutenberg Corpus selecciona 14 textos de la plataforma de libros electrónicos gratuitos en línea más grande [5]? ¿Proyecto Gutenberg (Proyecto Gutenberg)?

Corpus de palabras vacías: Además de las palabras habituales del texto, se llaman palabras vacías otro tipo de palabras como preposiciones, complementos, determinantes, etc. que tienen funciones gramaticales importantes pero tienen poco significado. El corpus de palabras vacías recopilado por NLTK contiene 2400 palabras vacías de 11 idiomas diferentes (incluido el inglés).

3.2 Convenciones de nomenclatura NLTK

Antes de comenzar a utilizar NLTK para manejar nuestras tareas, primero familiaricémonos con sus convenciones de nomenclatura. El paquete de nivel superior es nltk y nos referimos a sus módulos integrados utilizando nombres de puntos completos como: nltk.corpus?y?nltk.utilities?. Cualquier módulo puede importar el espacio de nombres de nivel superior utilizando la construcción estándar de .

3.3 Tarea 1: Explorar el corpus

Como se mencionó anteriormente, NLTK contiene múltiples corpus de PNL. Formulamos esta tarea como la exploración de uno de estos corpus.

Tarea: Utilice el módulo de corpus de NLTK para leer el austen-persuasion.txt contenido en el corpus de Gutenberg y responda las siguientes preguntas:

Este corpus tiene ¿Cuántas palabras?

¿Cuántas palabras únicas tiene este corpus?

¿Cuántas veces aparecen las 10 palabras más frecuentes?

Utilice el módulo de corpus para explorar el corpus integrado, y NLTK también proporciona una serie de clases y funciones útiles en el módulo de probabilidad que se pueden utilizar para calcular distribuciones de probabilidad en tareas. Uno de ellos es ?FreqDist, que realiza un seguimiento de las frecuencias de muestreo en una distribución. El Listado 1 demuestra cómo utilizar estos dos módulos para manejar la primera tarea.

Listado 1: Exploración del corpus integrado de NLTK.

Python

1

2

3

p>

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

p>

29

30

31

# Importar conjunto gutenberg

> >> de nltk.corpus import gutenberg

# ¿Qué corpus hay en esta colección?

>>> imprimir gutenberg.fileids()

['austen-emma.txt', 'austen-persuasion.txt', 'austen-sense.txt', 'biblia -kjv.txt', 'blake-poems.txt', 'bryant-stories.txt', 'burgess-busterbrown.txt', 'carroll-alice.txt', 'chesterton-ball.txt', 'chesterton-brown .txt', 'chesterton-thursday.txt', 'edgeworth-parents.txt', 'melville-moby_dick.txt', 'milton-paradise.txt', 'shakespeare-caesar.txt', 'shakespeare-hamlet.txt ', 'shakespeare-macbeth.txt', 'whitman-leaves.txt']

# Importar clase FreqDist

>>> de nltk importar FreqDist

# Creación de instancias de distribución de frecuencia

>>> fd = FreqDist()

# Estadísticas de ejemplos de palabras en texto

>>> para palabras en gutenberg.words ( 'austen-persuasion.txt'):

... fd.inc(palabra)

...

>>> imprimir fd.N ( ) # número total de muestras

98171

>>> print fd.B() # número de contenedores o muestras únicas

6132

# Obtener las primeras 10 palabras ordenadas por frecuencia

>>> para palabra en fd.keys()[:10]:

... imprimir palabra, fd[palabra ]

, 6750

o 3120

a 2775

y 2739

.

de 2564

a 1529

en 1346

fueron 1330

; 1290

Respuesta: La novela Persuasión de Jane Austen contiene 98171 palabras y 6141 palabras únicas. Además, el ejemplo más común es la coma, seguida de la palabra the. De hecho, esta última parte de la tarea es una de las observaciones empíricas más interesantes e ilustra perfectamente el fenómeno de la aparición de palabras. Si realiza estadísticas sobre un corpus masivo y registra el número de apariciones de cada palabra y la frecuencia de aparición de palabras en una tabla de mayor a menor, podemos descubrir intuitivamente la relación entre la frecuencia de las palabras y el orden de las palabras en la lista. De hecho, Zipf demostró que esta relación se puede expresar como una expresión matemática, como por ejemplo: para cualquier palabra dada, $fr$ = $k$, $f$ es la frecuencia de las palabras, $r$ es la disposición de las palabras, o la orden de las palabras en la lista ordenada, y $k$ es una constante. Así, por ejemplo, la quinta palabra más frecuente debería aparecer el doble que la décima palabra más frecuente. En la literatura de PNL, la relación anterior a menudo se denomina "Ley de Zipf".

Aunque la relación matemática descrita por la ley de Zipf puede no ser completamente precisa, sigue siendo útil para caracterizar la distribución de palabras en los lenguajes humanos: las palabras con órdenes más pequeños aparecen con más frecuencia y las palabras con Los órdenes de palabras ligeramente más grandes aparecen con mayor frecuencia y las palabras con órdenes muy grandes apenas aparecen. La última parte de la Tarea 1 es muy fácil de visualizar gráficamente usando NLTK, como se muestra en el Listado 1a. La relación log-log relevante se muestra en la Figura 1, y la relación extendida correspondiente en nuestro corpus se puede encontrar claramente.