Procesamiento del lenguaje natural con Python: una guía para principiantes de NLTK

Procesamiento del lenguaje natural con Python: una guía para principiantes de NLTK

1. Introducción al procesamiento del lenguaje natural Python

1. ¿Qué es el procesamiento del lenguaje natural (PLN)?

El procesamiento del lenguaje natural (PNL) se refiere al campo del procesamiento informático del lenguaje humano. Es una materia multidisciplinaria que integra teorías y métodos de muchas disciplinas, como la informática, la inteligencia artificial y la lingüística, para transformar el lenguaje humano en una forma que pueda ser entendida por las computadoras y lograr el procesamiento automático del lenguaje humano: comprender y generar. La PNL se puede aplicar a muchos aspectos, como el reconocimiento de voz, la traducción automática, el análisis de sentimientos, el servicio al cliente inteligente, etc.

2. Aplicación de Python en PNL

Python se ha convertido en uno de los lenguajes de programación más utilizados en el campo del procesamiento del lenguaje natural. Python tiene muchas bibliotecas de procesamiento de datos y marcos de aprendizaje automático convenientes, lo que hace que sea muy conveniente usar Python para PNL. Los kits de herramientas de PNL más representativos incluyen: NLTK, spaCy, TextBlob, Gensim, etc.

3. ¿Por qué elegir Python para PNL?

Python es un lenguaje de programación fácil de aprender y usar, y cuenta con una enorme comunidad y recursos. El conjunto de herramientas de PNL de Python se está volviendo cada vez más completo, adecuado para principiantes y también admite el procesamiento de datos eficiente y la capacitación de modelos, lo que hace que el proceso de uso de Python para PNL sea más fácil de usar y más eficiente.

2. Introducción a NLTK

1. ¿Qué es NLTK?

NLTK es la abreviatura de Natural Language Toolkit y es el conjunto de herramientas más popular en el campo del procesamiento del lenguaje natural Python. Es un conjunto de herramientas de procesamiento de lenguaje natural gratuito y de código abierto escrito en Python. NLTK incluye numerosas bibliotecas y conjuntos de datos que se pueden utilizar para completar diversas tareas de PNL.

2. Historia y situación actual de NLTK

NLTK fue desarrollado originalmente por tres profesores e investigadores del Departamento de Ciencias de la Computación de la Universidad de Pensilvania, Steven Bird, Ewan Klein y Edward Loper. Ahora NLTK se ha convertido en el conjunto de herramientas de procesamiento del lenguaje natural más utilizado en el campo de la PNL. NLTK se ha desarrollado desde 2001 y hasta ahora ha lanzado 5 versiones. Contiene una gran cantidad de contenido de investigación lingüística y lingüística computacional, y también brinda soporte para datos, texto y modelos de lenguaje relacionados.

3. Instalación y configuración de NLTK

Si desea comenzar a utilizar NLTK, primero debe instalarlo. La biblioteca NLTK se puede instalar fácilmente en la terminal usando el comando pip.

pip install nltk

Luego, cuando ejecute el programa o haga referencia a funciones de PNL relacionadas, también deberá descargar algunos datos nltk. Estos conjuntos de datos se pueden descargar en Python con el siguiente comando:

import nltk
nltk.download() 

Después de ejecutar el código anterior, aparecerá un cuadro de diálogo en el que podrá seleccionar el conjunto de datos y el corpus que se descargarán.

4. Funciones básicas de NLTK

NLTK se puede utilizar para completar diversas tareas de procesamiento del lenguaje natural, incluido el procesamiento de vocabulario, clasificación de texto, segmentación de palabras, estandarización del lenguaje, etc. A continuación se muestran algunas funciones NLTK y demostraciones de código de uso común:

Participio:

import nltk

sentence = "The quick brown fox jumps over the lazy dog."
tokens = nltk.word_tokenize(sentence)
print(tokens)

# 输出:
# ['The', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog', '.']

Etiquetado de parte del discurso:

import nltk

sentence = "The quick brown fox jumps over the lazy dog."
tokens = nltk.word_tokenize(sentence)
pos_tags = nltk.pos_tag(tokens)
print(pos_tags)

# 输出:
# [('The', 'DT'), ('quick', 'JJ'), ('brown', 'NN'), ('fox', 'NN'), ('jumps', 'VBZ'), ('over', 'IN'), ('the', 'DT'), ('lazy', 'JJ'), ('dog', 'NN'), ('.', '.')]

Eliminar palabras vacías:

import nltk
from nltk.corpus import stopwords

sentence = "The quick brown fox jumps over the lazy dog."
tokens = nltk.word_tokenize(sentence)

stop_words = set(stopwords.words('english'))

filtered_tokens = [token for token in tokens if token.lower() not in stop_words]
print(filtered_tokens)

# 输出:
# ['quick', 'brown', 'fox', 'jumps', 'lazy', 'dog', '.']

Derivado:

import nltk
from nltk.stem.porter import PorterStemmer

stemmer = PorterStemmer()
words = ["connect", "connects", "connected", "connecting", "connection", "connections"]

for word in words:
    stem_word = stemmer.stem(word)
    print(stem_word)

# 输出:
# connect
# connect
# connect
# connect
# connect
# connect

Normalización de formas de palabras:

import nltk
from nltk.stem import WordNetLemmatizer

lemmatizer = WordNetLemmatizer()
words = ["ran", "running", "runs", "goes", "went", "gone", "cars"]

for word in words:
    lemma = lemmatizer.lemmatize(word, pos='v')
    print(lemma)

# 输出:
# run
# run
# run
# go
# go
# go
# cars

3. Corpus y preprocesamiento de datos

1. Introducción al corpus

Corpus se refiere a una gran cantidad de datos de texto, que generalmente se utilizan como fuente de datos de capacitación, pruebas e investigación. El establecimiento y uso de corpus es una parte extremadamente importante del procesamiento del lenguaje natural.

2. Corpus apoyado por NLTK

NLTK, el conjunto de herramientas de PNL más popular en Python, contiene numerosos corpus, que incluyen noticias, reseñas de películas, libros, HTML de algunos sitios web, spam, etc. Estos corpus se pueden utilizar para tareas como clasificación de texto, análisis de sentimientos, reconocimiento de entidades, etc.

3. Conceptos básicos del preprocesamiento de datos

Antes del análisis de texto, debemos realizar algunos trabajos de preprocesamiento de datos, que incluyen principalmente limpieza de datos, segmentación de palabras y etiquetado de partes del discurso, eliminación de palabras vacías y derivación.

4. Limpieza de datos

La limpieza de datos es una tarea extremadamente importante: puede eliminar el ruido y la información innecesaria del texto, hacerlo más limpio y mejorar la eficiencia del procesamiento posterior. Los métodos comunes de limpieza de datos incluyen la eliminación de etiquetas HTML, caracteres especiales, signos de puntuación, números, etc.

5. Segmentación de palabras y etiquetado de partes del discurso.

La segmentación de palabras se refiere a dividir un fragmento de texto en palabras significativas y etiquetar cada palabra para identificar su papel en la oración. Aquí presentamos cómo usar NLTK para la segmentación de palabras y el etiquetado de partes del discurso:

import nltk

sentence = "The quick brown fox jumps over the lazy dog."
tokens = nltk.word_tokenize(sentence)
pos_tags = nltk.pos_tag(tokens)

La función nltk.word_tokenize() se puede utilizar para segmentar el texto en palabras y obtener una lista de palabras. La función nltk.pos_tag() puede realizar etiquetado de parte del discurso en estas palabras y obtener una lista de tuplas (palabras, etiquetas).

6. Detener palabras y derivar

Las palabras vacías (Stop Words) se refieren a palabras que tienen poco significado para el análisis de texto, como "el", "y", etc. Al realizar análisis de texto, normalmente eliminamos estas palabras vacías para mejorar la eficiencia del análisis. Las listas de palabras vacías de uso común se pueden encontrar y utilizar en NLTK. La derivación se refiere al proceso de restaurar las palabras a su forma original, como restaurar "correr" a "correr". Los algoritmos de derivación más utilizados incluyen PorterStemmer y SnowballStemmer.

4. Clasificación de texto y análisis de sentimientos.

1. Introducción a la clasificación de textos.

La clasificación de texto se refiere al proceso de dividir el texto en categorías o etiquetas predefinidas y se puede aplicar a la clasificación de noticias, filtrado de spam, análisis de sentimientos y otros escenarios.

2. Clasificación de textos basada en el aprendizaje supervisado

La clasificación de texto basada en el aprendizaje supervisado se refiere al uso de datos etiquetados (es decir, texto con clasificación conocida) como un conjunto de entrenamiento para realizar la clasificación de texto mediante la construcción de un modelo de clasificación. Los algoritmos más utilizados incluyen Naive Bayes, máquina de vectores de soporte, regresión logística, etc.

3. Clasificación de textos basada en el aprendizaje no supervisado.

La clasificación de texto basada en el aprendizaje no supervisado se refiere al uso de datos sin etiquetar para la clasificación de texto. Los métodos comúnmente utilizados incluyen agrupación, modelos temáticos, etc.

4. Introducción al análisis de sentimiento

El análisis de sentimientos se refiere al proceso de analizar e identificar las emociones expresadas en el texto. El análisis de sentimiento común incluye clasificación binaria (positiva/negativa) y clasificación múltiple (positiva/neutral/negativa).

5. Conceptos básicos del análisis de sentimiento

La base del análisis de sentimientos es utilizar un diccionario de sentimientos para calificar el sentimiento de las palabras en el texto, incluidos los aspectos positivos y negativos. Las puntuaciones positivas y negativas del texto se ponderan y suman para obtener la puntuación emocional del texto, y luego se realiza la clasificación binaria o multiclasificación.

6. Aplicación de clasificación de texto y análisis de sentimientos.

La clasificación de texto y el análisis de sentimientos tienen una amplia gama de escenarios de aplicación, como análisis de opinión pública, análisis de reseñas de productos, servicio al cliente, etc. En estos escenarios de aplicación, pueden ayudarnos a comprender mejor las necesidades de los usuarios, optimizar el diseño del producto, mejorar la experiencia del cliente, etc., mejorando así la eficiencia empresarial y la satisfacción del usuario.

5. Modelo de lenguaje y modelo de Minkov.

1. Introducción a los modelos de lenguaje.

El modelo de lenguaje (LM) se refiere al proceso de establecer un modelo de probabilidad para un conjunto de oraciones en un determinado idioma en el procesamiento del lenguaje natural. Este modelo se puede utilizar para reconocimiento automático de voz, traducción automática, resumen automático de texto, etc.

2. modelo de N-gramas

El modelo de N-grama se refiere al uso de una ventana deslizante de longitud N para obtener N palabras en la oración para mejorar la precisión de LM. Cuando se utiliza el modelo de N-gramas para construir LM, generalmente solo se considera el impacto de las primeras N-1 palabras en la aparición de la palabra actual. Los modelos de N-gramas comunes incluyen Bigram y Trigram.

3. Introducción al modelo Minkoff

El modelo de Markov se refiere a un modelo que predice estados futuros basándose en el estado actual. En PNL, se puede utilizar para describir reglas del lenguaje y estructuras gramaticales en un texto.

4. Distancia de Minkov

La distancia de Minkov (distancia de Markov) se refiere a evaluar la similitud entre dos secuencias calculando la diferencia en sus probabilidades de transición de estado. En PNL, se utiliza para comparar la similitud de dos secuencias de texto.

5. Aplicación del modelo Minkoff

Los modelos de Minkoff se utilizan ampliamente en PNL, como corrección gramatical automática, traducción automática, resumen automático de texto, etc. Al establecer un modelo de texto de Minkov, se pueden simular las reglas de transición de estado entre textos, obteniendo así resultados de procesamiento del lenguaje natural más precisos.

6. Vectores de palabras y representación de contexto.

1. Introducción a los vectores de palabras.

La incrustación de palabras se refiere a mapear cada palabra en un vector y usar el vector para representar el concepto y la relación semántica de la palabra en el espacio vectorial. Los vectores de palabras pueden convertir el lenguaje natural en una forma digital que puede ser procesada por computadoras y desempeñar un papel importante en el procesamiento del lenguaje natural.

2. Modelo de salto de gramo y modelo CBOW

El modelo de salto de gramo y el modelo CBOW son dos modelos de vectores de palabras comunes. El modelo Skip-gram utiliza la palabra central como entrada para predecir palabras de contexto, aprendiendo así vectores de palabras; el modelo CBOW utiliza palabras de contexto como entrada para predecir la palabra central. Entre ellos, el modelo Skip-gram es más adecuado para procesar palabras raras que el modelo CBOW.

3. modelo de guante

El modelo GloVe (Vectores globales para representación de palabras) es un modelo de vector de palabras basado en la matriz global de coocurrencia de palabras. No solo tiene en cuenta la relación entre palabras de contexto, sino que también tiene en cuenta la relación de coexistencia entre diferentes palabras, obteniendo así una expresión de vector de palabras más precisa.

4. Introducción a la representación del contexto.

La representación de contexto se refiere al proceso de representar una cantidad de palabras antes y después (llamadas palabras de contexto) con una determinada palabra como centro como un vector. La representación de contexto se puede utilizar para tareas como el entrenamiento de vectores de palabras y la clasificación de texto.

5. Método de ventana y frecuencia de palabras contextuales.

El método de ventana se refiere a tomar la palabra central como centro, tomar varias palabras de contexto dentro de un cierto rango antes y después de ella, y unir todas las palabras de contexto en un vector para representar la información de contexto de la palabra central. La frecuencia de palabras de contexto es un método de representación de contexto de uso común, que se define como la cantidad de veces que aparece una palabra en su contexto.

7. Modelado de temas y agrupación

1. Introducción al modelado de temas.

El modelado de temas se refiere al proceso de descubrir la estructura del tema oculta en una gran cantidad de datos de texto. Puede ayudarnos a comprender las palabras clave del tema, la distribución del tema y las relaciones entre los textos en los datos de texto.

2. Modelo LDA

El modelo LDA (Latent Dirichlet Allocation) es un método de modelado de temas común. Se supone que hay temas implícitos en la colección de texto, cada texto se compone de múltiples temas en una determinada proporción y cada tema se compone de múltiples palabras. A través del modelo LDA, los temas del texto se pueden descubrir y analizar automáticamente.

3. Introducción a la agrupación

La agrupación se refiere al proceso de dividir muestras en varios grupos diferentes en función de la similitud entre las muestras. La agrupación puede clasificar y resumir grandes cantidades de datos, ayudándonos a obtener la estructura y distribución de los datos.

4. Algoritmo K-medias

El algoritmo K-means es un algoritmo de agrupación común que divide muestras de datos en diferentes grupos actualizando continuamente los puntos centrales de los grupos de forma cíclica. El algoritmo K-means tiene las ventajas de simplicidad, facilidad de comprensión y alta eficiencia computacional, y se ha utilizado ampliamente en aplicaciones prácticas.

# K-means算法示例代码

from sklearn.cluster import KMeans

# 定义数据样本
X = [[1, 2], [1, 4], [1, 0],
     [4, 2], [4, 4], [4, 0]]

# 聚类数量为2 
kmeans = KMeans(n_clusters=2)

# 进行聚类
kmeans.fit(X)

# 输出聚类簇中心点
print(kmeans.cluster_centers_)

5. Agrupación jerárquica

La agrupación jerárquica es un método de agrupación ascendente (o descendente) cuyo objetivo es organizar muestras jerárquicamente en una estructura de árbol. En el clustering jerárquico, cada muestra se considera inicialmente como un cluster separado, y cada iteración fusiona los dos clusters más similares en uno hasta que finalmente solo queda un cluster. La agrupación jerárquica tiene las ventajas de determinar automáticamente el número de agrupaciones y visualizar resultados intuitivos, y también se ha utilizado ampliamente en aplicaciones prácticas.

8. Aplicación del aprendizaje profundo en PNL

1. Introducción al aprendizaje profundo

Deep Learning es un método de aprendizaje automático cuya idea básica es simular la forma en que el cerebro humano procesa la información a través de redes neuronales multicapa. El aprendizaje profundo tiene las características de aprendizaje automático y extracción automática de características, y es adecuado para procesar grandes cantidades de datos de alta dimensión.

2. Red neuronal profunda

Las redes neuronales profundas son un modelo común de aprendizaje profundo y su estructura básica incluye una capa de entrada, una capa oculta y una capa de salida. Las redes neuronales profundas pueden entrenar modelos para la clasificación y regresión de datos complejos mediante algoritmos como la propagación hacia adelante y hacia atrás.

3. Red neuronal recurrente (RNN) y red de memoria a corto plazo (LSTM)

La red neuronal recurrente (RNN) y la red de memoria a corto plazo (LSTM) son un tipo de modelo de red neuronal profunda ampliamente utilizado en el procesamiento del lenguaje natural. Tienen sólidas capacidades de modelado de características temporales y pueden manejar datos de secuencias largas en lenguaje natural. Entre ellos, LSTM se ha utilizado ampliamente en el campo de la PNL debido a su capacidad para evitar eficazmente el problema del gradiente que desaparece o explota.

4. Red neuronal convolucional (CNN) y mecanismo de atención (Atención)

La red neuronal convolucional (CNN) y el mecanismo de atención (Atención) son otro tipo de modelos de aprendizaje profundo aplicados al procesamiento del lenguaje natural. Las redes neuronales convolucionales pueden procesar datos de texto discretos y dispersos, y sus operaciones de convolución pueden capturar de manera efectiva características locales en el texto. El mecanismo de atención permite que el modelo comprenda mejor la semántica del texto, mejorando así el rendimiento del modelo.

5. Aplicación del aprendizaje profundo en PNL

El aprendizaje profundo se utiliza ampliamente en el procesamiento del lenguaje natural, como el análisis de sentimientos, la clasificación de textos, la traducción automática, etc. A través de modelos de aprendizaje profundo, podemos comprender, analizar y procesar mejor los datos del lenguaje natural y hacer mayores contribuciones al desarrollo de la tecnología del lenguaje.

9. La dirección de desarrollo de la PNL

Con el rápido desarrollo de la tecnología de procesamiento del lenguaje natural (PNL), sus escenarios de aplicación se están generalizando cada vez más y sus direcciones de desarrollo futuras también se expanden y mejoran constantemente. A continuación se presentan varias direcciones prometedoras:

1. Generación de lenguaje natural

La generación de lenguaje natural se refiere al proceso de utilizar computadoras para generar texto en lenguaje natural. Se puede aplicar a muchos campos, como los sistemas de preguntas y respuestas, el resumen automático y la traducción automática. La generación de lenguaje natural puede basarse en reglas o utilizar técnicas como el aprendizaje profundo.

# 基于规则生成自然语言示例

template = "我的名字是{name},今年{age}岁。"  # 定义模板

name = "小明"
age = 18

text = template.format(name=name, age=age)  # 将变量替换到模板中

print(text)  # 输出生成的自然语言文本:“我的名字是小明,今年18岁。”

2. Sistema de diálogo

El sistema de diálogo se refiere a un sistema capaz de dialogar entre humanos y máquinas. Se puede utilizar en múltiples escenarios, como servicio al cliente, asistentes de voz inteligentes y robots. El núcleo del sistema de diálogo es la comprensión y generación del lenguaje natural, y también involucra muchos aspectos, como la gestión del diálogo y la gestión de la base de conocimientos.

# 对话系统示例代码

# 当用户输入问候语“你好”时,系统回复“你好,我可以帮你做些什么呢?”

import random

greetings = ["你好", "您好", "hi", "hello", "嗨"]

random_greeting = random.choice(greetings)

response = "你好,我可以帮你做些什么呢?"

print(response)

3. Resumen del texto

El resumen de texto se refiere al proceso de comprimir un texto en varias oraciones clave. Se puede aplicar al resumen de noticias, informes automatizados, etc. El resumen de texto se puede implementar basándose en métodos extractivos (Extractive) o generativos (Abstractive).

# 基于抽取式方法生成文本摘要示例代码

import nltk
from nltk.corpus import stopwords 
from nltk.tokenize import word_tokenize, sent_tokenize 
  
def generate_summary(text, n): 
    # 分句
    sentences = sent_tokenize(text) 
      
    # 分词
    words = word_tokenize(text.lower()) 
      
    # 去除停用词
    stop_words = set(stopwords.words('english')) 
    words = [word for word in words if not word in stop_words] 
      
    # 计算词频
    freq_table = nltk.FreqDist(words) 
  
    # 计算句子权重
    sentences_scores = {
    
    } 
    for sentence in sentences: 
        for word in nltk.word_tokenize(sentence.lower()):
            if word in freq_table:
                if len(sentence.split(' ')) < 30:
                    if sentence not in sentences_scores:
                        sentences_scores[sentence] = freq_table[word]
                    else:
                        sentences_scores[sentence] += freq_table[word]
                        
    # 选择与摘要长度相符的句子
    summary_sentences = heapq.nlargest(n, sentences_scores, key=sentences_scores.get)
    summary = ' '.join(summary_sentences) 
    return summary 

# 使用示例
text = 'The quick brown fox jumps over the lazy dog. The quick brown fox is fast.' 
n = 1
print(generate_summary(text, n))  # 输出:The quick brown fox is fast.

4. Traducción automática

La traducción automática se refiere al proceso de utilizar computadoras para traducir un lenguaje natural a otro lenguaje natural. Se puede aplicar a la traducción de texto, traducción de voz en tiempo real y otros campos. La traducción automática puede basarse en tecnologías como la traducción automática estadística y la traducción automática neuronal.

# 机器翻译示例代码

import transformers

model = transformers.pipeline("translation_en_to_fr")
text = "Hello, my name is John."
translation = model(text)[0]['translation_text']
print(translation)  # 输出:Bonjour, je m'appelle John.

5. Gráfico de conocimiento

Knowledge Graph se refiere a una base de conocimiento que construye entidades, atributos y relaciones en representaciones gráficas. Se puede aplicar a búsqueda semántica, sistemas de recomendación, respuesta inteligente a preguntas y otros campos. La construcción de un gráfico de conocimiento requiere conocimiento del dominio, comprensión del lenguaje natural y otras tecnologías relacionadas.

# 知识图谱示例代码

import rdflib

g = rdflib.Graph()

# 添加三元组
s = rdflib.URIRef("http://example.org/john")
p = rdflib.URIRef("http://example.org/is_a")
o = rdflib.Literal("Person")
g.add((s, p, o))

# 保存知识图谱
g.serialize("example.nt", format="nt")

10. Revisión resumida

1. Ventajas y desventajas de NLTK

NLTK es un excelente conjunto de herramientas de procesamiento del lenguaje natural que proporciona una gran cantidad de corpus, herramientas y algoritmos, lo que facilita el desarrollo y la investigación del trabajo relacionado con la PNL. Pero también tiene algunas deficiencias, como menor rendimiento, problemas de localización, etc.

2. Ventajas de Python en PNL

Python es un lenguaje fácil de aprender y de rápido desarrollo, y también ha demostrado sus excelentes características en el campo de la PNL. Python tiene una gran cantidad de bibliotecas de terceros, potentes capacidades de procesamiento de datos, bibliotecas de funciones fáciles de usar, etc.

3. Formas y sugerencias para aprender PNL

Puede aprender PNL adquiriendo conocimientos teóricos relevantes, practicando codificación y participando en proyectos relacionados. Se recomienda que los principiantes comiencen aprendiendo conocimientos básicos y poco a poco profundicen en campos de vanguardia como el aprendizaje profundo.

4. Esperando el desarrollo futuro de la PNL

Con el desarrollo continuo de la tecnología del lenguaje, la PNL se utilizará ampliamente en el procesamiento del lenguaje natural, el reconocimiento de voz, el análisis de sentimientos, la inteligencia artificial y otros campos. En el futuro, la tecnología PNL seguirá desarrollándose y sirviendo mejor al desarrollo de la sociedad humana.

Supongo que te gusta

Origin blog.csdn.net/u010349629/article/details/130663037
Recomendado
Clasificación