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*
이 챗봇의 aiml 태그는 표준 aiml 태그와 다릅니다. 필요에 따라 태그를 일부 맞춤화했습니다. AIML.MD 파일 이 챗봇이 지원하는 더 많은 태그를 찾아보세요.
10.api.php의 반환 데이터에 대해{
"status": "success",
"type": "talk",
"message": "haha ...",
"data": {
"arr1": {
"name11": "value11",
"name12": "value12"
},
"arr2": {
"name21": "value21",
"name22": "value22"
}
}
}
<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>
. api.php가 GET 모드로 요청을 보낼 때 userId 매개변수가 전달됩니다. 이 매개변수는 사용자의 고유 식별자로 사용됩니다. 이 매개변수를 제공하지 않으면 프로그램은 사용자의 IP를 고유 식별자로 사용합니다.
$userId = isset($_REQUEST['userId']) ? $_REQUEST['userId'] : $_SERVER['REMOTE_ADDR'];
'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"); }
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>
log는 로그를 저장하는 테이블입니다.
property는 사용자 및 봇과 관련된 속성을 저장하는 테이블입니다. 속성. set, get, del, user, bot과 같은 태그는 이 테이블을 작동하는 데 사용됩니다.
data 테이블은 사용자 입력, 로봇 응답, 입력, that, topic을 저장하는 데 사용되며 기타 태그는 Parser::$_data를 작동합니다. 프로그램이 실행을 시작할 때마다 프로그램은 이 테이블의 데이터를 이 배열로 로드한 다음 프로그램이 끝나면 이 테이블에 저장합니다. 테이블의 유일한 식별자는 userId입니다.
소스코드https://github.com/kompasim/chatbot
위 내용은 AIML 기반 PHP 챗봇의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!