>백엔드 개발 >PHP 튜토리얼 >AIML 기반 PHP 챗봇

AIML 기반 PHP 챗봇

藏色散人
藏色散人앞으로
2020-01-11 15:28:453297검색

chatbot: AIML을 기반으로 한 PHP 챗봇

PHP로 구현한 작은 챗봇 프로그램을 소개합니다. 학습에 활용할 수 있는 PHP 운영 DOM 및 mysql 데이터베이스 관련 지식을 활용합니다. 코드는 https://github.com/kompasim/chatbot에서 다운로드할 수 있습니다.

0.Reminder

이 챗봇은 AIML 2.5와 Program-P를 참고하여 작성되었습니다. 이 챗봇에서 구현한 aiml 태그와 표준 aiml 태그 사이에는 일정한 간격이 있으므로, 아래에서 다운로드한 aiml corpus를 참조하세요. 인터넷이 제대로 작동하지 않을 수 있습니다. 단어 접미사가 시제에 따라 변경되는 UTF-8 인코딩 언어에 적합합니다. 관심 있는 친구들은 스스로 조사하고 공부할 수 있습니다.

1. 소개

PHP로 작성된 aiml 파서로, 현재 PHP5.4 환경에서 정상적으로 동작할 수 있습니다.

2. 데이터베이스 구성

이 프로그램은 MySQL 데이터베이스를 사용합니다. chatbot.sql 파일을 데이터베이스에 입력한 다음 chatbot/Config.php 파일에서 관련 데이터베이스 구성 변수를 수정해야 합니다.

4 . aiml 코퍼스 리소스

aiml/chatbot.aiml 파일을 직접 편집하거나 새로운 aiml 파일을 생성하고 aiml/chatbot.aiml 파일에 포함 태그를 사용하여 도입할 수 있습니다.

5. aiml 파일과 관련하여

aiml은 aiml 디렉토리에 있어야 합니다.

chatbot.aiml은 해당 항목 파일에 여러 카테고리 태그, 기본 태그 및 포함 태그가 포함될 수 있습니다.

사용자가 추가한 다른 aiml 파일은 루트 aiml 태그에 주제 태그를 포함해야 합니다. 이 주제 태그는 여러 카테고리 태그와 기본 태그를 포함할 수 있습니다(여기의 다른 aiml 파일은 포함 태그를 쓸 수 없으며 포함 태그는 chatbot.aiml 파일).

6. 챗봇 테스트

index.php를 열어 테스트용 로봇과 채팅할 수 있습니다.

7. 챗봇 호출

자신의 애플리케이션에서 챗봇을 호출하려면 api.php?requestType=talk&input=Hello

8과 같이 API를 호출할 수 있습니다. 수정 후속 매칭 규칙:

* ---> (\S+)
# ---> \S+
_ ---> .*
= ---> \S*

9. AIML 태그 정보

이 챗봇의 aiml 태그는 표준 aiml 태그와 다릅니다. 필요에 따라 태그를 일부 맞춤화했습니다. AIML.MD 파일 이 챗봇이 지원하는 더 많은 태그를 찾아보세요.

10.api.php의 반환 데이터에 대해

{
    "status": "success",
    "type": "talk",
    "message": "haha ...",
    "data": {
        "arr1": {
            "name11": "value11",
            "name12": "value12"
        },
        "arr2": {
            "name21": "value21",
            "name22": "value22"
        }
    }
}
api.php?requestType=talk&userInput=haha에 접속하면 위의 json 데이터를 얻을 수 있습니다.

<category>
    <pattern>haha</pattern>
    <template>
        <data name="arr1">
            <attr name="name11">value11</attr>
            <attr name="name12">value12</attr>
        </data>
        <data name="arr2">
            <attr name="name21">value21</attr>
            <attr name="name22">value22</attr>
        </data>
        haha ...
    </template>
</category>

11 userId에 대해

. api.php가 GET 모드로 요청을 보낼 때 userId 매개변수가 전달됩니다. 이 매개변수는 사용자의 고유 식별자로 사용됩니다. 이 매개변수를 제공하지 않으면 프로그램은 사용자의 IP를 고유 식별자로 사용합니다.

$userId = isset($_REQUEST[&#39;userId&#39;]) ? $_REQUEST[&#39;userId&#39;] : $_SERVER[&#39;REMOTE_ADDR&#39;];

12. 다중 챗봇에 대하여

'chatbot/Config.php' 파일에서 multiChatbot을 false로 설정하면 모든 사용자가 기본 챗봇을 공유하게 됩니다. true로 설정하면 각 사용자는 독립적인 챗봇을 갖게 됩니다. 각 사용자는 자신의 챗봇에 대해 이름, 성별, 나이 등과 같은 속성을 설정합니다. 다중 챗봇 기능은 사용자가 자신의 음성 도우미에 대한 이름을 설정할 수 있기 때문에 음성 도우미 등을 작성할 때 특히 유용합니다.

$user = $this->getUser($this->_unique);
if ($this->_config->multiChatbot){
    $bot = $this->getBot($this->_unique);
} else {
    $bot = $this->getBot("default");
}

13 userInfo 및 botInfo 정보

userInfo 및 botInfo는 이름, 나이, 성별 등과 같은 사용자 및 챗봇의 일부 속성을 나타냅니다. 물론 사용자는 aiml 코퍼스를 작성할 때 일부 태그를 통해 이러한 속성을 변경할 수 있습니다. AIML.MD에서 set, get, del, user, bot 및 기타 관련 태그를 배울 수 있습니다.

<category>
    <pattern>my name is *</pattern>
    <template>
        ok , your name is
        <star/>
        <set type="user" name="name">
            <star/>
        </set>
    </template>
</category>
<category>
    <pattern>what is my name</pattern>
    <template>
        oh , your name is
        <get type="user" name="name"/>
        , i remembered it last time ...
    </template>
</category>

14. 데이터베이스 정보

log는 로그를 저장하는 테이블입니다.

property는 사용자 및 봇과 관련된 속성을 저장하는 테이블입니다. 속성. set, get, del, user, bot과 같은 태그는 이 테이블을 작동하는 데 사용됩니다.

data 테이블은 사용자 입력, 로봇 응답, 입력, that, topic을 저장하는 데 사용되며 기타 태그는 Parser::$_data를 작동합니다. 프로그램이 실행을 시작할 때마다 프로그램은 이 테이블의 데이터를 이 배열로 로드한 다음 프로그램이 끝나면 이 테이블에 저장합니다. 테이블의 유일한 식별자는 userId입니다.

소스코드

https://github.com/kompasim/chatbot

위 내용은 AIML 기반 PHP 챗봇의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제