2016-02-17 114 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, ...], ...} 

它将为大型数据集更好,因为整数使用较少的内存比