【问题标题】:Python data structure for thesaurus词库的 Python 数据结构
【发布时间】:2016-02-17 17:20:11
【问题描述】:

我需要为我选择的大约 100 个单词定义同义词。为了测试,我手动添加条目:

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']})

所以我正在创建一个空字典,然后将“Strong”和“Fast”之类的词映射到同义词(我需要能够选择)。

由于我只需要 100 个不同的单词映射,这是一种合理的方法吗?还是有更好的方法来实现这一点?

我也在考虑使用 NLTK 和 wordnet 模块。但是,这个模块需要一段时间才能运行,而且我似乎无法添加我需要的同义词。

【问题讨论】:

  • 您是否从某个可以解析 ti 的地方(文件、Web 服务等)获取此数据表单?
  • 同义词库对同义词使用某种加权值,但我想这不是必需的,所以 dictkey 和同义词列表为 values 应该是一个不错的选择这样做的方式。唯一的问题是您手动添加它,因此它不可扩展
  • 我目前没有从任何地方获取数据,尽管可以通过这种方式进行设置。加权值是一个有趣的想法,但我目前不需要......可以扩展的东西是理想的,因为即使手动输入 100 也需要很长时间。
  • 不确定您的数据是什么格式,但您可以将所有数据输入 Excel 工作表,将其保存为 csv,然后打开文件并逐行加载到您的 dict 数据中一个非常简单的python脚本结构。
  • 我肯定会使用互联网来做这个,你可以很容易地使用 thesaurus.com、python 请求库和 BeautifulSoup

标签: python algorithm data-structures


【解决方案1】:

我可以以graph 的方式组织您的词库。首先,将所有单词保存在字典 word -> key 中,然后制作一个 linked-list 图,因为它会很稀疏。

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

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

对于大型数据集,它会更好地扩展,因为 ints 使用的内存比 strings 少。

【讨论】:

    【解决方案2】:

    在实际的词库中,单个词可能属于多组同义词。例如,quick 中的 fast 可能是一个列表,而 secure 中的 fast 可能在另一个列表中。

    我会将每个单词映射到“意义组”列表,然后每个意义组将映射到单词列表。

    【讨论】:

    • 所以如果我理解正确,{'Fast': 'QuickGroup', 'SecureGroup'... etc.} 然后 {'QuickGroup': 'agile', 'brisk', 'rapid' ...等}?
    猜你喜欢
    • 1970-01-01
    • 2012-04-01
    • 2010-10-30
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多