我遇到了很多問題(在數據分析或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後,我注意到它周圍有污跡,並給它一個稍差的分數。
或者,我可以先運行我的污跡識別,並注意水平線看起來像一個神器。刪除後,我認識到這是ll
或Il
,並給它一些排名。
處理完整個圖像後,可以是Hlumination
,lllumination
或Illumination
。使用字典和總排名,我決定這是最後一個。
- 普遍的問題始終是某種解析/理解。例子:
- 自然語言或模棱兩可的語言
- OCR
- 路徑尋找
- 不明確或不完整的用戶開關輸入處理 - 這解釋是有意義的,這是最合理的?
- 我是遞歸的。
- 它可以提前退出(當一個分支/解釋沒有意義,或最終得分爲0)。所以這可能是某種回溯。
- 由於含糊不清,它記住了所有選項。
- 它基於簡單的規則在底部
can_eat(cow, flower) = true
。 - 它保持解釋的合理性排名。
- 它在元層次遞歸:它可以派生/分支到不同的'世界',在處理下一部分數據時它假設不同的假設。
- 它會將個人排名,可能使用貝葉斯概率,轉化爲依賴假設。
- 實際上,將會有方法來訓練這個東西,確定排名系數,並且如果樹太大,會出現截斷點。
我不知道這叫什麼。人們可能會猜測'決策樹'或'遞歸下降',但我知道這些術語意味着不同的東西。
我知道Prolog可以解決這個簡單的例子,像家譜和找出誰是誰的叔叔。但是你必須在代碼中提供所有的數據,而且對於我的真實生活案例來說,這看起來並不令人信服或者足夠強大。
我想知道,這個問題叫什麼,有沒有處理這個問題的常用策略?關於這個話題有很好的文獻嗎?是否有理想的C(++),Python的庫,你是否可以定義一堆規則,並且排除所有的排名和假設?
推斷和要概括,並記住含糊供以後analisys,提醒我繹推理的爲好。非單調推理也可能變得有用。知識工程和知識表示也是相關的流行語 - 希望這可以提供很好的搜索條件。 – Ignazio 2013-12-20 15:43:30