向量空間模型文件相似度計算實現(C )

2021-08-23 13:41:05 字數 2027 閱讀 5937

讀者可以根據自己的需要進行加殼或改寫,本文權當拋磚引玉。

筆者加的殼在:

vsm模型介紹:

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

using

system.text.regularexpressions;

namespace

felomeng.vsmsimilarity

//////

建構函式:不使用降維表

///public

svmmodle()

//////

相似度計算

//////

文件1(分好詞的,分詞符為非漢字字元)

///文件2(分好詞的,分詞符為非漢字字元)

///兩篇文章的相似度

public

double

similarity(string

text1, string

text2)

dictionary

.keycollection

keys1 = dictionary1.keys;

foreach (string

keyin

keys1)

dictionary2.remove(key);

numerator += temp1 * temp2;

denominator1 += temp1 * temp1;

denominator2 += temp2 * temp2;

}dictionary

.keycollection

keys2 = dictionary2.keys;

foreach (string

keyin

keys2)

similarity = numerator / (math.sqrt(denominator1 * denominator2));

return

similarity;

}///

///相似度計算

//////

第一篇文件的詞頻詞典

///第二篇文件的詞頻詞典

///兩篇文件的相似度

public

double

similarity(dictionary

text1, dictionary

text2)

dictionary

.keycollection

keys1 = dictionary1.keys;

foreach (string

keyin

keys1)

dictionary2.remove(key);

numerator += temp1 * temp2;

denominator1 += temp1 * temp1;

denominator2 += temp2 * temp2;

}dictionary

.keycollection

keys2 = dictionary2.keys;

foreach (string

keyin

keys2)

similarity = numerator / (math.sqrt(denominator1 * denominator2));

return

similarity;

}///

///統計文件詞頻詞典

//////

已分詞文件,分隔符為非漢語字元

///該文件詞頻詞典

public

dictionary

getdictionary(string

text)

else

}return

dictionary;}}

}還有很多可以優化的地方,大家多加思考。如果能夠得到適當優化的話,速度還能提高很多。

計算向量相似度 余弦相似度

1.余弦相似度可用來計算兩個向量的相似程度 對於如何計算兩個向量的相似程度問題,可以把這它們想象成空間中的兩條線段,都是從原點 0,0,出發,指向不同的方向。兩條線段之間形成乙個夾角,如果夾角為0度,意味著方向相同 線段重合 如果夾角為90度,意味著形成直角,方向完全不相似 如果夾角為180度,意味...

NLP計算文件相似度之LSH

coding utf 8 使用lsh來處理 字首樹 from sklearn.feature extraction.text import tfidfvectorizer import jieba.posseg as pseg from sklearn.neighbors import lshfor...

特徵向量相似度和距離的計算

本文 1 2特徵向量相似度和距離的計算34 相似度 5 夾角余弦 6 相關係數 7 dice 8 jaccard910 距離11 明氏距離 12 歐氏距離 13 馬氏距離 14 jffreys matusita 距離 15 mahalanobis 距離,未實現,協方差矩陣 16 camberra 距...