Fountain은 개발자가 기계 학습 알고리즘을 위한 도메인별 챗봇 교육 데이터 세트를 생성하고 확장하는 데 도움이 되는 자연어 데이터 증대 도구입니다.
더 나은 AI 보조자를 구축하려면 더 많은 데이터가 필요하지만 더 나은 모델만으로는 충분하지 않습니다.
대부분의 NLU 시스템은 미래의 사용자가 사용할 수천 개의 가능한 쿼리를 입력하고 사용자의 의도를 식별할 수 있는 모든 문장 세그먼트에 주석을 달도록 요구합니다. 이는 일반적으로 바쁘고 지루한 수동 프로세스입니다. Fountain은 개발자가 이 프로세스를 원활하게 진행하고 강력한 챗봇 시스템을 더 쉽게 훈련하고 구축할 수 있도록 많은 양의 훈련 예제를 생성하도록 돕는 것을 목표로 합니다.
이 도구는 다양한 의도 엔진(Amazon의 Alexa, Google의 API.ai, Facebook의 Wit, Microsoft의 Luis)에 대해 동일한 데이터 세트를 쉽게 구축할 수 있도록 하기 위한 것입니다. 현재 이 도구는 RasaNLU 형식과 호환되는 교육 데이터 세트를 생성합니다.
다음을 통해 패키지를 설치할 수 있습니다.
$ pip install git+git://github.com/tzano/fountain.git
종속성을 설치합니다.
$ pip install -r requirements.txt
Fountain은 구조화된 YAML
템플릿을 사용하므로 개발자는 문법 정의가 포함된 template
통해 의도의 범위를 결정할 수 있습니다. 모든 의도에는 작업을 트리거하는 sample utterances
하나 이상 포함되어야 합니다. 쿼리에는 사용자의 의도를 식별하는 속성이 포함됩니다. 이러한 주요 정보를 slots
이라고 합니다. 데이터 세트를 생성할 수 있도록 다양한 샘플을 포함합니다.
우리는 세 가지 작업을 사용합니다:
{slot_name:slot_type}
): 슬롯 패턴을 선언하는 데 사용됩니다.( first_word | second_word )
): 키워드 집합을 제공하는 데 사용됩니다. 이러한 단어는 동의어(예: happy, pleasure)이거나 철자가 다른 동일한 이름(예: colors|colours)일 수 있습니다.인텐트의 간단한 예는 다음과 같습니다.
book_cab:
- utterance: Book a (cab|taxi) to {location:place}
slots:
location:place:
- airport
- city center
그러면 to_json
사용하여 다음 인텐트 json file
생성됩니다.
[
{
"entities": [
{
"end": 21,
"entity": "location",
"start": 14,
"value": "airport"
}
],
"intent": "book_cab",
"text": "book a cab to airport"
},
{
"entities": [
{
"end": 25,
"entity": "location",
"start": 14,
"value": "city center"
}
],
"intent": "book_cab",
"text": "book a cab to city center"
},
{
"entities": [
{
"end": 22,
"entity": "location",
"start": 15,
"value": "airport"
}
],
"intent": "book_cab",
"text": "book a taxi to airport"
},
{
"entities": [
{
"end": 26,
"entity": "location",
"start": 15,
"value": "city center"
}
],
"intent": "book_cab",
"text": "book a taxi to city center"
}
]
동일한 파일은 to_csv
사용하여 다음 csv file
생성합니다.
intent utterance
book_cab book a cab to airport
book_cab book a cab to city center
book_cab book a taxi to airport
book_cab book a taxi to city center
라이브러리는 슬롯의 데이터가 인식되는 방식을 단순화하고 표준화하기 위해 사전 정의된 여러 슬롯 유형(엔티티)을 지원합니다.
이러한 엔터티는 다양한 오픈 소스 데이터 소스에서 수집되었습니다.
날짜 및 시간
FOUNTAIN:DATE
FOUNTAIN:WEEKDAYS
FOUNTAIN:MONTH_DAYS
FOUNTAIN:MONTHS
FOUNTAIN:HOLIDAYS
FOUNTAIN:TIME
FOUNTAIN:NUMBER
위치
FOUNTAIN:COUNTRY
FOUNTAIN:CITY
사람들
FOUNTAIN:FAMOUSPEOPLE
Fountain's
내장 데이터 유형을 구축하기 위해 다음 데이터 소스의 데이터를 처리했습니다.
DSL 템플릿을 쉽게 로드 및 구문 분석하고 생성된 데이터 세트(Rasa 형식)를 내보낼 수 있습니다.
이 샘플은 labs
디렉터리에서 찾을 수 있습니다.
# DataGenerator
data_generator = DataGenerator()
# load template
template_fname = '<file>.yaml'
# parse the DSL template
results = data_generator.parse(template_fname)
# export to csv file
data_generator.to_csv('results.csv')
# export to csv file
data_generator.to_json('results.json')
pytest
labs
폴더에서 라이브러리 사용 방법에 대한 예제를 확인할 수 있습니다. data/<language>/*files*.csv
아래에 더 많은 파일을 추가하여 기본 제공 데이터세트를 강화할 수 있습니다. resources/builtin.py
에 삽입하는 파일의 색인을 생성하세요.
챗봇 및 자연어 이해에 대한 자세한 내용을 보려면 다음 링크 중 하나를 방문하세요.
Fountain
사용하여 20,000개 이상의 샘플을 생성했습니다. Yaml 파일은 여기에서 사용할 수 있습니다. 문제가 있는 경우 저희에게 알려주시거나 풀 요청(Pull Request)을 제출해 주세요.
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다.