2010-04-10 54 views
1

我想爲我的AI類做一個謎題AI聊天機器人。 所以我figgured輸入到聊天機器人將是:單詞特徵標籤

喜歡的東西: 「這是藍色的,它是,但它不是天花板」

翻譯:

<Object X> 
    <blue> 
    <up> 
    <!ceiling> 
</Object X> 

(答案:天?)

所以輸入是一組特徵(現有的\不存在於對象中),輸出是一個匹配的,最有可能的對象。

的域名將被限制在一個數量的對象,我可以輸入所有屬性,不過我在想:

我怎麼能編程的特點建立一個數據庫,一個字? 有沒有這樣的數據庫可用?我怎麼能標記一個詞,我怎麼能編程方式找到它的所有屬性?我正在考慮爬行維基百科,或一些論壇,但我看不到它建立任何可靠的文字標籤數據庫。

關於如何實現這樣的事情的任何想法?關於這個問題的一些文獻的任何想法?

謝謝

+0

每當我看到一個支持AND,OR和NOT兩個但不是全部三個(也包括括號)的搜索函數時,我會擔心。 – Oddthinking 2010-04-10 16:29:21

回答

2

這聽起來像是一個基本的分類問題。你基本上在問:給定N個特徵(顏色=藍色,位置=向上等),M分類中哪一個最可能?有很多算法可以完成這個任務(樸素貝葉斯,最大熵,支持向量機),但是你必須研究哪一個是最準確和最容易實現的。最大的挑戰是通常需要獲取準確的培訓數據,但如果您願意將其限制爲手動輸入示例列表,則應該簡化您的實施。

你的例子表明,你選擇的算法將不得不支持稀疏數據。換句話說,如果您已經在300個功能上訓練了系統,則無需輸入全部300個功能即可獲得答案。它還會使您的培訓和測試文件變得更小,因爲您將忽略與某些對象無關的功能。例如

sky | color:blue,location:up 
tree | has_bark:true,has_leaves:true,is_an_organism=true 
cat | has_fur:true,eats_mice:true,is_an_animal=true,is_an_organism=true 

它可能不是非常有幫助的,因爲它是私有的,而是一個商業應用,它類似於你想實現什麼是網站20q.net,儘管該系統提出的問題,而不是用戶。有趣的是,它是基於用戶輸入「在線」訓練的。

維基百科確實擁有大量數據,但您可能會發現爲您的程序提取數據將非常困難。 Cyc的數據更加標準化,但其API具有巨大的學習曲線。另一種選擇是語義字典項目Wordnet。它爲幾乎所有的編程語言都有合理的直觀API,以及數千個單詞的廣泛的上下文模型(例如,貓是一種貓科動物/哺乳動物/動物/生物體/物體)。

2

Cyc項目具有非常相似的目標:我相信它包含的兩個推理引擎來執行AI,以及關於常識的知識(如天空的顏色)的事實數據庫。

+0

謝謝,看起來很有趣,我一定會嘗試一下 – 2010-04-10 16:26:15

相關問題