더하기를 곱하기로 만드는 힘 (엔티티)

[원노의 코딩 레시피] S1-E7

2020.12.13 | 조회 1.32K |
0
|
원노의 코딩 레시피의 프로필 이미지

원노의 코딩 레시피

누구나 시작하는 개발, 코딩 레시피

안녕하세요! 코딩 레시피의 원노입니다!

뭔가 엄청나게 오랜만인 기분이네요😅😅 기분 탓이겠죠??
(다음부터는 안 빠질게요ㅠㅠㅠ)

저번 시간에 머신러닝 기능으로 챗봇을 업그레이드 하는 기능을 해봤습니다.

이렇게 20개 이상의 "사용자 발화"를 입력하면

첨부 이미지

이렇게 "머신러닝" 기능을 사용할 수 있었고.

첨부 이미지

그러면 미리 입력하지 않은 발화도 챗봇이 "알아서 잘" 이해해서 출력해줬습니다.

짜잔
짜잔

관련 내용을 자세히 보려면 링크를 클릭해주세요.

그런데 제가 마지막에 다양한 블록이 있다면 머신러닝의 정확도가 떨어진다고 이야기 했었죠?

이걸 보완할 수 있는 "핵심 키워드"가 존재합니다.🤩

한 번 같이 해볼게요!


1. 개념 설명
2. 엔티티 사용하기

시즌 1 episode 7

1. 개념 설명

제가 챗봇 시스템에서 가장 중요한 건 "사용자 발화"라고 이야기했었던 것 기억 나시나요?

첨부 이미지

그래서 우리는 "머신러닝"기능을 통해서 챗봇이 인식할 수 있는 사용자 발화의 갯수를 늘려줬습니다.

그렇다면 "머신러닝" 기능이 얼마나 사용자 발화를 늘려줬는지 간략히 수식으로 확인해볼게요.

1. "사용자 발화" 입력만 하기 👉 입력한 갯수만큼만 추가 👉  N

2. "사용자 발화" & 머신러닝 👉 입력한 갯수 + 머신러닝 인식의 경우(계산 불가) 👉 (N + a) 개

여기서 머신러닝으로 늘어난 발화의 갯수는 비슷한 사용자 발화를 사용하는 블록이 늘어나면 점점 더 갯수가 줄어듭니다.

그런데 머신러닝은 문장 구조, 형태를 분석하는 방식으로는 동작됩니다.
그래서 단순히 "사용자 발화"만 입력한다면 인식율은 점차 떨어지게 됩니다. 

이를 해결하기 위해 챗봇들은 단순히 발화 뿐만 아니라, 문장에 "키워드"를 추가할 수 있게 하고 이를 기준으로 "키워드" & 문장 구조 로 발화를 인식하게 했습니다.

"키워드"를 카카오 i open builder 에서는 엔티티라고 부릅니다.

그러면 "엔티티"를 사용하면 얼마나 발화의 갯수를 늘려주는지 비교해볼까요?

3. "사용자 발화" & 엔티티 👉 엔티티 갯수 * 문장 구조 갯수 👉  N2(엔티티 갯수) * N

4. "사용자 발화" & 엔티티 & 머신러닝 👉 엔티티 갯수 * (문장 구조 갯수 + 머신러닝 인식의 경우의 수)  👉 N2 * (N + a) 개

압도적으로 4번이 제일 많은 발화의 갯수를 가지겠죠?

그래서 좋은 챗봇의 기획에서 "엔티티" 설계는 큰 비중을 가집니다.

좀 더 관심 있으신 분들은 링크 참고해주세요!

2. 엔티티 사용하기

직접 한 번 해보겠습니다.

일단 "kakao i open builder"부터 접속하셔야겠죠??

아직 베타테스터 권한이 없으면 코딩 레시피 2화 챗봇 준비편 
"2. kakao open i builder 베타테스터 신청" 부분을 확인해주세요! 

2.1. 엔티티 추가하기

메뉴 화면에서 상단 오른쪽에서 "엔티티" 버튼을 선택해주세요.

첨부 이미지

그러면 이런 화면이 나옵니다.

여기서 우리 챗봇의 엔티티, 핵심 키워드를 추가해줄 수 있습니다. 

아직 감이 안 오실 수도 있으니 저를 따라서 해볼게요.

기존에 우리가 만들었던 챗봇에서 자기소개 기능이 있었는데
이번에는 제가 애정하는 "무민"의 자기소개 블록을 새로 만들어볼게요. 

"무민" 자기소개 블록을 더 잘 인식시키기 위해서 무민이라는 엔티티를 만들어보겠습니다.

나의 엔티티 관리 옆에 + 버튼을 선택하고

첨부 이미지

그리고 아래 이미지와 같이 따라해주세요.

첨부 이미지

이는 사용자가 파란색 박스 안에 있는 내용들을 입력하면 moomin(빨간색 박스)이라는 엔티티로 인식할 수 있게 만든 겁니다! 

2.2. 엔티티를 사용하는 블록 만들기

이제 무민 자기 소개 블록을 만들어볼게요.

첨부 이미지

저는 이러한 방식으로 만들어봤어요.

2.3. 엔티티 추가해서 발화 만들기

이제 사용자 발화를 추가할 건데 아까 만든 "엔티티"를 포함해서 발화문을 만들거에요.
(⚠ 아까 엔티티 추가했을 때 파란색 박스에 있던 부분을 포함하라는 이야기입니다!)

첨부 이미지

그러면 아래와 같이 파란색 밑줄이 쳐진 상태로 만들어져요.

그 부분을 드래그하면 아래와 같이 나옵니다. 

첨부 이미지

여기서 빨간 부분을 선택하면 "엔티티"가 추가된 발화문이 완성이 됩니다.

이렇게 나오면 성공이에요.
이렇게 나오면 성공이에요.

한 번 저장하고 확인해볼까요

첨부 이미지

그러면 원래 입력했던 "무민 자기소개하기"도 잘 인식되고

첨부 이미지

이렇게 엔티티 부분을 동의어로 입력했던 내용으로 바꿔서 입력해도 잘 인식이 됩니다.

짜잔! 이 부분이었죠!
짜잔! 이 부분이었죠!

그래서 "엔티티", 키워드만 명확하게 잘 입력하고, 문장 구조 부분은 "머신러닝" 기능을 통해서 경우의 수를 늘린다면 더 정확하게 말을 이해하는 챗봇을 만들 수 있겠죠?


이렇게 더하기를 곱하기로 만드는 "엔티티" 기능을 간단히 살펴봤습니다.

다음 시간에는 이 "엔티티"를 활용하는 다양한 방법에 대해서 알려드릴게요!

그러면 지금까지 따라해주셔서 감사하구요!

화이팅!! 다음 주에 봐요!! 🙋‍♀ 🙋‍♂

궁금하신 사항은 메일리 댓글로 달아주세요!

다가올 뉴스레터가 궁금하신가요?

지금 구독해서 새로운 레터를 받아보세요

✉️

이번 뉴스레터 어떠셨나요?

원노의 코딩 레시피 님에게 ☕️ 커피와 ✉️ 쪽지를 보내보세요!

댓글

의견을 남겨주세요

확인
의견이 있으신가요? 제일 먼저 댓글을 달아보세요 !
© 2024 원노의 코딩 레시피

누구나 시작하는 개발, 코딩 레시피

메일리 로고

자주 묻는 질문 서비스 소개서 오류 및 기능 관련 제보

서비스 이용 문의admin@team.maily.so

메일리 사업자 정보

메일리 (대표자: 이한결) | 사업자번호: 717-47-00705 | 서울 서초구 강남대로53길 8, 8층 11-7호

이용약관 | 개인정보처리방침 | 정기결제 이용약관 | 라이선스