セット内の単語間の意味的類似性を計算するための Python スクリプトを作成しました。その上で、他との相関性があまり高くない単語を削除したいと考えています。以下は、セットから単語を削除するためのコードです。
line_combined=copy(line1)
threshold = 1/len(line_combined)
for word3 in line_combined:
print("simdict[" + word3 + "] =" + str(simdict[word3]))
print ("ratio is: " + str(simdict[word3]/linesumsim))
if(simdict[word3]/linesumsim)<threshold:
line_combined.remove(word3)
print word3 + " is removed"
print "the output is:"
print line_combined
「line1」は検討中の単語のセットで、リストとして使用されます。「simdict[word]」は、「word」とセット内の残りの単語との類似度の合計を保持します。「linessim」は、セット内のすべての単語のすべての「simdict」値の合計です。
出力は次のとおりです。
linesumsim is 2.82012427883
simdict[city] =0.517357507497
ratio is: 0.183452024217
simdict[mountain] =0.642265108364
ratio is: 0.227743547752
simdict[sky] =0.484908130427
ratio is: 0.171945660007
simdict[sun] =0.637289239227
ratio is: 0.225979132909
simdict[characteristics] =0.538304293319
ratio is: 0.190879635114
the output is:
['city', 'mountain', 'sky', 'sun', 'characteristics']
simdict 値がしきい値 (この場合は 0.2) よりも小さい単語があることは明らかです。しかし、それらは削除されていません