Para aquellos que se están iniciando en el mundo de la programación, Python es uno de los lenguajes más populares y utilizados en el mundo. Además, ofrece una amplia gama de librerías y herramientas que facilitan la programación en lenguaje Natural. Una de las librerías que se destacan en este aspecto es el Natural Language Toolkit o NLTK por sus siglas en inglés.
¿Qué es la librería NLTK para Python?
NLTK está diseñada para trabajar con procesamiento del lenguaje natural (NLP) y permite desarrollar proyectos enfocados en el análisis de textos en cualquier idioma natural. Esta herramienta proporciona al usuario una variedad de funciones preprogramadas como la tokenización, etiquetado de partes del discurso (POS) y análisis de la similitud entre textos.
Cálculo de similitud de textos
Existen diversos casos en los que se requiere determinar la similitud entre dos textos, como en la comprobación de la originalidad de textos, la detección de plagio o incluso la clasificación de textos según su temática. NLTK incluye herramientas que simplifican el proceso de comparación de texto y determinan su grado de similitud.
El siguiente código preformateado le permitirá calcular la similitud entre dos textos:
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer
from nltk import pos_tag
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
def clean_text(text):
text = text.lower()
text = word_tokenize(text)
text = [word for word in text if word not in stopwords.words("english")]
text = [WordNetLemmatizer().lemmatize(word, pos=get_pos(word)) for word in text]
text = " ".join(text)
return text
def get_pos(word):
tag = pos_tag([word])[0][1][0].upper()
tag_dict = {"J": wordnet.ADJ,
"N": wordnet.NOUN,
"V": wordnet.VERB,
"R": wordnet.ADV}
return tag_dict.get(tag, wordnet.NOUN)
vectorizer = TfidfVectorizer()
text1 = "El perro come comida"
text2 = "La mascota ingiere alimentos"
clean_text1 = clean_text(text1)
clean_text2 = clean_text(text2)
corpus = [clean_text1, clean_text2]
vectors = vectorizer.fit_transform(corpus)
similarity = cosine_similarity(vectors)
El resultado obtenido de la función de similitud se encuentra en la variable «similarity». En este caso, el valor será una matriz 2×2 (ya que se compararon dos textos), que contiene los valores de similitud entre los dos textos. En el caso de este ejemplo, el resultado será 1.0 ya que ambos textos son idénticos en cuanto a su contenido.
Cómo funciona el código de similitud de texto
Para entender cómo funciona el código de similitud de texto, es necesario analizar los pasos que se ejecutan:
Tokenización
El primer paso es tokenizar el texto, que es simplemente dividir el texto en palabras individuales. Para ello, se utiliza la función «word_tokenize» de NLTK.
Eliminación de Stop Words
Las «stop words» son palabras que no transmiten un significado importante, como «a», «y», «el», entre otras. En este paso, se eliminan estas palabras del texto utilizando la función «stopwords» de NLTK y una lista predeterminada de palabras.
Lematización
La lematización es el proceso de reducir una palabra a su forma base. Por ejemplo, «alamo», «alamitos» y «alamar» serían lematizados como «álamo». Para realizar la lematización en el código se utiliza la función «lemmatize» de NLTK.
Etiquetado de partes del discurso (POS)
El etiquetado de partes del discurso (POS) es el proceso de identificar la función gramatical de cada palabra en una oración. Esta información se utiliza para determinar cómo se relacionan las palabras entre sí en el texto. Para su cálculo se utiliza la función «pos_tag» de NLTK.
Creación de Espacio Vectorial
Una vez que se han preprocesado los textos, se procede a crear un espacio vectorial en el que los textos serán representados. Los vectores se crean utilizando la clase «TfidfVectorizer», que asigna un peso a cada palabra según su frecuencia de aparición en los textos. Este proceso es necesario para capturar la importancia relativa de las palabras en el texto.
Cálculo de similitud
Finalmente, se utiliza la función «cosine_similarity» de sklearn para calcular la similitud entre los dos textos. Este método de similitud utiliza el coseno del ángulo entre dos vectores para determinar su grado de similitud. En este caso, obtenemos una matriz 2 x 2 con los valores de similitud entre ambos textos.
El cálculo de la similitud entre textos es una tarea que se realiza con frecuencia en el procesamiento del lenguaje natural y puede ser útil en una variedad de casos. La librería NLTK para Python ofrece una amplia gama de funciones preprogramadas para realizar este tipo de análisis con facilidad. Además, la herramienta se encuentra en constante mejora y actualización, lo que la convierte en una excelente opción para trabajar en proyectos de NLP.
Para obtener más información sobre NLTK, se recomienda visitar su sitio oficial: www.nltk.org