假设我有以下单词列表
香蕉,苹果,橘子,树在这个列表中,奇数词是树。任何人都可以写出算法。
答案 0 :(得分:4)
tree
是什么让它成为奇怪的?为什么不banana
(因为它是一种药草,其他的是树木,也因为它是列表中唯一一个不以'e'结尾的药草)。或者为什么不orange
(因为它是一种颜色和一种植物,其他只是植物)。
您需要定义您尝试过滤的标准:对于人类读者而言,某些事情可能是显而易见的,但计算机算法在不知道使人类明显的所有事实的情况下无法看到。或者至少有足够的事实来得出可靠的结论。
你基本上是在谈论一个大的knowledge-base,而不是一个简单的算法。
答案 1 :(得分:0)
查看本体和推理算法。如果您有一个对特定知识领域进行建模的本体论,那么您将拥有一个信息来源,可以让您区分单词,例如:通过使用部分顺序和关系,然后检查单词是否在部分顺序的相同“子分支”中。您甚至可以定义度量标准以获得“接近程度”或类似的程度。
编辑:还要检查SPARQ,这是一种查询此类结构的语言。并查看三重商店,允许按主题,谓词对象组合获取信息。这符合您的问题,因为它允许您通过谓词比较列表中的两个对象。
答案 2 :(得分:0)
您可以尝试创建一些分类词的数据库,如:
banana {food, plant, fruit, yellow}
apple {food, plant, fruit, computer, phone}
orange {food, plant, fruit, phone}
tree {plant}
然后你可以看到树以外的所有单词都属于水果类。这种检查很容易编码。 这里最大的问题是获取数据库 - 我不认为你想手动创建它并且不得不知道在哪里找到它。它也行不通。想象一下,我们添加
eclair{food, phone}
到这个数据库(手机,因为android 2.1被称为eclair)。然后查询橙色,苹果,香蕉,eclair有两个可能的答案 - eclair,这不是水果或香蕉,不与手机连接。
答案 3 :(得分:0)
免责声明:这不是一件容易上手的事情,因此我建议的解决方案将是高水平的,并包含旨在解决部分问题的学术论文的参考:
您可以尝试语义相关性方法:
另一种方法是对每个单词的语义表示进行建模。
另一种可能的解决方案是使用WordNet
请注意,所有方法都是我尝试的启发式方法,并且在某些情况下预计会失败,但我相信对大多数情况都会很好。