2011-05-24 73 views
1

我試圖製作一個算法,可以輕鬆簡化並將同義詞(不匹配,首字母縮寫詞,縮略詞等)分組爲一個。我認爲應該存在一種標準的方法來構建這樣一種結構,即查找可能不匹配的字符串,如果字符串存在於結構中,它將返回標準化的字符串鍵。總之,有時候可以用幾種方式來寫同一個概念,但我只想保留這個概念。將多個字符串關聯到只有一個

例如:Supose我想正常化或簡化

"General Director", "General Manager", "G, Dtor", "Gen Dir", ... 

的出場打入

"GEN_DIR" 

,只保留這個結果作進一步參考。

順便說一句,我想,建設有鍵/值對的哈希像

hash["General Director"]="GEN_DIR" 
hash["General Manager"]="GEN_DIR" 
hash["G, Dtor"]="GEN_DIR" 
hash["G, Dir"]="GEN_DIR" 

可能是一個解決方案,但我懷疑有到更優雅或適當的解決辦法。

我還需要在沒有任何數據庫的情況下輕鬆地堅持這種關聯結構的方式,因爲它應該隨着我找到更多的相同單詞或句子的不匹配而增長。我認爲一種可能的方法是通過DSL來定義這種結構,但我願意接受建議。

+0

正則表達式。 – 2011-05-24 00:18:16

+2

甚至在考慮編碼之前,您必須顯示將「General Director」等連接到「GEN_DIR」的規則;那是你的責任。如果沒有這樣的規則,那麼你可以做到這一點的唯一方法是將它與先前設置的字典進行匹配,並且通常使用散列在ruby中完成。通過哈希查找顯示出良好的性能;你不必擔心散列的增長。 – sawa 2011-05-24 01:22:27

回答

0

那麼,沒有規則,至少有一個明確的規則。

我的目標是從網頁上取消一些「結構化」的數據,有時這些數據有時是不正確或不完整的類型。有些字段是說明,可以保留原樣。但是有些領域被定義爲「集合」,但是沒有正確的類型(如我的例子)。一個人可以讀懂它,他立即知道它的含義,並可以將其與其意義聯繫起來。

但我想盡可能自動化將這些可能的不匹配減少到只有一個「字符串」(或符號),例如,將其保存到數據庫之前。所以,我需要的是一種散列或字典,正如sawa正確說明的那樣,我可以用它來查找任何這樣的髒字符串以獲得規範化的字符串或符號。

另外,當然,希望有一種方法可以使這種散列(或者它可能是)以某種方式從新的不匹配中學習並自動添加新的關聯(可能它可能基於距離度量在不匹配的字符串和標準化的字符串之間,如果低於X,則建立新的關聯)。整個關聯(即散列)應該隨着新的不匹配和概念的出現而增長,然而,它應該保存在任何地方(可能在xml文件中,或類似Mori下面回答的內容)以備將來使用。

任何新的想法?

相關問題