安装 • 卸载 • 如何使用Chatte ? • Chatette vs Chatito ? • 开发 • 积分
Chatette是一个 Python 程序,可为给定模板文件的Rasa NLU生成训练数据集。如果您想为自然语言理解任务创建大型示例数据数据集而不会太头疼,那么Chatette就是适合您的项目。
具体来说, Chatte实现了一种领域特定语言 ( DSL ),允许您定义模板来生成大量句子,然后将这些句子保存为Rasa NLU的输入格式。
使用的DSL几乎是 Rodrigo Pimentel 创建的优秀项目Chatito的超集。 (注意:DSL 实际上是 Rasa NLU 的 Chatito v2.1.x 的超集,而不是所有可能的适配器。 )
还可以使用交互模式:
要运行Chatette ,您需要安装 Python。 Chatette适用于 Python 2.7 和 3.x (>= 3.4)。
Chatette可在 PyPI 上使用,因此可以使用pip
安装:
pip install chatette
或者,您可以克隆 GitHub 存储库并安装要求:
pip install -r requirements/common.txt
然后,您可以使用 pip 安装该项目(作为可编辑包),方法是从目录Chatette/chatette/
执行以下命令:
pip install -e .
然后,您可以在克隆的目录中使用以下命令来运行该模块。
您可以使用 pip 来卸载Chatette :
pip uninstall chatette
Chatette使用和生成的数据从文件加载并保存到文件中。您将因此拥有:
包含模板的一个或多个输入文件。不需要特定的文件扩展名。 wiki 上描述了制作这些模板的DSL语法。
一个或多个输出文件,将由Chatette生成并包含生成的示例。这些文件可以采用JSON (默认)或Markdown格式,并且可以直接输入到Rasa NLU 。也可以使用JSONL格式。
安装Chatette并创建模板文件后,运行以下命令:
python -m chatette < path_to_template >
其中python
是 Python 解释器(某些操作系统使用python3
作为 Python 3.x 解释器的别名)。
您可以指定输出文件的名称,如下所示:
python -m chatette < path_to_template > -o < output_directory_path >
是相对于执行脚本的目录指定的。然后,输出文件将保存在
和
中的编号.json
文件中。如果您没有指定输出目录的路径,则默认路径为output
。
其他程序参数 和 在 wiki 中进行了描述。
TL;DR:主要卖点:使用 Chatette 处理大型项目更容易,并且您可以将大多数Chatito项目转换为Chatette项目,无需任何修改。
一个完全合理的问题是:
既然Chatito已经实现了同样的目的,为什么还要Chatette存在呢?
这两个项目实际上有不同的目标:
Chatito 的目标是成为一个通用但功能强大的DSL ,并且应该保持非常清晰。虽然它对于小型项目来说完全没问题,但当项目变得更大时,其DSL的简单性可能会成为一种负担:您的模板文件变得非常大,以至于您在其中迷失了方向。
Chatette定义了更复杂的DSL ,以便能够管理更大的项目,并尝试尽可能与Chatito保持互操作性。以下是Chatette具有而Chatito不具有的功能的非详尽列表:
由于Chatette的 DSL 是Chatito的超集,因此用于Chatito的输入文件大多数时候完全可用于Chatette (而不是相反)。因此,如果您以前使用过Chatito,那么开始使用Chatette就很容易。
举个例子,这个Chatito数据:
// 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
可以直接作为Chatette的输入,但此Chatette模板会产生相同的结果:
// 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 [please?]?
~[sorry?] ~[tell me] where the @[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版本可以说更容易阅读,但Chatette版本更短,这在处理大量模板和潜在重复时可能非常有用。
请注意,与机器学习一样,过多的数据可能会导致模型因过度拟合而表现不佳。虽然此脚本可用于生成成千上万个示例,但不建议用于机器学习任务。
Chatette以Chatito命名:法语中的-ette可以翻译为西班牙语中的-ita或-ito 。请注意, Chatte中的最后一个e不发音(如“note”中的情况)。
对于开发人员,您可以克隆存储库并安装开发需求: pip install -r requirements/develop.txt
然后,将模块安装为可编辑: pip install -e
运行 pylint: tox -e pylint
运行 pycodestyle: tox -e pycodestyle
运行 pytest: tox -e pytest
免责声明:这是一个我没有报酬的副项目,不要指望我全天候 (24/7) 工作。
非常感谢他们!