當前位置:成語大全網 - 成語詞典 - 詞義相似度計算

詞義相似度計算

語義計算索引作業壹 詞義相似度計算

實現2種詞匯相關度計算方法,基於詞典與基於語料各壹種

基於Mturk-771進行實驗和分析(開放式) : _similarity(c1,c2, brown_ic) # 1/2 * log P(LCS(c1,c2)) - (logP(c1) + logP(c2))

lin_similarity(c1,c2, semcor_ic) # 2 * log P(LCS(c1,c2)) / (logP(c1) + logP(c2))

特殊處理:

1、 其中lin_similarity、wup_similarity和path_similarity結果範圍在[0,1]之間,而由我們的數據可知,數據結果應該在[0,5]之間,因此這裏我們把結果×5進行處理。

2、 壹個詞會有多種詞義,判斷兩個詞需要讓兩個詞之間的各個詞義進行比較。如何判斷兩個詞之間的相似度呢?我同時使用了最大值和平均值,發現平均值得到的結果會非常小,猜想兩個詞之間可能有較多的詞義無關,影響了結果,因此最後選擇用最大值。

3、 lch_similarity得到的值都不大,因此最後進行了歸壹化處理×5

4、 res_similarity(c1,c2, brown_ic) jcn_similarity(c1,c2, brown_ic)得到的結果存在le+300,而第二大的數分別為12.26837533572617和19.273454235478546,因此取13和20代替原來的最大le+300。

剩余分數則是歸壹化後再×5

五分分值:

因為預訓練詞向量都比較大,這裏就使用了gensim中的word2vec模型進行自行訓練,訓練語料為text8,大概有100M左右。

最後得到的結果如下圖:score為真實評分分布,w2v為word2vec實際評分分布。

結果分析使用了均方誤差

由圖可以看出,word2vec方法和 res算法結果較好,觀察預測結果分布,可以看出這兩種方法和真實結果分布比較相似。

在觀察時,我們也發現,path等方法相似度偏向與1(或者是5)左右,原因是我們這裏取的是最大值,對於account,explanation這兩個單詞,因為它們有相同的詞義,這裏就認為相似度最大。但實際在現實生活中,考慮兩個詞詞義是否相似,除卻詞義的重合程度外,可能還要考慮兩個詞是否是常用詞義相似等等。比如兩個詞常用含義相似和兩個詞罕見含義相似,雖然都是某種詞義相似,但顯然前者更能體現詞的相似度。

因此可能取平均和取最大都不能很好的描述兩個詞之間的相似度。而語料的方法則可以得到詞的常用和罕見意義這壹信息。這裏用word2vec訓練語料有限,可能結果也不是非常準確,相信如果網上很多預訓練的詞向量可能會有更好的結果。