Fountain 是一种自然语言数据增强工具,可帮助开发人员创建和扩展机器学习算法的特定领域聊天机器人训练数据集。
为了构建更好的人工智能助手,我们需要更多的数据,仅仅更好的模型是不够的。
大多数 NLU 系统需要输入未来用户最有可能使用的数千个可能的查询,并对每个可以识别用户意图的句子片段进行注释。这通常是一个忙碌而乏味的手动过程。 Fountain 旨在帮助开发人员顺利完成这一过程并生成大量训练示例,以便更轻松地训练和构建强大的聊天机器人系统。
该工具旨在使为不同意图引擎(亚马逊的 Alexa、谷歌的 API.ai、Facebook 的 Wit、微软的 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、joyful)或具有不同拼写的相同名称(例如: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 文件可在此处获取。 如果您遇到问题,请告知我们或提交拉取请求。
该项目已根据 MIT 许可证获得许可。