间接对称同义词的数据结构

Data structure for indirect symmetrical synonym

我有一组同义词,例如:

大大大大 巨大的 小小的 苹果香蕉

意思是大是大的同义词,大是巨大的同义词,小是小的同义词,苹果是香蕉的同义词,反之亦然(大是大的同义词,等等)。另一件事是“大”是“巨大”的同义词,“巨大”是“大”的同义词,因为“大”有间接关系。

这应该是词库之类的吧?但是我不确定数据结构应该是什么样子。

“语言的许多不同方面都有图形的自然表示。图形也可用于描述单词在语义上如何相互关联。在每个单词中 class,单词被分组为同义词集, so-called 同义词集。” - 根据 to this article.

因此,对于单词“banana”的示例同义词集是 (elongated crescent-shaped yellow 水果 ) 根据WordNet。同义词集通过语义关系相互链接。因此,您可以找到单词 'apple' (fruit with red or yellow 或绿色皮肤和 甜味 到酸脆发白 果肉 ).

您可以使用 this ruby gem 使用 WordNet 数据库构建图表。

一个简单的选项是像这样的数组数组:

[
  ['big', 'large', 'huge'],
  ['small', 'little']
]

或者,如果huge 在你的模型中不是 big 的同义词那么你可能想要一个像这样的散列:

{
  big: ['large'],
  large: ['big', 'huge'],
  huge: ['large'],
  small: ['little', 'tiny'],
  little: ['small'],
  ...
}

这真的取决于你打算用它做什么。