用于rasa-nlu的数据集生成器
chatette的Python项目详细描述
< BR>聊天室< BR>< >用于rasa nlu的数据生成器
chattet是一个python脚本,它从模板文件生成python包的训练数据集。 如果你想在不太头疼的情况下为自然语言理解任务制作大量示例数据集,那么chattet就是一个适合你的项目。
具体来说,chattet实现了一种特定于域的语言(dsl),它允许您定义模板以生成大量的语句,然后这些语句以rasa nlu的输入格式保存。
使用的dsl是由rodrigo pimentel创建的优秀项目的超集。(注意:dsl实际上是chatito v2.1.x的超集,用于rasa nlu,而不是所有可能的适配器。)
还提供了一个交互模式(主要用于测试purpi
安装
要运行聊天室,您需要安装python。 chattet同时适用于python 2.7和3.x(>;=3.4)。
chattet可在pypi上找到,因此可以使用pip
安装:
pip install chatette
或者,您可以克隆github存储库并安装需求:
pip install -r requirements/common.txt
然后,您可以使用pip安装项目(作为一个可编辑的包),方法是从chattet/chattet/
目录中执行以下命令:
pip install -e .
然后,您可以使用下面克隆目录中的命令运行模块。
如何使用聊天室?
输入和输出数据
chattet使用并生成的数据从文件中加载并保存到文件中。因此我们有:
包含模板的输入文件。 不需要特定的文件扩展名。制作这些模板的dslem>的语法在wikiwiki
输出文件,一个json文件,包含可以直接馈送到rasa nlu的数据。也可以在输出中使用jsonl格式。
运行聊天室
安装后,运行以下命令:
python -m chatette <path_to_template>
其中python
是您的python解释器(有些操作系统使用python3
作为python3.x解释器的别名)。
您可以按如下方式指定输出文件的名称:
python -m chatette <path_to_template> -o <output_directory_path>
<;output_directory_path>;
相对于执行脚本的目录指定。
然后,输出文件将保存在<;output_directory_path>;/train
和<;output_directory_path>;/test
中编号为.json的文件中。如果没有为输出目录指定路径,则默认路径为
output
其他程序参数和在wiki中描述。
聊天室和聊天室?
tl;dr:主要卖点:使用"聊天室"处理大型项目更容易,您可以将"聊天室"项目转换为"聊天室"项目,而无需任何修改。
一个完全合理的问题是:
< Buff行情>当聊天室已经达到了同样的目的时,为什么会存在聊天室?
这两个项目实际上有不同的目标:
chatito的目标是一个通用但功能强大的dsl,它应该保持简单。虽然对于小项目来说这是非常好的,但当项目变得更大时,这种简单性可能会成为一种负担:模板文件变得非常大,以至于您在其中迷失了方向。
chattet定义了一个更复杂的dsl来管理更大的项目,并尽量保持与chatito的互操作性。 下面是一个非详尽的功能列表,它可以帮助管理大型项目:
- 能够将模板分解为多个文件
- 允许修改句子部分生成行为的词组语法
- 指定生成句子某些部分的概率的可能性
- 选择语法以防止只做少量更改就复制粘贴规则
- 能够定义每个时隙的值,无论生成的示例如何
- 生成前导字母大小写不同的单词的语法
- 参数支持,以便某些模板可以在不同的情况下由不同的字符串填充
- 缩进是允许的,并且只能有点连贯
- 支持同义词
由于聊天室dsl是聊天室dsl的超集,因此用于聊天室的输入文件完全可以与聊天室一起使用(而不是相反)。因此,从聊天室到聊天室很容易。
例如,这个聊天数据:
// This template defines different ways to ask for the location of toilets (Chatito version)
%[ask_toilet]('training': '3')
~[sorry?] ~[tell me] where the @[toilet#singular] is ~[please?]?
~[sorry?] ~[tell me] where the @[toilet#plural] are ~[please?]?
~[sorry]
sorry
Sorry
excuse me
Excuse me
~[tell me]
~[can you?] tell me
~[can you?] show me
~[can you]
can you
could you
would you
~[please]
please
@[toilet#singular]
toilet
loo
@[toilet#plural]
toilets
可以直接作为chattet的输入,但是这个chattet模板将产生相同的结果:
// This template defines different ways to ask for the location of toilets (Chatette version)
%[&ask_toilet](3)
~[sorry?] ~[tell me] where the {@[toilet#singular] is/@[toilet#plural] are} [please?]?
~[sorry]
sorry
excuse me
~[tell me]
~[can you?] {tell/show} me
~[can you]
{can/could/would} you
@[toilet#singular]
toilet
loo
@[toilet#plural]
toilets
可以说,chatito版本更容易阅读,但是chattet版本更短,这在处理大量模板和潜在重复时可能非常有用。
请注意,与机器学习一样,数据过多可能会导致模型因过度拟合而性能下降。虽然此脚本可用于生成成千上万个示例,但不建议用于机器学习任务。
请注意,聊天室是以聊天室命名的,因为法语中的-ette可以翻译成西班牙语中的-ita或-ito。最后一个e在chattet中没有提示(就像"note"中的情况一样)。
开发
对于开发人员,可以克隆repo并安装开发要求:
pip install-r requirements/development.txt
然后,将模块安装为可编辑:
PIP安装-e<;聊天室模块路径>;
运行Pylint:
tox-e-pylint
运行PycodeStyle:
tox-e pycodestyle
运行pytest: 毒性试验
学分
作者和维护者
免责声明:这是一个附带项目,我没有得到报酬,不要指望我24/7工作。
贡献者
非常感谢他!