#! /usr/bin/env pythonview code# -*- 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)
文字相似度演算法
1.基於詞向量 余弦相似度 分詞 列出兩個句子的並集 計算詞頻向量 計算余弦值,適合基於語義的相似度分析 曼哈頓距離 歐幾里得距離 明式距離 是前兩種距離測度的推廣 在極限情況下的距離是切比雪夫距離 2.基於字元的 編輯距離 simhash,對於短小的文字,計算相似度並不十分準確,更適用於較長的文字...
計算文字相似度 文字相似度演算法之 simhash
文字相似度演算法種類繁多,今天先介紹一種常見的網頁去重演算法simhash。1 什麼是simhash 2 simhash步驟 人工智慧,1 大資料,2 科技,3 網際網路,4 機器學習,5 人工智慧 00101 大資料 11001 科技 00110 網際網路 10101 機器學習 01011 has...
文字相似度
這種相似度計算方式相對簡單,原理也易於理解,就是計算單詞集合之間的交集和並集大小的比例,該值越大,表示兩個文字越相似。在涉及到大規模平行計算時,該方法效率上有一定的優勢。jaccard 相似度公式 舉例 句子a 我喜歡看電視,不喜歡看電影。句子b 我不喜歡看電視,也不喜歡看電影。分詞去噪後 a 我,...