Rasa를 사용하여 채팅 로봇을 개발하는 흔한 함정 및 극복 방법

11733 단어 rasapythonnlu
작성자: Rashit Bedi for https://www.turtle-techies.com

소개


Rasa는 대화형 인공지능 장치입니다.
Rasa의 NLU는 자연어 이해를 나타냅니다.
NLP와 NLU 사이에서 곤혹스러워?
자연 언어 처리는 자연 언어 처리를 나타내고 자연 언어 이해는 자연 언어 이해의 약칭이다.
둘 다 공통된 목표를 제공했다. 즉, 구어(예를 들어 영어)와 컴퓨터 언어 간의 협력을 이해하는 것이다.
Rasa NLU는 자연 언어 처리 프레임워크로 aim 특징화, 검색 응답, 요소 추출 등에 사용된다.
그것은 특히 정서, 회화 채팅 로봇, 명명 실체 식별과 문장을 식별하는 원인(의도)을 구분하는 데 쓰인다.

객관적


본고에서 우리는 RASA 프레임워크를 이용하여 로봇을 개발할 때 흔히 볼 수 있는 문제를 토론할 것이다.
우리는 또한 RASA가 제공하는 기능과 모든bot 개발 프레임워크에 적용되는 다른 기교를 통해 이러한 문제점을 극복하는 방법을 토론할 것이다.

FAQ


NLU 데이터 생성


NLU(자연어 이해)는 의도 식별, 실체 추출, 응답 검색을 수행하는 Rasa 프레임워크와 함께 묶여 있다.
NLU는 Mike에 500달러 이체 등의 사용자 조회를 받고 다음과 같은 구조화된 데이터를 반환합니다.
{
  "intent": "fund_transfer",
  "entities": {
    "amount": "500",
    "beneficiary": "Mike"
  }
}

우리가 ML/AI로 해결하기로 선택한 모든 문제의 주요 고통 요소는 데이터이며 비선형 계획 문제도 예외가 아니다.
NLU 모델을 구축하는 것은 어렵지만 생산급 모델을 구축하는 것은 더욱 어렵다.
다음은 채팅 로봇을 충분히 활용하기 위해 RASA NLU 훈련 데이터를 설계하는 데 도움이 되는 유용한 힌트입니다.

NLU의 대화 구동 개발


대화구동개발(CDD)은 실제 세계의 사용자들이 대화를 통해 로봇 구축 과정을 지도하도록 하는 것을 의미한다.
이 과정은 당신의 로봇이 흔히 볼 수 있는 속어, 동의어, 줄임말 등 대화를 이해하는 데 도움을 줄 것입니다. 이런 대화는 로봇 개발자에게 기억하기 어렵고 교육 데이터에 포함됩니다.

실제 데이터 캡처


RASA NLU 훈련 데이터 계산에 관해서는 대량의 데이터가 있어야 효과적으로 훈련을 진행할 수 있기 때문에bot 구축자는 텍스트 생성 도구와 프로그램에 의존하여 모델을 준비하는 데 사용되는 정확한 훈련 예시를 신속하게 구축한다.
이 도구들은 대량의 훈련 데이터를 구축하기에 매우 적합하다.
비록 이런 방법은 효과적일 수 있지만, NLU 모델은 진정한 고객이 진술할 수 없는 정보를 과도하게 의합하는 경향이 있다.
모든 데이터가 집중된 방차는 양호한 훈련을 거친 비선형 기획 모델의 관건이다.
이러한 문제를 피하기 위해 현명한 생각은 얼마나 많은 진실한 고객의 상호작용이나 대화를 지속적으로 수집하여 교육 데이터로 삼는 것이다.
비록 당신의 로봇이 처음에는 실수를 할 수 있지만, 고객의 상호작용을 준비하고 평가하는 방식은 당신의 모델을 실제 상황에서 더욱 성공적으로 정리할 수 있게 할 것입니다.

Did you know?

Chatette is a Python program that generates training datasets for Rasa NLU given template files. If you want to make
large datasets of example data for Natural Language Understanding tasks without too much of a headache, Chatette is a project for you.

Specifically, Chatette implements a Domain Specific Language (DSL) that allows you to define templates to generate a large number of sentences, which are then saved in the input format(s) of Rasa NLU.


가능한 한 빨리 친밀한 그룹 사용자와 공유하다


실제 교육 데이터를 축적하기 위해서는 실제 고객 정보가 필요합니다.
로봇 디자이너는 일련의 유한한 예만 지어내면 사용자의 진술이 당신을 깜짝 놀라게 할 것이다.
이것은 로봇이 이런 상황에서advancement 그룹 이외의 사용자를 가능한 한 앞당겨 테스트하도록 해야 한다는 것을 의미한다.
자세한 내용은 전체 고객 실사 안내서를 참조하십시오.

의도 불일치 방지


의도는 훈련 예시에서 생성된 문자와 단어급 특징을 이용하여 표징하는 것이다. 이것은 NLU 파이프에 어떤 특징화기를 추가했는지에 달려 있다.
여러 가지 의도가 이 선을 따라 요청한 유사한 단어를 포함할 때, 이것은 의도 분류기를 혼란스럽게 할 수 있다.

지능적 활용 실체


의도가 일치하지 않거나 헷갈리는 경우가 많습니다. 조수의 응답이 사용자가 제공한 정보를 조건으로 하기를 원할 때 사용자 조회는 높은 신뢰도로 여러 의도와 일치합니다.
예를 들어 "어떻게 나의 차용증을 막을 수 있습니까?"신용카드를 막고 싶어요.
이러한 사용자 메시지의 하나하나가bot에서 오는 서로 다른 응답을 초래하기 때문에, 최초의 방법은 모든 카드 형식에 대해 별도의 RASA 의도를 만드는 것입니다.
e, g.credit_card_blockdebit_card_block.
그러나 이러한 의도는 같은 목표를 실현하려고 시도하고 (카드를 막고) 표현이 유사할 가능성이 높기 때문에 모델이 이러한 의도를 혼동할 수 있다.
의도가 일치하지 않는 것을 피하기 위해 이 훈련 예시를 단일 블록 의도로 그룹화하고 응답은 실체의 분류 card_type 슬롯의 값에 달려 있다.
이것 또한 실체를 제공하지 않은 상황에서 쉽게 처리할 수 있다. 예를 들어 "어떻게 내 카드를 막습니까?"예:


stories:
- story: block my debit card
  steps:
    - intent: block_card
      entities:
      - card_type
    - slot_was_set:
      - card_type: debit
    - action: utter_debit_card_block

- story: block my credit card
  steps:
    - intent: block_card
      entities:
      - card_type
    - slot_was_set:
      - card_type: credit
    - action: utter_credit_card_block

- story: block my card
  steps:
    - intent: block_card
    - action: utter_ask_card_type

엔티티 추출


명칭, 주소와 도시 등 흔히 볼 수 있는 실체는 대량의 훈련 데이터가 있어야만 비선형 기획 모델을 효과적으로 범화할 수 있다.
RASA는 실체 추출에 많은 옵션을 제공하여 언제 어떤 방법을 사용할지 이해하기 어렵다.
우리들은 그 중의 몇 가지를 깊이 있게 이해합시다.

RASA 프레임워크는 예비 훈련의 추출 모델에 두 가지 좋은 선택을 제공했다. 첫 번째는 DucklingEntityExtractorSpacyEntityExtractor이다.
이러한 추출 모델은 이미 매우 큰 데이터 자료 라이브러리에서 사전 훈련을 진행했기 때문에 훈련 데이터에서 주석을 달지 않고 지원하는 실체를 추출할 수 있습니다.
이러한 사전 훈련된 추출 외에도 RASA는 실체 추출 도구를 제공한다.

우선, 정규 표현식!

RegEx 또는 정규 표현식은 검색 모드를 형성하는 문자 서열이다.
RASA는 모든 엔티티에 대해 정규 표현식을 설정하는 규정을 제공합니다.
정규 표현식은 구조화 모델(예를 들어 11명의 은행 계좌)에서 실체 추출을 집행하는 데 매우 유용하다.
정규 표현식 모델은 NLU 모델이 학습할 특징을 생성하거나 직접 실체로 일치하는 방법에 사용할 수 있다.
설정하려면 다음 예제를 따르십시오.
데이터는 nlu에서 이렇게 보인다.md 파일

## intent:inform
- [AB-123](customer_id)
- [BB-321](customer_id))
- [12345](transaction_id)
- [23232](transaction_id)
## regex:customer_id
- \b[A-Z]{2}-\d{3}\b
## regex:account_number
- \b\d{11}\b

및 구성 파일

language: "en"
pipeline:
- name: "SpacyNLP"
- name: "SpacyTokenizer"
- name: "SpacyFeaturizer"
- name: "RegexFeaturizer"
- name: "CRFEntityExtractor"
- name: "EntitySynonymMapper"
- name: "SklearnIntent

둘째, 표를 찾아보세요!


검색 테이블을 정보 데이터베이스로 볼 수 있으며, 모든 실체에 대해 일치하도록 설정할 수 있습니다.
찾기표는 정규 표현식 모드로 처리되며, 이 모드는 훈련 예시에 찾기표 항목이 있는지 확인합니다.
정규 표현식과 유사하게 찾기표는 모델에 특징을 제공하여 실체 식별을 개선하거나 일치하는 실체 식별을 실행하는 데 사용할 수 있다.
검색표를 사용할 수 있는 예는 애플 아이폰 모델, 주문 메뉴 옵션이나 아이스크림 맛이다.

마지막으로, 동의어!


RASA NLU 트레이닝 데이터에 동의어나 유사어를 추가하면 일부 사용자 검색어를 단독 표준화 실체에 비추는 데 도움이 된다.
그러나 동의어는 모델의 실체 식별을 높이기 위한 것이 아니라 NLU 성능에도 아무런 영향을 미치지 않는다.
동의어의 좋은 용례는 서로 다른 그룹에 속하는 실체를 규범화하는 것이다.
예를 들어 가상 조수가 사용자에게 그들이 흥미를 느끼는 대출 유형을 물어보면'주택 대출','주택 대출이 필요합니다'또는'주택'이라고 대답할 수 있다집, 집, 주택을 표준화 가치 주택에 비추는 것은 좋은 생각이다. 이렇게 처리 논리는 아주 작은 가능성만 고려해야 한다.

Take care of Misspellings!!

Running over incorrect spellings is inescapable, so your bot needs a successful method to deal with this.

Remember that the objective isn't to address incorrect spellings, however, to accurately distinguish intents and entities.

Consequently, while a spellchecker may appear to be an apt arrangement, changing your featurizers and training data regularly are adequate to represent incorrect spellings.

Adding a character-level featurizer gives a viable protection against spelling mistakes by representing portions of words, rather than just entire words.

You can add character level featurization to your pipeline by utilizing the char_wb analyzer for the CountVectorsFeaturizer

Notwithstanding character-level featurization, you can add basic incorrect spellings to your training data.


결론


상기 몇 가지를 제외하고 일반적으로 RASA의 기능이 풍부한 프레임워크에 어떤 단점이 있다면 이러한 기능이 어떻게 협동하여 일을 하는지에 관한 가파른 학습 곡선일 것이다.
다른 채팅 로봇 개발자들이 지적한 바와 같이 라사가 반드시 초보자에게 적합한 것은 아니다.
다른 chabot 개발 프레임워크를 사용하기 전에 채팅 로봇을 구축하지 않으면, 라사의 프레임워크가 처음에는 좀 무섭게 느껴질 수도 있습니다.
그렇긴 하지만 초보자들에게는 이 신기한 프레임워크를 사용할 수 있는 좋은 튜토리얼과 재료가 있다.
가장 중요한 것은 놀라운 지역 사회의 지지를 가지고 있다는 것이다.
다원화된 제조업체와 입담이 좋은 인공지능 애호가여기서 서로 다른 배경과 위치의 사람들은 서로 구조를 이해하고 더 좋은 인공지능 조수를 만드는 데 도움을 준다.

좋은 웹페이지 즐겨찾기