日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Python教程:Python計算余弦相似度

一、余弦相似度簡介

余弦相似度是一種衡量兩個向量相似性的方法。在自然語言處理、信息檢索、數(shù)據(jù)挖掘等領域都有廣泛應用。

創(chuàng)新互聯(lián)是一家朝氣蓬勃的網(wǎng)站建設公司。公司專注于為企業(yè)提供信息化建設解決方案。從事網(wǎng)站開發(fā),網(wǎng)站制作,網(wǎng)站設計,網(wǎng)站模板,微信公眾號開發(fā),軟件開發(fā),微信小程序開發(fā),十載建站對小攪拌車等多個方面,擁有多年的網(wǎng)站制作經(jīng)驗。

二、余弦相似度計算

余弦相似度計算公式如下:

import numpy as np

def cosine_similarity(vec1, vec2):
    dot_product = np.dot(vec1, vec2)
    norm = np.linalg.norm(vec1) * np.linalg.norm(vec2)
    
    return dot_product / norm

其中,vec1vec2都是向量,可以是listnumpy.ndarray類型??梢允褂?code>numpy.array方法將list類型轉換為numpy.ndarray類型。

三、處理文本數(shù)據(jù)

1. 數(shù)據(jù)預處理

在進行余弦相似度計算之前,需要對文本進行預處理。一般包括去除停用詞、分詞等操作。

import jieba
import re

def preprocess_text(text):
    
    # 去除除中文、字母、數(shù)字以外的其他字符
    pattern = re.compile('[^\u4e00-\u9fa5^a-z^A-Z^0-9]')
    text = pattern.sub('', text)
    
    # 分詞
    seg_list = jieba.cut(text)
    
    # 去除停用詞
    stopwords = [line.strip() for line in open('stopwords.txt', 'r', encoding='utf-8').readlines()]
    words = [word for word in seg_list if word not in stopwords]
    
    return words

在此代碼中,我們使用了jieba庫進行中文分詞,同時使用了re庫去除了除中文、字母、數(shù)字以外的其他字符。

我們將停用詞文本文件讀入,并在函數(shù)內(nèi)定義了一個stopwords變量存儲停用詞。然后使用列表推導式去除了停用詞。

2. 構建文本向量

將文本轉化為向量是余弦相似度計算的基礎。我們可以使用詞袋模型或TF-IDF算法生成文本向量。

下面是使用詞袋模型生成文本向量的代碼:

def get_text_vector(text, words_dict):
    text_vector = [0] * len(words_dict)

    for word in text:
        if word in words_dict:
            text_vector[words_dict[word]]+= 1

    return np.array(text_vector)

其中,輸入?yún)?shù)words_dict為一個詞典,用于存儲每一個單詞對應的序列索引。

下面是使用TF-IDF算法生成文本向量的代碼:

from sklearn.feature_extraction.text import TfidfVectorizer

def get_tfidf_vector(text_list):
    tfidf_vectorizer = TfidfVectorizer(tokenizer=lambda x: x, preprocessor=lambda x: x)
    tfidf_vectorizer.fit(text_list)
    tfidf_vector = tfidf_vectorizer.transform(text_list)

    return tfidf_vector.toarray()

TF-IDF算法可以幫助我們區(qū)分文本中重要和不重要的單詞,并將其轉換為一個向量。這個向量表示文本中每個單詞在整個語料庫中的重要性。

四、應用實例

現(xiàn)在,我們嘗試使用余弦相似度來進行文本相似性匹配。

docs = ['我喜歡打籃球', '打籃球真是太好玩了', '毛澤東是中國偉大的領袖']
words_dict = {}
text_matrix = []

for i, doc in enumerate(docs):
    words = preprocess_text(doc)
    text_matrix.append(words)
    
    for word in words:
        if word not in words_dict:
            words_dict[word] = len(words_dict)

doc_vectors = []

for words in text_matrix:
    doc_vectors.append(get_text_vector(words, words_dict))

score_matrix = np.zeros((len(docs), len(docs)))

for i in range(len(docs)):
    for j in range(len(docs)):
        score = cosine_similarity(doc_vectors[i], doc_vectors[j])
        score_matrix[i][j] = score

print(score_matrix)

在這個示例中,我們有三個文本,即'我喜歡打籃球''打籃球真是太好玩了''毛澤東是中國偉大的領袖'。首先,我們定義了一個words_dict字典,存儲了每一個單詞對應的序列索引。然后,我們使用preprocess_text方法對每一個文本進行預處理,生成一個處理后的列表。接下來,我們使用get_text_vector方法將每一篇文本表示為一個向量,并將這些向量儲存在doc_vectors列表中。最后,我們使用cosine_similarity方法計算每一篇文本之間的余弦相似度,并將得分維護在score_matrix矩陣中。

五、總結

余弦相似度是一種常用的文本相似性度量方法,在自然語言處理、信息檢索、數(shù)據(jù)挖掘等領域都有重要的應用。在實現(xiàn)余弦相似度計算時,需要進行文本預處理、文本向量構建和余弦相似度計算。實際應用時,可以根據(jù)需求選擇不同的文本向量構建方法,比如詞袋模型或TF-IDF算法。


本文題目:創(chuàng)新互聯(lián)Python教程:Python計算余弦相似度
分享URL:http://m.5511xx.com/article/cocidsd.html