챗봇에서 실제 Eliza 알고리즘 사용

7258 단어 csmlnlp
챗봇 트렌드는 상당히 새롭지만 오랫동안 존재해 왔습니다. 10년 전 휴대폰 서비스에 접속하려고 할 때 챗봇과 대화했던 기억이 납니다(스포일러 경고: 절대 잡지 못했습니다~~).
그리고 2016년 Mark Zukerberg가 Facebook Messenger에 챗봇을 통합한다고 발표하면서 이러한 추세가 시작되었습니다. 그러나이 모든 것이 어떻게 시작 되었습니까?

최초의 중요한 챗봇은 Eliza였습니다. NLP(자연어 처리) 초기 작업의 일부인 프로그램입니다. 1964년에서 1966년 사이에 개발된 이 프로그램은 그 당시에는 최첨단 NLP 프로그램이었고 128kb의 램에서 실행되어야 했습니다(1966년에는 훨씬 많았습니다!). Eliza의 목적은 하나입니다. 사용자에게 질문을 하고 사용자가 계속 말하도록 하여 대화를 계속 진행하는 것입니다. Eliza는 실제로 심리 치료사의 대화를 시뮬레이션하기 위한 것이었습니다.


CSML 챗봇에 Eliza 알고리즘을 통합하는 방법을 살펴보겠습니다!

요약: 페이지 하단의 링크를 클릭하여 Eliza 통합으로 챗봇을 가져올 수 있습니다... 네, 무료입니다.

1단계: 사용 사례



우리는 잡담을 하고 싶거나 기분이 우울한 사람들과 상호 작용할 챗봇을 만들 것입니다.
이 챗봇은 다음을 수행합니다.
  • 명상 비디오 제안
  • 임의의 동기 부여 인용문 제공
  • Eliza 알고리즘을 사용하여 사용자와 대화

  • 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 👈 .

    좋은 웹페이지 즐겨찾기