讀者可以根據自己的需要進行加殼或改寫,本文權當拋磚引玉。
筆者加的殼在:
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 距...