【问题标题】:Best data structure to use for finding words with similar meaning用于查找具有相似含义的单词的最佳数据结构
【发布时间】:2016-10-16 06:20:15
【问题描述】:

我正在使用二叉树数据结构设计字典。但是我需要从二叉树数据结构中找到相似的含义词。我想知道二叉树数据结构是否可以修改来实现它或者是否有其他数据结构支持这个要求

【问题讨论】:

  • 意思相近的词都属于同一个组吗? IE。如果 A 与 B 和 C 相似,那么 B 也与 C 相似?还是要使用某种特征向量来比较单词,其中足够小的距离构成“可能性”?
  • 例如,puppy 是 dog 的相似词。所以如果我给狗作为输入,我应该得到小狗作为相似词的输出
  • 是的。但是,如果“种族”与“竞争”和“种族”都相似,那么显然“竞争”仍然与“种族”不相似。那么你是如何看待这个案例的呢?您认为“种族”的两个含义是不同的词吗?
  • 其实我并没有想过。我最初的问题是如何进行基本的相似性匹配。根据您所说的,我了解您所解释的可能会发生。但在这个阶段对我来说并不那么重要,拥有功能很好。
  • 我认为我提出的这类问题以及其他一些问题实际上决定了您如何处理相似性。但根据我认为你所说的,你应该做你以前做过的任何事情,但不是在节点中存储实际单词,而是存储相似单词的哈希集。

标签: algorithm data-structures binary-tree binary-search-tree


【解决方案1】:

您可以使用Disjoint Sets数据结构构建初步数据。

每组同义词都会有主要的代表词。如果两个词具有相同的代表,则它们是同义词。

当所有词汇都分配到组时,用包含组的列表填充映射(字典、哈希图)。每个词的关键都是有代表性的。

因此,要获得给定单词的同义词,您必须:
- 代表这个词
- 查找此代表的地图条目
- 从此映射条目中提取同义词列表

当然,正如 Christofer Ohlsson 所注意到的,同音异义词(同一个词的不同含义)会使问题变得更加困难。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多