2012-07-17 73 views
1

我遇到了很多问题(在数据分析或AI的广泛领域)。但是我无法命名它,可能是因为我没有正式的CS背景。请原谅,我举两个例子:用歧义构建递归假设 - 它叫什么?

想象自然语言解析:

The flower eats the cow. 

你有一个程序,它的每个字,并确定其类型和它们之间的关系。有两种方法来解释这句话:

1) flower (substantive) -- eats (verb) --> cow (object) 

使用通常的SVO词序,或

2) cow (substantive) -- eats (verb) --> flower (object) 

使用更诗意的世界秩序。该方案将排除其他可能性,例如“花”作为动词,因为它遵循“the”。它会排列剩余的可能性:1)比2更自然的词序),所以它得到更多的点。但是,包括世界知识,花卉不能吃牛,2)仍然赢。所以它可能会返回两个假设,并给1)30分,2)70分。

然后,它会记住两个假设并继续解析文本,分支。一个分支假设1),一个2)。如果某个分支达到矛盾或者排名为0,则被丢弃。最后,它再次提出排名假设,但对于整个文本。


对于不同的例子,假设光学字符识别:

**  ** 
    **  ** ***** 
    ** ******* 
******* ** 
* **  ** 
    **  ** 

我可以看看招,说,肯定这是一个“H”。在确定H后,我注意到它周围有污迹,并给它一个稍差的分数。

或者,我可以先运行我的污迹识别,并注意水平线看起来像一个神器。删除后,我认识到这是llIl,并给它一些排名。

处理完整个图像后,可以是Hlumination,llluminationIllumination。使用字典和总排名,我决定这是最后一个。


  • 普遍的问题始终是某种解析/理解。例子:
    • 自然语言或模棱两可的语言
    • OCR
    • 路径寻找
    • 不明确或不完整的用户开关输入处理 - 这解释是有意义的,这是最合理的?
  • 我是递归的。
  • 它可以提前退出(当一个分支/解释没有意义,或最终得分为0)。所以这可能是某种回溯。
  • 由于含糊不清,它记住了所有选项。
  • 它基于简单的规则在底部can_eat(cow, flower) = true
  • 它保持解释的合理性排名。
  • 它在元层次递归:它可以派生/分支到不同的'世界',在处理下一部分数据时它假设不同的假设。
  • 它会将个人排名,可能使用贝叶斯概率,转化为依赖假设。
  • 实际上,将会有方法来训练这个东西,确定排名系数,并且如果树太大,会出现截断点。

我不知道这叫什么。人们可能会猜测'决策树'或'递归下降',但我知道这些术语意味着不同的东西。

我知道Prolog可以解决这个简单的例子,像家谱和找出谁是谁的叔叔。但是你必须在代码中提供所有的数据,而且对于我的真实生活案例来说,这看起来并不令人信服或者足够强大。

我想知道,这个问题叫什么,有没有处理这个问题的常用策略?关于这个话题有很好的文献吗?是否有理想的C(++),Python的库,你是否可以定义一堆规则,并且排除所有的排名和假设?

回答

0

我不认为有一个答案符合你所有的要点。但我希望我的链接能让你更接近答案,或者可能会给你一个不同的问题。

我认为最接近的答案是Bayesian network因为你必须互相影响我的理解是,它也关系到Conditional probabilityFuzzy Logic

还描述了一下遗传编程以及人工神经网络

概率

我可以说出滴些更多的主题,这可能是相关的:

http://en.wikipedia.org/wiki/Rule-based_programming

http://en.wikipedia.org/wiki/Expert_system

http://en.wikipedia.org/wiki/Knowledge_engineering

http://en.wikipedia.org/wiki/Fuzzy_system

http://en.wikipedia.org/wiki/Bayesian_inference

+0

推断和要概括,并记住含糊供以后analisys,提醒我绎推理的为好。非单调推理也可能变得有用。知识工程和知识表示也是相关的流行语 - 希望这可以提供很好的搜索条件。 – Ignazio 2013-12-20 15:43:30