Cálculo de la similitud entre textos utilizando Python y la librería NLTK

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

No te pierdas los últimos artículos:

Web Scraping con Python y BeautifulSoup para Principiantes

Bienvenido a esta guía sobre Web Scraping con Python y BeautifulSoup, diseñada especialmente para principiantes. Si estás buscando aprender a extraer datos de sitios web de manera eficiente, seguro que ...

Curso de Python Básico Gratis

Módulo 1: Introducción a Python Nuestra meta principal es que, al final de este curso, tengas una sólida comprensión de los fundamentos de Python y estés listo para crear tus ...

Sistemas Expertos: ¿Qué son y para qué sirven?

Los sistemas expertos representan una rama fascinante de la inteligencia artificial, diseñada para emular la toma de decisiones de un humano experto en un campo particular. Estas herramientas avanzadas combinan ...

La Historia de la Inteligencia Artificial contada en Años

¿Cómo comenzó todo? Echemos un ojo a la historia de la IA a lo largo del tiempo. Desde 1950 hasta 2024. El artículo es largo, usa la tabla de contenidos ...

¿Qué es el meta-aprendizaje?

El mundo de la Inteligencia Artificial (IA) está en constante evolución, y una de las áreas más intrigantes y prometedoras es el metaaprendizaje. Pero, ¿qué es exactamente el metaaprendizaje y ...
Cargando...