La similitud de coseno es una medida de similitud entre dos vectores distintos de cero de un espacio de producto interno que mide el coseno del ángulo entre ellos.
Semejanza = (AB) / (||A||.||B||) donde A y B son vectores.
En este programa se utilizan la similitud de coseno y el módulo de herramientas nltk. Para ejecutar este programa, nltk debe estar instalado en su sistema. Para instalar el módulo nltk, siga los pasos a continuación:
1. Open terminal(Linux). 2. sudo pip3 install nltk 3. python3 4. import nltk 5. nltk.download(‘all’)
Funciones utilizadas:
nltk.tokenize: Se utiliza para la tokenización. La tokenización es el proceso mediante el cual una gran cantidad de texto se divide en partes más pequeñas llamadas tokens.
word_tokenize(X)
dividir la oración dada X en palabras y devolver la lista.nltk.corpus: en este programa, se utiliza para obtener una lista de palabras vacías. Una palabra vacía es una palabra de uso común (como «el», «un», «un», «en»).
A continuación se muestra la implementación de Python:
# Program to measure the similarity between # two sentences using cosine similarity. from nltk.corpus import stopwords from nltk.tokenize import word_tokenize # X = input("Enter first string: ").lower() # Y = input("Enter second string: ").lower() X ="I love horror movies" Y ="Lights out is a horror movie" # tokenization X_list = word_tokenize(X) Y_list = word_tokenize(Y) # sw contains the list of stopwords sw = stopwords.words('english') l1 =[];l2 =[] # remove stop words from the string X_set = {w for w in X_list if not w in sw} Y_set = {w for w in Y_list if not w in sw} # form a set containing keywords of both strings rvector = X_set.union(Y_set) for w in rvector: if w in X_set: l1.append(1) # create a vector else: l1.append(0) if w in Y_set: l2.append(1) else: l2.append(0) c = 0 # cosine formula for i in range(len(rvector)): c+= l1[i]*l2[i] cosine = c / float((sum(l1)*sum(l2))**0.5) print("similarity: ", cosine)
Producción:
similarity: 0.2886751345948129
Publicación traducida automáticamente
Artículo escrito por nitishanon y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA