1

假设我们有一个包含若干事物描述的列表。描述由逗号分隔的单词组成。让我们以下面的列表为例(每一行都是一个单独的描述):

white, leather, round
black, plastic, rectangular
wood, rectangular, brown
...

我们希望将它们解析为以下结构:(颜色、材质、形状)

前两个描述可以直接映射到我们的结构中。但是第三个就不行了。因为值的顺序不同:材料、形状、颜色。

所以实际的问题是:我们如何检测这些不规则条目并解析它们?

我想我们必须以某种方式检测每个单词描述的部分。但我什至不知道从哪里以及如何开始。我也非常感谢任何提示、算法和论文(关于相关算法)。

编辑:抱歉忘了提到没有已知和固定的词汇。在不同的类别中可能有相同的词。但可能我认为我错过的最重要的事情是:大多数条目都是常规的。所以我想我们可以用它来增长字典。

4

4 回答 4

2

如果没有某种约束,这是一个不可能的问题。假设您有某种字典来分类单词(可能是模棱两可的),您可以取得一些进展。下面是一个算法的概要:

  1. 首先,将每一行解析为三个单词,而不是对其进行分类。
  2. 然后使用字典为每个单词分配一组候选类别(颜色、材料和/或形状)。
  3. 如果一个词只有一个类别,则从其他两个词中删除该类别。重复直到没有进一步的进展。
  4. 如果所有单词都有一个类别,那么您就完成了并且找到了唯一的解决方案。
  5. 如果任何单词的类别为零,则这三个单词不能组合有效。
  6. 您现在必须猜测:选择一个具有多个类别的词,然后选择一个类别作为该词的暂定分配。重新应用第 3 步中的规则。
  7. 如果任何单词的类别为零,如果没有尝试任何类别,则返回步骤 6;否则退出失败。
  8. 如果所有单词都有一个类别,那么您已经找到了一致的分配。如果您只需要一些解决方案,那么就退出这个解决方案。如果您想要所有解决方案,请将此解决方案添加到一组解决方案中并返回到第 6 步以再次尝试。
  9. 如果某些单词仍然有多个类别,则返回步骤 6(不回溯)。
于 2012-08-01T22:24:56.070 回答
1

对于第一步,我的想法是建立颜色、材料和形状的字典,然后基于这个字典进行解析。

否则,您无法检测到哪个单词属于哪个类别

于 2012-08-01T19:00:37.133 回答
0

为每个位置的单词保留三个列表。给定一个新条目,根据其在该列表中的频率(绝对频率和/或相对于其出现的总次数)对每个列表中的每个单词进行评分。对于得分最高的单词列表组合,将该单词与该列表匹配。在剩下的两个单词和两个列表中重复。然后将最后剩余的单词与最后剩余的列表相匹配。

于 2012-08-01T22:41:08.760 回答
0

从三个单词列表开始,材料、颜色和形状。对于要解析的每一行,尝试将每个条目与所有三个列表中的一个单词进行匹配。当您有匹配项时,将其放入相关的结构字段中。如果您有 2 个匹配项,请将第三个附加到未匹配列表中。如果您可以匹配少于 2 个条目,则跳过该行并在第二遍中尝试使用更大的列表。如果您无法解析第 3 次之后的行,请让用户解析该行并将条目附加到相关列表中。

于 2012-08-01T18:59:56.950 回答