nltk significa Natural Language Toolkit y es un potente paquete que consta de bibliotecas y programas que se pueden utilizar para el procesamiento estadístico del lenguaje natural. Las bibliotecas pueden implementar tokenización, clasificación, análisis, derivación, etiquetado, razonamiento semántico, etc. Este conjunto de herramientas puede hacer que las máquinas entiendan el lenguaje humano.
Vamos a utilizar dos métodos para la corrección ortográfica. Cada método toma una lista de palabras mal escritas y sugiere la palabra correcta para cada palabra incorrecta. Intenta encontrar una palabra en la lista de ortografías correctas que tenga la distancia más corta y la misma letra inicial que la palabra mal escrita. Luego devuelve la palabra que coincide con los criterios dados. Los métodos se pueden diferenciar en función de la medida de distancia que utilizan para encontrar la palabra más cercana. El paquete ‘words’ de nltk se utiliza como diccionario de palabras correctas.
Método 1: Uso del método de distancia Jaccard
La distancia de Jaccard, lo opuesto al coeficiente de Jaccard, se utiliza para medir la disimilitud entre dos conjuntos de muestras. Obtenemos la distancia de Jaccard restando el coeficiente de Jaccard de 1. También podemos obtenerla dividiendo la diferencia entre los tamaños de la unión y la intersección de dos conjuntos por el tamaño de la unión. Trabajamos con Q-gramas (estos son equivalentes a N-gramas) que se denominan caracteres en lugar de tokens. La distancia Jaccard viene dada por la siguiente fórmula.
Implementación paso a paso
Paso 1: Primero, instalamos e importamos la suite nltk y la métrica de distancia Jaccard que discutimos antes. Los ‘ngramas’ se utilizan para obtener un conjunto de palabras simultáneas en una ventana determinada y se importan del paquete nltk.utils.
Python3
# importing the nltk suite import nltk # importing jaccard distance # and ngrams from nltk.util from nltk.metrics.distance import jaccard_distance from nltk.util import ngrams
Paso 2: ahora, descargamos el recurso ‘palabras’ (que contiene la lista de palabras con la ortografía correcta) del descargador nltk, lo importamos a través de nltk.corpus y lo asignamos a correct_words.
Python3
# Downloading and importing # package 'words' from nltk corpus nltk.download('words') from nltk.corpus import words correct_words = words.words()
Paso 3: Definimos la lista de palabras_incorrectas para las que necesitamos la ortografía correcta. Luego ejecutamos un bucle para cada palabra en la lista de palabras incorrectas en el que calculamos la distancia de Jaccard de la palabra incorrecta con cada palabra de ortografía correcta que tiene la misma letra inicial en forma de bigramas de caracteres . Luego los ordenamos en orden ascendente para que la distancia más corta esté en la parte superior y extraemos la palabra correspondiente y la imprimimos.
Python3
# list of incorrect spellings # that need to be corrected incorrect_words=['happpy', 'azmaing', 'intelliengt'] # loop for finding correct spellings # based on jaccard distance # and printing the correct word for word in incorrect_words: temp = [(jaccard_distance(set(ngrams(word, 2)), set(ngrams(w, 2))),w) for w in correct_words if w[0]==word[0]] print(sorted(temp, key = lambda val:val[0])[0][1])
Producción:
Método 2: Uso del método de edición de distancia
Editar distancia mide la disimilitud entre dos strings al encontrar el número mínimo de operaciones necesarias para transformar una string en la otra. Las transformaciones que se pueden realizar son:
- Insertar un nuevo carácter:
bat -> bats (insertion of 's')
- Eliminación de un carácter existente.
care -> car (deletion of 'e')
- Sustituir un personaje existente.
bin -> bit (substitution of n with t)
- Transposición de dos caracteres consecutivos existentes.
sing -> sign (transposition of ng to gn)
Implementación paso a paso
Paso 1: En primer lugar, instalamos e importamos la suite nltk.
Python3
# importing the nltk suite import nltk # importing edit distance from nltk.metrics.distance import edit_distance
Paso 2: ahora, descargamos el recurso ‘palabras’ (que contiene la ortografía correcta de las palabras) del descargador nltk, lo importamos a través de nltk.corpus y lo asignamos a correct_words.
Python3
# Downloading and importing package 'words' nltk.download('words') from nltk.corpus import words correct_words = words.words()
Paso 3: Definimos la lista de palabras_incorrectas para las que necesitamos la ortografía correcta. Luego ejecutamos un ciclo para cada palabra en la lista de palabras incorrectas en el que calculamos la distancia de edición de la palabra incorrecta con cada palabra de ortografía correcta que tiene la misma letra inicial. Luego los ordenamos en orden ascendente para que la distancia más corta esté en la parte superior y extraemos la palabra correspondiente y la imprimimos.
Python3
# list of incorrect spellings # that need to be corrected incorrect_words=['happpy', 'azmaing', 'intelliengt'] # loop for finding correct spellings # based on edit distance and # printing the correct words for word in incorrect_words: temp = [(edit_distance(word, w),w) for w in correct_words if w[0]==word[0]] print(sorted(temp, key = lambda val:val[0])[0][1])
Producción:
Publicación traducida automáticamente
Artículo escrito por rahulsinghal1904 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA