リストがあります:list = ['item1', 'item2', 'item3', 'item4']
すべてのアイテムの類似性を比較したい。
item2
とitem3
が似ている場合、結果は次のようになります。list = ['item1', 'item2', 'item4']
編集:
紛らわしい質問で申し訳ありません。
リスト項目はトリグラムのセットです。リスト内の類似アイテムを削除したい。
list = [('very','beauty','place'),('very','good','place'),('another','trigram','item')]
そのリスト内のすべてのペアアイテムのジャカード類似度を計算し、ペアアイテムのジャカードスコア> 0.4の場合、類似と呼びます。この例では、item1 と item2 は類似しています。私が望む最後の出力は次のとおりです。
list = [('very','beauty','place'),('another','trigram','item')]
これは、jaccard スコアを計算する方法です。
def compute_jaccard_index(set_1, set_2):
n = len(set_1.intersection(set_2))
return n / float(len(set_1) + len(set_2) - n)