챗봇에서 실제 Eliza 알고리즘 사용
그리고 2016년 Mark Zukerberg가 Facebook Messenger에 챗봇을 통합한다고 발표하면서 이러한 추세가 시작되었습니다. 그러나이 모든 것이 어떻게 시작 되었습니까?
최초의 중요한 챗봇은 Eliza였습니다. NLP(자연어 처리) 초기 작업의 일부인 프로그램입니다. 1964년에서 1966년 사이에 개발된 이 프로그램은 그 당시에는 최첨단 NLP 프로그램이었고 128kb의 램에서 실행되어야 했습니다(1966년에는 훨씬 많았습니다!). Eliza의 목적은 하나입니다. 사용자에게 질문을 하고 사용자가 계속 말하도록 하여 대화를 계속 진행하는 것입니다. Eliza는 실제로 심리 치료사의 대화를 시뮬레이션하기 위한 것이었습니다.
CSML 챗봇에 Eliza 알고리즘을 통합하는 방법을 살펴보겠습니다!
요약: 페이지 하단의 링크를 클릭하여 Eliza 통합으로 챗봇을 가져올 수 있습니다... 네, 무료입니다.
1단계: 사용 사례
우리는 잡담을 하고 싶거나 기분이 우울한 사람들과 상호 작용할 챗봇을 만들 것입니다.
이 챗봇은 다음을 수행합니다.
2단계: 동영상을 만들고 대화를 인용해 봅시다.
간단하게 하기 위해 CSML Development Studio에 이 챗봇을 만들겠습니다. 무료이고 사용하기 쉬우며 마지막에 챗봇을 공유할 수 있습니다 🤙
start:
say "Hello, I'm your Elizo"
say Typing(3000)
say "I'm here to make you feel good 🤗"
say Typing(3000)
goto menu
menu:
say Question("What would you like to do?",
buttons=[
Button("I want to meditate") as btn_med,
Button("I need some motivation!") as btn_mot,
Button("Let's talk") as btn_talk
])
hold
if (event match btn_med) {
goto meditation
} else if (event match btn_mot) {
goto motivation
} else {
say "Tell me what's on your mind ☺️"
goto talk
}
meditation:
say "Here is video to help you with your meditation, enjoy 😌"
say Video("https://www.youtube.com/watch?v=inpok4MKVLM")
say Typing(20000)
goto menu
motivation:
do quotes = HTTP("https://type.fit/api/quotes").get().send()
do shuffledQuotes = Shuffle(quotes)
say Typing(3000)
say "“{{shuffledQuotes[0].text}}”\n\n_{{shuffledQuotes[0].author}}_"
say Typing(8000)
goto menu
위의 코드에서 우리는 사용자에게 세 개의 버튼을 보여줍니다. 명상 단계는 비디오를 보여주고 동기 부여 단계는 -awesome- API에서 제공하는 동기 부여 인용문을 제공합니다. 이 두 단계 모두 마지막에 있는 메뉴로 사용자를 다시 안내합니다.
3단계: Eliza 통합
Eliza 알고리즘을 사용하려면 사용자 지정 함수 목록에 추가해야 합니다.
먼저 우리가 사용할 수 있는 알고리즘 버전을 찾아봅시다. CSML은 nodejs, python, java, go 등과 같은 광범위한 언어를 지원합니다. 저는 nodejs 사용자에 가깝기 때문에 작업을 수행하는 것으로 보이는 thisrepository를 찾았습니다.
새 nodejs 프로젝트를 열고 npm을 사용하여
elizanode
종속성을 설치하고 index.js
파일을 생성해 보겠습니다.// We import the dependency
const ElizaNode = require('elizanode');
exports.handler = async function handler(event) {
// event.query encloses the user message
if (!event.query) return { error: 'No query parameter' };
// We init Eliza
const eliza = new ElizaNode();
// We get the answer from eliza
const reply = eliza.transform(event.query);
// We check if Eliza evaluates the user message as the end of the conversation
if (eliza.quit) {
return { end: true, message: reply };
}
return { end: false, message: reply };
};
마지막으로 패키지를 압축해야 합니다.
$ zip -r9 eliza.zip index.js node_modules
이제 Studio에서 가져오겠습니다.
Functions
를 클릭한 다음 Add custom function
> Quick Mode
를 클릭합니다.eliza.zip
을 업로드합니다nodejs12.x
로 설정되어 있는지 확인하십시오.index.handler
.모두 준비되었습니다!
4단계: Eliza가 사용자와 상호작용하도록 합니다.
이제 이 챗봇에 누락된 단계인 대화 단계를 추가해 봅시다!
talk:
hold
do response = Fn("Eliza", query=event)
say Typing(5000)
say "{{response.message}}"
if (response.end == true) {
goto menu
}
goto talk
이 단계는 기본적으로 무한 루프입니다. 사용자가 대화를 끝내고 싶어한다는 것을 Eliza가 감지하지 않는 한 우리는 Eliza가 대답할 수 있도록 알고리즘을 계속 쿼리합니다. 간단한 "Bye"는 주어진 시간에 대화를 종료할 수 있으며 사용자는 그런 다음 메뉴로 돌아갑니다.
5단계: 완료!
그게 다야! 이제 Eliza를 테스트할 수 있습니다 🎉
이 챗봇에 NLP를 더 추가하거나 Eliza의 어휘를 확장하는 것과 같은 몇 가지 기능을 분명히 추가할 수 있습니다.
바로 사용할 수 있는 챗봇을 가져오려면 👉 it's over here 👈 .
Reference
이 문제에 관하여(챗봇에서 실제 Eliza 알고리즘 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bastienbot/use-the-actual-eliza-algorithm-in-your-chatbot-2k16텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)