文字相似度演算法

2022-09-10 03:12:13 字數 1471 閱讀 6772

#! /usr/bin/env python

# -*- coding: utf-8 -*-# @time :

2021/11/12

15:44

"""我們再寫一遍這個演算法;

"""from

icecream import ic

import jieba

import jieba.analyse

from

gensim import corpora

from

gensim import models

from

gensim import similarities

from

collections import defaultdict

def similarity_fun(doc_list):

# 1.首先我們需要對其進行分詞,二維列表放詞語

texts = [list(jieba.cut(i)) for i in

doc_list]

ic(texts)

# 2.接下來要對詞語進行標號

dictionary =corpora.dictionary(texts)

ic(dictionary.token2id) #這個只是讓你看一下,待會呼叫的是封裝的他

# 3.標號以後,要將其 轉化為數字

corpus = [dictionary.doc2bow(text) for text in

texts]

ic(corpus)

# 4.建立模型

tfidf =models.tfidfmodel(corpus)

ic(tfidf)

# 5.將整個語料庫轉化為tfidf表示方法

corpus_tfidf =tfidf[corpus]

ic(corpus_tfidf)

# 6.建立相似度索引

index =similarities.matrixsimilarity(corpus_tfidf)

ic(index)

# 7.計算單個詞語的相似度

words_sims = [tfidf[obj] for obj in

corpus]

ic(words_sims)

# 8.計算句子之間的相似度

texts_sims = [index[obj] for obj in

words_sims]

ic(texts_sims)

if __name__ == "

__main__":

doc_list =[

"楚楓不是楚楓",

"楚楓是人"]

doc_list =[

"楚楓有五顆仙靈草",

"楚月沒有仙靈草",

"楚楓喜歡楚月"]

similarity_fun(doc_list=doc_list)

view code

文字相似度演算法

1.基於詞向量 余弦相似度 分詞 列出兩個句子的並集 計算詞頻向量 計算余弦值,適合基於語義的相似度分析 曼哈頓距離 歐幾里得距離 明式距離 是前兩種距離測度的推廣 在極限情況下的距離是切比雪夫距離 2.基於字元的 編輯距離 simhash,對於短小的文字,計算相似度並不十分準確,更適用於較長的文字...

計算文字相似度 文字相似度演算法之 simhash

文字相似度演算法種類繁多,今天先介紹一種常見的網頁去重演算法simhash。1 什麼是simhash 2 simhash步驟 人工智慧,1 大資料,2 科技,3 網際網路,4 機器學習,5 人工智慧 00101 大資料 11001 科技 00110 網際網路 10101 機器學習 01011 has...

文字相似度

這種相似度計算方式相對簡單,原理也易於理解,就是計算單詞集合之間的交集和並集大小的比例,該值越大,表示兩個文字越相似。在涉及到大規模平行計算時,該方法效率上有一定的優勢。jaccard 相似度公式 舉例 句子a 我喜歡看電視,不喜歡看電影。句子b 我不喜歡看電視,也不喜歡看電影。分詞去噪後 a 我,...