用于rasa-nlu的数据集生成器

chatette的Python项目详细描述


tweet about it

chattet logo< BR>聊天室< BR>< >

用于rasa nlu的数据生成器

pypi packageGithub许可证构建状态codecovdocumentation

安装. 如何使用聊天室?聊天室vs聊天室 开发 学分

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使用并生成的数据从文件中加载并保存到文件中。因此我们有:

运行聊天室

安装后,运行以下命令:

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。最后一个echattet中没有提示(就像"note"中的情况一样)。

开发

对于开发人员,可以克隆repo并安装开发要求: pip install-r requirements/development.txt 然后,将模块安装为可编辑: PIP安装-e<;聊天室模块路径>;

运行Pylint: tox-e-pylint

运行PycodeStyle: tox-e pycodestyle

运行pytest: 毒性试验

学分

作者和维护者

免责声明:这是一个附带项目,我没有得到报酬,不要指望我24/7工作。

贡献者

非常感谢他!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java与Groovy正则表达式匹配混淆   java控制台未定义为JSNI   主目录中的java指针异常   java如何获取hashmap中的arrayList的大小   ApachePOI用于文本,Java代码中的word doc(.docx)中没有进行追加   Ruby对象到Java对象   JavaSpringJPA哈希集只返回一个值   Java在执行由配置了精确类路径参数的mavenjarpluin生成的可执行jar时无法找到依赖项   java我试图在画布上写一个文本,但什么也没发生   java HTTP 404源服务器找不到目标资源的当前表示形式,或者不愿意透露存在该表示形式。不起作用   java提取小数点后的最后一个数字   oop Java:无法访问对象的元素   PHP URL中RecyclerView中的java句柄空异常   不调用OnCreateViewHolder的java Update RecyclerView适配器项