온라인 IDE를 사용해 보세요!
Chatito는 간단한 DSL을 사용하여 챗봇 모델을 훈련하고 검증하기 위한 데이터세트를 생성하는 데 도움을 줍니다.
상용 모델, 오픈 소스 프레임워크를 사용하여 챗봇을 구축하거나 자체 자연어 처리 모델을 작성하는 경우 교육 및 테스트 예제가 필요합니다. Chatito가 당신을 돕기 위해 여기 있습니다.
이 프로젝트에는 다음이 포함됩니다.
온라인 채팅 IDE
Chatito DSL 사양
pegjs 형식의 DSL AST 파서
TypeScript + npm 패키지로 구현된 생성기
전체 언어 사양 및 문서는 DSL 사양 문서를 참조하세요.
과적합은 Chatito를 올바르게 사용하면 예방할 수 있는 문제입니다. 이 도구의 기본 개념은 데이터 확대와 가능한 문장 조합에 대한 설명 간의 교차점을 갖는 것입니다. 단일 문장 모델에 과적합될 수 있는 결정적 데이터 세트를 생성하기 위한 것이 아닙니다. 이 경우 필요에 따라 샘플을 가져오는 생성 경로만 어느 정도 제어할 수 있습니다.
Visual Studio Code 구문 강조 플러그인 이에 대한 작업을 해주신 Yuri Golobokov에게 감사드립니다.
AI 청사진: AI 비즈니스 프로젝트를 구축하고 배포하는 방법은 7장에서 chatito를 사용하여 실용적인 전체 챗봇 예제를 구현합니다.
서로 다른 NLP 제공자 간에 챗봇 훈련 데이터를 변환하는 3단계에서는 데이터 형식을 구현되지 않은 어댑터로 변환하는 간단한 방법을 자세히 설명합니다. DialogFlow, Wit.ai 및 Watson과 같은 공급자를 통해 생성된 데이터 세트를 사용할 수 있습니다.
Aida-nlp는 텍스트 분류 및 NER를 위한 작은 실험적 NLP 딥 러닝 라이브러리입니다. Tensorflow.js, Keras 및 Chatito로 구축되었습니다. JS와 Python으로 구현되었습니다.
언어는 생성된 출력 형식과 독립적이며 각 모델이 서로 다른 매개변수 및 설정을 수신할 수 있기 때문에 이것이 현재 구현된 데이터 형식입니다. 공급자가 나열되지 않은 경우 도구 및 리소스 섹션에서 더 많은 지원 방법에 대한 자세한 정보를 확인할 수 있습니다. 형식.
참고: 더 쉬운 검토를 위해 샘플은 인텐트 간에 섞이지 않습니다. 일부 어댑터는 샘플을 파일에 직접 스트리밍하므로 더 쉬운 검토 및 유지 관리를 위해 인텐트를 다른 파일로 분할하는 것이 좋습니다.
Rasa는 자동화된 텍스트 및 음성 기반 대화를 위한 오픈 소스 기계 학습 프레임워크입니다. 메시지를 이해하고, 대화를 나누고, 메시징 채널과 API에 연결하세요. Chatito는 Rasa NLU 구성 요소에 대한 데이터 세트를 구축하는 데 도움을 줄 수 있습니다.
Rasa 어댑터의 특정 동작 중 하나는 슬롯 정의 문장에 별칭이 하나만 포함되어 있고 해당 별칭이 '동의어' 인수를 'true'로 정의하는 경우 생성된 Rasa 데이터 세트가 별칭을 동의어로 매핑한다는 것입니다. 예:
%[some intent]('training': '1') @[some slot] @[some slot] ~[some slot synonyms] ~[some slot synonyms]('synonym': 'true') synonym 1 synonym 2
이 예에서 생성된 Rasa 데이터 세트에는 some slot synonyms
에 매핑되는 synonym 1
및 synonym 2
의 entity_synonyms
포함됩니다.
Flair 최첨단 NLP를 위한 매우 간단한 프레임워크입니다. Zalando Research에서 개발했습니다. 이는 즉시 사용할 수 있는 다양한 언어에 대해 사전 훈련된 최첨단 임베딩(GPT, BERT, RoBERTa, XLNet, ELMo 등)을 제공합니다. 이 어댑터는 Flair Corpus 설명서에 설명된 대로 FastText 형식의 text classification
데이터 세트와 BIO 주석이 달린 두 열의 단어로 named entity recognition
데이터 세트를 지원합니다. 이 두 가지 데이터 형식은 매우 일반적이며 다른 많은 공급자 또는 모델에서도 사용됩니다.
NER 데이터세트에는 현재 간단한 토크나이저를 사용하여 수행되는 단어 토큰화 처리가 필요합니다.
참고: Flair 어댑터는 IDE가 아닌 NodeJS NPM CLI 패키지에만 사용할 수 있습니다.
LUIS는 Microsoft 인지 서비스의 일부입니다. Chatito는 레이블이 지정된 발화 엔드포인트 일괄 추가 및 일괄 테스트 API를 통해 LUIS NLU 모델 교육을 지원합니다.
LUIS 모델을 학습하려면 학습 또는 테스트를 위해 관련 API에 발언을 일괄적으로 게시해야 합니다.
참조 문제: #61
Snips NLU는 NLU를 위한 또 다른 훌륭한 오픈 소스 프레임워크입니다. Snips 어댑터의 특정 동작 중 하나는 슬롯에 대한 엔터티 유형을 정의할 수 있다는 것입니다. 예:
%[date search]('training':'1') for @[date] @[date]('entity': 'snips/datetime') ~[today] ~[tomorrow]
이전 예에서는 모든 @[date]
값에 snips/datetime
엔터티 태그가 지정됩니다.
사용자 정의 모델을 학습시키려는 경우 또는 사용자 정의 어댑터를 작성하는 경우 기본 형식을 사용하십시오. 이는 사용자 정의 엔터티 인수로 Slots
및 Intents
주석을 달 수 있고 생성된 출력에 모두 표시되므로 가장 유연한 형식입니다. 예를 들어 DSL에 대화 상자/응답 생성 논리를 포함할 수도 있습니다. 예:
%[some intent]('context': 'some annotation') @[some slot] ~[please?] @[some slot]('required': 'true', 'type': 'some type') ~[some alias here]
'컨텍스트', '필수' 및 '유형'과 같은 사용자 정의 엔터티를 출력에서 사용할 수 있으므로 이 사용자 정의 인수를 원하는 대로 처리할 수 있습니다.
Chatito는 Node.js >= v8.11
지원합니다.
Yarn 또는 npm을 사용하여 설치합니다.
npm i chatito --save
그런 다음 코드를 사용하여 정의 파일(예: trainClimateBot.chatito
)을 만듭니다.
npm 생성기를 실행합니다.
npx chatito trainClimateBot.chatito
생성된 데이터 세트는 정의 파일 옆에서 사용할 수 있어야 합니다.
전체 npm 생성기 옵션은 다음과 같습니다.
npx chatito <pathToFileOrDirectory> --format=<format> --formatOptions=<formatOptions> --outputPath=<outputPath> --trainingFileName=<trainingFileName> --testingFileName=<testingFileName> --defaultDistribution=<defaultDistribution> --autoAliases=<autoAliases>
<pathToFileOrDirectory>
.chatito
파일 또는 chatito 파일이 포함된 디렉터리의 경로입니다. 디렉토리인 경우 내부의 모든 *.chatito
파일을 재귀적으로 검색하고 이를 사용하여 데이터세트를 생성합니다. 예: lightsChange.chatito
또는 ./chatitoFilesFolder
<format>
선택사항입니다. default
, rasa
, luis
, flair
또는 snips
.
<formatOptions>
선택사항. 각 어댑터가 선택적으로 사용할 수 있는 .json 파일의 경로
<outputPath>
선택사항. 생성된 데이터세트를 저장할 디렉터리입니다. 현재 디렉터리를 기본값으로 사용합니다.
<trainingFileName>
선택사항. 생성된 훈련 데이터 세트 파일의 이름입니다. 끝에 .json 확장자를 추가하는 것을 잊지 마세요. <format>
_dataset_training.json을 기본 파일 이름으로 사용합니다.
<testingFileName>
선택사항. 생성된 테스트 데이터 세트 파일의 이름입니다. 끝에 .json 확장자를 추가하는 것을 잊지 마세요. <format>
_dataset_testing.json을 기본 파일 이름으로 사용합니다.
<defaultDistribution>
선택사항. 엔터티 수준에서 정의되지 않은 경우 기본 빈도 분포입니다. 기본값은 regular
이며 even
로 설정할 수 있습니다.
<autoAliases>
선택사항. 정의되지 않은 별칭을 찾을 때의 일반적인 동작입니다. 유효한 옵션은 allow
, warn
, restrict
입니다. 기본값은 '허용'입니다.
로드리고 피멘텔
sr.rodrigopv[at]gmail