Procesamiento de lenguaje natural Coincidencia de 14 textos basada en vector de texto y similitud de distancia euclidiana, utilizada para encontrar el texto más similar a la oración de consulta

Hola a todos, soy Wei Xue AI Hoy les presentaré el Procesamiento de lenguaje natural Coincidencia de 14 textos basado en vector de texto y similitud de distancia euclidiana, que se utiliza para encontrar el texto más similar a la oración de consulta. La coincidencia de texto en NLP se refiere a encontrar el texto más similar a una consulta calculando la similitud entre los textos. Uno de los métodos comúnmente utilizados se basa en vectores de texto y similitud de distancia euclidiana. Tanto el texto que se buscará como la declaración de consulta se convierten en representaciones vectoriales. El texto se puede convertir en vectores utilizando modelos de bolsa de palabras, tf-idf, etc. El modelo de bolsa de palabras representa el texto como el número de ocurrencias de cada palabra en el texto, y tf-idf tiene en cuenta la importancia de las palabras en todo el corpus. Calcula la distancia euclidiana entre vectores de texto. La distancia euclidiana es un método comúnmente utilizado para medir la similitud de los vectores, que representa la distancia geométrica entre dos vectores. Seleccione el texto con la distancia euclidiana mínima a la consulta como resultado coincidente. Cuanto menor es la distancia, más similares son los dos textos.

Antecedentes del proyecto

Coincidencia de texto basada en vectores de texto y similitud de distancia euclidiana. Al representar textos como vectores, se puede calcular la similitud de la distancia euclidiana entre dos textos para medir su similitud semántica. Este método de coincidencia de similitud se puede aplicar a varias tareas relacionadas con el texto, como la recuperación de información, la coincidencia de oraciones, los sistemas de recomendación, etc.

Este proyecto resuelve un punto de dolor en la coincidencia de texto, es decir, cómo encontrar el texto más similar a la consulta. En los datos de texto a gran escala, es muy importante encontrar de forma rápida y precisa los textos relacionados con las consultas de entrada del usuario para proporcionar una recuperación y recomendación de información eficientes. Los métodos tradicionales basados ​​en la coincidencia de palabras clave a menudo no pueden lidiar con la similitud semántica, mientras que los métodos basados ​​en el vector de texto y la similitud de la distancia euclidiana pueden capturar mejor la relación semántica entre los textos y mejorar la precisión de la coincidencia.

A través de este proyecto, es posible buscar y hacer coincidir rápidamente el texto más relevante para la consulta, lo que brinda resultados de búsqueda más precisos y recomendaciones personalizadas, y mejora en gran medida la experiencia del usuario. Al mismo tiempo, este método también se puede aplicar a otros campos, como el procesamiento del lenguaje natural, la minería de textos, etc., y tiene amplias perspectivas de aplicación.

principios matemáticos

La coincidencia de similitud de texto basada en el vector de texto y la similitud de la distancia euclidiana es determinar su similitud calculando la distancia euclidiana entre las representaciones vectoriales entre los textos. Aquí están las matemáticas relevantes:

  1. Representación vectorial de texto: la conversión de texto a representación vectorial generalmente utiliza tecnología Bag-of-Words (Bolsa de palabras) o incrustación de palabras (Word Embedding), TF-IDF. En los modelos de bolsa de palabras, el texto se representa como un vector donde cada dimensión corresponde a una palabra o característica. Las incrustaciones de palabras representan texto asignando cada palabra a un vector en un espacio vectorial continuo de baja dimensión.

  2. Distancia euclidiana: La distancia euclidiana se utiliza para medir la distancia directa entre dos vectores. Para dos vectores x e y, su distancia euclidiana se puede calcular mediante la siguiente fórmula:

    re ( x , y ) = ∑ yo = 1 norte ( xi − yi ) 2 d(x, y) = \sqrt{\sum_{i=1}^{n}(x_i - y_i)^2}d ( x ,y )=yo = 1n( Xyoyyo)2

    Entre ellos, nnn es la dimensión del vector,xi x_iXyosuma yi y_iyyorepresentan el vector xx respectivamentex y y y presenteiiValores en i dimensiones.

  3. Cálculo de similitud: De acuerdo con la distancia euclidiana, podemos calcular la puntuación de similitud entre textos. El método de cálculo de similitud generalmente consiste en asignar la distancia euclidiana a un rango de similitud, por ejemplo, utilizando la fórmula de normalización:

    similitud = 1 1 + d similitud = \frac{1}{1 + d}semejanza _ _ _ _ _ _ _=1 + re1

    Entre ellos, ddd es la distancia euclidiana.

Al calcular la distancia euclidiana entre la oración de consulta y otros textos, y al calcular el puntaje de similitud de acuerdo con la fórmula de cálculo de similitud, se puede encontrar el texto más similar a la oración de consulta. Cuanto mayor sea la puntuación de similitud, más similares serán los dos textos.
inserte la descripción de la imagen aquí

Pasos de implementación:

1. Almacene los datos de muestra en la lista de documentos, cada elemento representa un texto.

2. Use la herramienta de segmentación de palabras jieba para segmentar el texto y genere la lista de texto documentos_tokenizados después de la segmentación de palabras.

3. Cree el vocabulario y use la clase TfidfVectorizer para calcular la matriz TF-IDF. TF-IDF es un método de representación de características de texto, que considera la frecuencia de las palabras y la frecuencia inversa del documento, lo que puede reflejar la importancia de las palabras en el texto.

4. Convierta la matriz TF-IDF en un DataFrame, donde las filas representan cada texto y las columnas representan cada vocabulario.

5. Defina la declaración de consulta y procese su segmentación de palabras para obtener el vector de consulta.

6. Calcule la similitud del coseno entre el vector de consulta y cada vector de texto en la biblioteca para obtener una matriz de similitud.

7. Encuentre el índice de texto con la mayor similitud en la matriz de similitud, es decir, el texto más similar a la declaración de consulta.

8. Finalmente, genere la declaración de consulta y el texto más similar.

Código de implementación

Ahora use el código más claro para realizar la función de búsqueda de similitud de texto:

import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
import jieba

# 样例数据
documents = ['北京的天气挺好',
             '我要去北京玩',
             '我来自中国',
             "北京是比较好玩的地方",
             "北京有故宫这个景点",
             "这个假期去福州玩,感觉不错",
             '上海的天气很热',
             '我打算去上海旅游',
             '上海是一个现代化城市',
             '上海有很多高楼大厦',
             '上海的夜景非常美丽',
             '这个周末我要去上海参加活动',
             '广州的气温很高',
             '我喜欢广州的美食',
             '广州是一个繁华的城市',
            '广州有很多著名的旅游景点']

# 分词处理
tokenizer = lambda x: jieba.cut(x)

# 将文本进行分解
documents_tokenized = [" ".join(tokenizer(doc)) for doc in documents]

# 构建词汇表
vectorizer = TfidfVectorizer()
vectorizer.fit(documents_tokenized)
vocabulary = vectorizer.get_feature_names_out()

# 计算TF-IDF矩阵
tfidf_matrix = vectorizer.transform(documents_tokenized)

# 存储文本向量
df = pd.DataFrame(tfidf_matrix.toarray(), columns=vocabulary)



if __name__ == "__main__":

    # 查询相似度
    query = "你知道假期去福州,有什么景点推荐的"
    query_tokenized = " ".join(tokenizer(query))
    query_vector = vectorizer.transform([query_tokenized])

    # 计算查询向量与库中向量的相似度
    similarity_scores = cosine_similarity(query_vector, tfidf_matrix)

    print(similarity_scores)

    # 找到相似度最高的文本
    most_similar_index = similarity_scores.argmax()
    most_similar_text = documents[most_similar_index]

    print("查询语句:", query)
    print("最相似文本:", most_similar_text)

resultado de la operación:

[[0.        0.        0.        0.        0.3319871 0.5341931]]
查询语句: 你知道假期去福州,有什么景点推荐的
最相似文本: 这个假期去福州玩,感觉不错

Resumir

Este documento presenta un método de coincidencia de texto basado en el vector de texto y la similitud de la distancia euclidiana para encontrar el texto más similar a la oración de consulta. En primer lugar, al convertir el texto y las oraciones de consulta en representaciones vectoriales, la vectorización se realiza mediante métodos como el modelo de bolsa de palabras o tf-idf. Luego, calcule la distancia euclidiana entre los vectores de texto, que mide la similitud entre ellos. Finalmente, el texto con la distancia euclidiana más pequeña se selecciona como resultado coincidente. Este método enfatiza la información semántica del texto, pero ignora la información contextual. En aplicaciones prácticas, se pueden combinar otras técnicas y algoritmos para mejorar la precisión.

Supongo que te gusta

Origin blog.csdn.net/weixin_42878111/article/details/131921031
Recomendado
Clasificación