2015-06-23 20 views
1

我想分組數據中的冗餘進行一些分析。我的主要分析工具是他們的頭銜。什麼是比較字符串的最佳算法,並將類似的東西放在一起?

我可能會像「青鳥」,「大藍鳥」,「黃狗」「紅狗」等

在這種情況下,我想組「青鳥」和「大藍鳥「在一起,但其他要素都不應該分組。

我知道字符串指標,但是,在一般情況下,如何有效的他們是在短語,而不是單個詞或嘈雜的字符串,這將是對這一問題的有效解決方案?

+0

通過「串指標,」你說的是度量空間的嵌入? – templatetypedef

+0

是的,您可以通過定義適當的度量(例如levenshtein距離)將字符串集合創建爲度量空間。 –

回答

0

你可以使用,人們通常把在節目數組排序相同的邏輯,確定一個變量(在這種情況下,將是我們將使用的第一個字一個字符串),並與你有字符串比較,總是尋找一個平等的詞,如果它是平等的,你應該放置在一個單獨的向量或特定的順序。

但是,這樣做你會花很多時間,可能不會去,因爲它會去用短語詞組,一個字一個字,信信的最佳途徑。否則,用大組中的第一個單詞的首字母分隔字符串似乎很有幫助。這樣,您可以花更少的時間搜索重複的單詞,從而優化內存的使用。

我發現來自卡內基 - 梅隆大學本文,似乎很有趣,它談論這個問題,你應該更好看: String Metric

0

字符串指標不還是關心你的話包含空的空間不。因此,短語大多隻是長字符串比的話(在這方面),所以字符串指標的工作也很好,如果您正在執行模糊搜索(allthough你可能想搜索的每一個字單獨)。

因爲你似乎雖然在尋找精確的匹配,我會建議從標題的級聯構建後綴樹。然後,您可以爲每個標題搜索該樹,如果您有多個匹配項,則可以構建標題組。然而,你將需要決定你想要的組合做這樣

  • 藍鳥
  • 大藍鳥
  • 小藍鳥

繼棕/紅狗例子,你會是什麼不想將「大藍鳥」與「小藍鳥」組合在一起,而將「藍鳥」與這兩者組合在一起。

相關問題