我忙於處理大量投訴數據的文本分析項目。數據的一個問題是你得到同一單詞的多個同義詞,例如,賬單,計費,賬單,賬單等。通常我會創建一個詞頻列表並手動匹配顯而易見的詞,然後將主詞應用回原始語料庫以用於每個同義詞實例,例如,賬單,賬單,賬單 - >賬單(因爲它是所有賬單相關的)。我有一個漂亮的代碼,有人在這裏幫助我。R字符串相似度矩陣
最近我一直在玩弄使用字符串距離算法的想法,通過識別可能的同義詞來使我的生活更輕鬆。我正在使用stringdist軟件包,但如何高效地實施測試,我感到很茫然。基本上我需要一個所有單詞的矩陣,並在交叉點處使用stringdist函數的結果。
我使用stringdist功能如下:
library(stringdist)
1 - stringdist('MARTHA','MATHRA',method='jw',p=0.1)
給出了A,B,C的單詞列表的0.955
那麼的相似性得分,我想要去(值僅供參考):
a b c
a 1 0.4 0.4
b 0.4 1 0.4
c 0.4 0.4 1
其中交叉點是stringdist函數的結果。
備選地我也可以工作以:
a a 1
a b 0.4
a c 0.4
b a 0.4
b b 1
b c 0.4
c a 0.4
c b 0.4
c c 1
與後者的唯一問題是重複的,例如a,b和b,a可以被消除,因爲它會產生相同的結果。
所以聰明的R編碼器,請幫助我。我想答案在矩陣函數中,但我不是一個好的R編碼器。
乾杯
是否有可能訂購的話,然後進行與對您的表規定第2列中的項目不能小於/低於第1列? – user2627717 2014-12-11 03:24:35
我懷疑'stringdist'是矢量化的,所以你註定要慢速循環。假設你有'n'個詞,並且對該函數調用'n *(n-1)/ 2'的速度太慢,那麼在嘗試減小問題大小時你必須有創意。例如,只能處理以相同字母開頭的子組的單詞。 – flodel 2014-12-11 03:35:17
如果你想使用package'stringdist'那麼爲什麼不使用'stringdistmatrix(...)'?另外,如果您對Levenshtein距離感到滿意,則可以在基數R中使用'adist(...)'。 – jlhoward 2014-12-11 04:17:45