2016-12-26 48 views
0

我試圖開發人造機器人,我發現AIML是什麼,可用於實現這樣的目標,我就發現這是由計劃-O完成AIML解析這些點AIML解析器PHP

1)中的所有字母輸入轉換爲大寫 2)所有標點符號被剝離出來,並用空格 3)多餘的空格chatacters,包括標籤替換,去除

從那裏,程序O的執行在數據庫中搜索,尋找所有可能的匹配輸入,包括通配符。然後對返回的結果進行相關性評分,並選擇「最佳匹配」。程序O然後從選擇的結果中處理AIML,並將完成的產品返回給用戶。

我只是想知道如何定義分數和找到相關的答案最接近用戶輸入

任何幫助或想法可以理解

+0

在我看來,你要求的不是解釋器(即PHP,Perl,C,Java),而是關於語言本身。你有沒有看過http://www.alicebot.org/關於模式匹配器應該如何工作的解釋? –

+0

我還沒有看到它現在檢查它基本上我想在PHP中開發我自己的AIML解釋器,這將有能力找到最接近的答案對我的輸入進一步它將有一些預設的命令,因爲我使用此自定義方法 – user3589042

+0

AIML標準設置了處理AIML類別的特定方式。這確保了在一個解釋器中加載的AIML文件將在另一個解釋器中產生相同的體驗。離開這將意味着你的引擎會造成不兼容。本身並不是一個問題,而是需要注意的問題。 –

回答

1

@ user3589042(相當麻煩的名字,你不覺得嗎?)

我戴夫·莫頓方案O.領先開發者,我很抱歉,我錯過了你提出的問題的時間。今天才引起我的注意。

該計劃Ø得分的可能的匹配從數據庫中抽取的方式是這樣的:

  1. 是從aiml_userdefined表的反應如何?是= 300 /否= 0
  2. 是這個機器人的類別,還是它的父類(如果它有一個)? this = 250/parent = 0
  3. 該模式是否有一個或多個下劃線(_)通配符?是= 100 /否= 0
  4. 是否當前類別有<topic>標籤?是(見下文)/無= 0

    一個。 <topic>是否包含一個或多個下劃線(_)通配符?是= 80 /否= 0

    b。 <topic>是否直接匹配當前話題?是= 50 /否= 0

    c。 <topic>是否包含星號(*)通配符?是= 10 /無= 0

  5. 是否當前類別包含<that>標籤?是(見下文)/ no = 0

    a。 <that>是否包含一個或多個下劃線(_)通配符?是= 45 /否= 0

    b。 <that>是否與當前主題直接匹配?是= 15 /否= 0

    c。 <that>是否包含明星(*)通配符?是= 2 /否= 0

  6. 是在<pattern>直接匹配到用戶的輸入?是= 10 /否= 0

  7. <pattern>是否包含一個或多個星號(*)通配符?是= 1 /否= 0

  8. <pattern>是否與配置中的默認AIML模式匹配?是= 5 /無= 0

腳本然後加起來上面列出全部通過測試,並且還增加了在每個字的點的類別的<pattern>也匹配用戶輸入的詞。評分最高的AIML類別被認爲是「最佳匹配」。在平局的情況下,腳本將根據配置設置選擇「第一」最高評分類別,「最後」評分或隨機評分。這個選定的類別然後返回到其他函數來解析XML。

我希望這能回答你的問題。