我必須爲以下一個字符串列表:聚類串並返回一個列表的列表
a = ['aaa-t1', 'aaa-t2', 'aab-t1', 'aab-t2', 'aab-t3', 'abc-t2']
我想通過相似性聚類這些字符串。您可能會注意到,a[0]
和a[1]
共享相同的根:aaa
。我想產生列表的一個新的列表,看起來像這樣:
b = [['aaa-t1', 'aaa-t2'], ['aab-t1', 'aab-t2', 'aab-t3'], ['abc-t2']]
會是一個什麼辦法做下去?到目前爲止,我還沒有成功,我沒有任何體面的代碼來展示。我試圖比較字符串與fuzzywuzzy
,但這樣做需要創建可能的字符串組合,並與列表的長度嚴重縮放。
「相似性」的規則是什麼?這是否就像「在第一個'-'前使用所有內容並將其用於分箱」一樣簡單,或者您需要做更復雜的相似處理(la'word2vec'類的東西?) – mgilson
@mgilson我認爲「在第一個'-'之前拿走所有東西」就可以完成這項工作。我對'word2vec'完全不瞭解,但是看到它也會很棒! – muammar