[자연어처리] Dialogue Systems (2)

KIMHYUNSU·2025년 4월 24일
0

NLP

목록 보기
2/22
post-thumbnail

ch02 Dialogue Systems (2)


Rule based chatbot

초창기 챗봇 구현 방식 중 하나로, 미리 정의된 규칙(Rule) 사람이 set up 해놓음

  • 사용자의 입력에 따라 미리 정해둔 규칙과 일치하면 해당 규칙에 연결된 응답을 response 로 제공.
  • 장점:
    • 구현이 비교적 간단하고 특정 작업에는 효과적
  • 단점:
    • 규칙이 많아지면 관리가 어렵고, 새로운 패턴이나 복잡한 대화에 대응하기 어려워 확장성(Scalability)이 떨어짐
    • 뜬금없는 질문에 대답 불가능..

ELIZA

  • 최초의 rule based chatbot
  • 공감기반 챗봇

  • * 는 wildcard, 뭐든 올 수 있음
  • 3번째 들어오는 단어 * 를 그대로 \3 에 넣어서 출력
    • you hate me 가 들어오면
    • what makes you think i hate you 라고 generate 하는 것
      • pattern matching 이 잘 되어야 한다…

이런 식으로 구현하면 중복 rule 이 생길 수 있음
--> 같은 응답인데 여러 조건을 만족할 수 있는 문제


Ranking (룰 매칭 우선순위)

  • 일반적인 단어가 아닌 것에 매칭을 하자
  • I 가 everybody 보다 빈도수가 높음
    • 그래서 everybody 를 더욱 specific keyword 로 설정
    • high ranking 부여

input 이 아무 rule 이랑도 매칭이 되지 않으면?


No keyword matching

  • 엄청 제너럴한 response 제공
    • 잘 모르겠습니다.. 다시 말씀해주세요...
  • 랭킹에 맞는 제너럴한 response 를 제공하면서 메모리에 저장
    • 이전에 메모리에 저장된 정보나 부분적으로 매칭된 규칙을 활용하여 좀 더 관련성 있는 응답을 생성하려는 노력이 필요
    • 메모리에 저장되어 있는 답변을 output.

ELIZA 예시

  • 사용자 입력:
    • managers tend to act the same way
    • 아무것도 매칭 안됨
  • 가장 낮은 rank 인 일반적인 규칙으로 response
    • "IN WHAT WAY" 라고 응답

  • 사용자 입력:
    • They're always dismissing my ideas in meetings.
    • 입력 문장에 키워드 "always"가 포함됨
    • always를 포함하는 규칙 (. always .) -> CAN YOU THINK OF A SPECIFIC EXAMPLE 이 매칭됨
      • 이 규칙의 Rank는 1
    • 다른 규칙들도 확인해봄
      • 가장 일반적인 규칙 (.*) -> IN WHAT WAY (Rank 3)도 매치되지만, always의 우선순위가 더 높음

  • 사용자 입력:
    • well my manager made me come here
    • 규칙을 보면 my 에 해당하는 규칙 2개
  • 일단 바로 대답: (my .*) -> (YOUR \2) 같은 우선순위 높은 규칙 써서 "YOUR manager..."라고 대답함.
  • 동시에 메모리에 저장: "my" 관련 내용을 (예: "YOUR manager...") 메모리 스택에 넣어둠.
    • 메모리에 왜 저장하냐면 나중에 써먹으려고..
    • 아무 매칭이 없을 때, 메모리에 있는 대답

  • 사용자 입력:
    • Maybe he is the problem.
    • 입력 문장에는 "I", "I'm", "my", "always" 같은 미리 정의된 키워드가 없음
      • 따라서 가장 일반적인 규칙인 (.*) -> IN WHAT WAY (Rank 3) 규칙과 매치

그러나 ELIZA는 키워드가 없을 때 다른 전략을 사용

  • 입력에서 특정 키워드를 찾지 못하면 메모리 스택에 저장된 내용을 활용
  • ELIZA는 현재 입력에 대한 특별한 규칙이 없으므로, 메모리에서 이전에 저장된 문장을 출력
  • 따라서 ELIZA는 메모리에 저장되어 있던 "DOES THAT HAVE ANYTHING TO DO WITH THE FACT THAT YOUR BOYFRIEND MADE YOU COME HERE" 라고 응답

결론적으로, 이 예시는 ELIZA가 사용자의 현재 발언에서 특별한 키워드를 찾지 못했을 때, 이전에 저장해 둔 (과거 대화와 관련된) 문장을 활용하여 응답하는 '메모리' 기능을 보여줍니다. 이를 통해 마치 챗봇이 대화의 맥락을 어느 정도 기억하는 것처럼 보이게 만듭니다.

0개의 댓글