2016-02-17 57 views
3

我需要爲我選擇的約100個單詞定義同義詞。爲了測試我手動添加條目:同義詞庫的Python數據結構

t = {} 
t.update({'Strong':['Strong', 'Able', 'Active', 'Big', 
        'Energy', 'Firm', 
        'Force', 'Heavy', 'Robust', 'Secure', 
        'Solid', 'Stable', 'Steady', 
        'Tough', 'Vigor', 'Might', 
        'Rugged', 'Sound']}) 

t.update({'Fast':['Fast', 'Agile', 'Brisk', 'Hot', 'Quick', 
       'Rapid', 'Swift', 'Accel', 'Active', 
       'Dash', 'Flash', 'Fly', 'Race', 'Snap', 
       'Wing', 'Streak', 'Time', 'Chop', 'Jiffy', 
       'Split', 'Bat', 'Crazy', 'Double', 'Scream', 
       'Sonic', 'Super', 'Ball', 'Speed']}) 

所以我創建一個空的字典,然後取詞,如「強」和「快」,並將其映射到同義詞(我需要能夠選擇)。

由於我只需要100個不同的詞映射,這是一個合理的方法?還是有更好的方法來實現這一點?

我也在看使用NLTK和wordnet模塊。然而,這個模塊需要一段時間才能運行,似乎我沒有辦法添加像我需要的同義詞。

+1

你是否可以從某個地方(一個文件,一個web服務等)獲取這個數據表單,你可以從中解析ti? – IanAuld

+1

同義詞庫爲同義詞使用某種加權值,但我想這不是必須的,所以帶有'key'和同義詞列表'value'的'dict'應該是一個很好的方法。唯一的問題是,你手動添加,所以它是不可擴展的 – RafaelC

+0

我沒有從目前的任何地方獲取數據,雖然它可能是這樣設置它。加權值是一個有趣的想法,但目前我並不需要這樣做......可以進行縮放的東西是理想的,因爲即使手動輸入100也需要很長時間。 –

回答

1

在實際的詞庫中,單個詞可能屬於多組同義詞。例如,快速快速可能是一個列表,而快速如在安全可能在另一個。

我會將每個單詞映射到「感官組」列表,然後每個感官組將映射到單詞列表。

+1

所以,如果我理解正確,{ '快速':'QuickGroup','SecureGroup'等等}然後{'QuickGroup':'敏捷','輕快','快速'等等}? –

1

我可以用的方式整理你的詞庫。首先,您將字典中的所有單詞保存爲word -> key,然後製作一個鏈接列表圖表,因爲它會很稀疏。

w = {} 
w = {'Fast': 0, 'Strong': 1, 'Able': 2, 'Active': 3, 'Big': 4, ...} 

t = {0: [1, 2, 3, ...], ...} 

它將爲大型數據集更好,因爲整數使用較少的內存比