聊天机器人句子和故事生成器。

cross-words的Python项目详细描述


cross words是一个python模块,它允许您轻松创建带有参数化实体的文档集。

"cross words"的主要目标是提供一种简单的方式来创建用于聊天机器人培训的句子或故事。
截至2018年5月,它主要设计用于[rasa nlu/core](http://rasa.com/)

1。[安装](安装)
2.[如何使用此软件包](用法)

1。安装<;a name="install">;<;/a>;

如何使用此软件包<;a name="usage">;<;/a>;
\cross words dsl
`cross words`基于一种简单而强大的特定于域的语言。
与rasa nlu/core一起使用时,它使用3个概念:

-**意图:*聊天机器人用户的目标(例如,要求预订餐厅、确认聊天机器人查询等)
-**实体:*包含关键信息的句子的特定部分(例如,要预订哪家餐厅、多少人等)
-**别名:*列表可以互换使用的同义词的详细信息,请访问[rasa nlu](https://nlu.rasa.com/tutorial.html)

` cross words可以使用句子部分的组合生成许多训练句子/对话。

`cross words`配置文件如下:

```



@[时间过滤器]
本月
今年
有限公司
自发布以来的最新生命
各州
美国
加拿大
意大利

@[主题过滤器]
鸟类
鹦鹉
猫头鹰


波斯语



~[所有者]
所有者
拥有者
````

如果要求判刑,` cross words`将生成一个.md文件,其第一行是:

```
-我可以知道[加拿大](geo-filter)[生命至今](time-filter)中[鸟类](subject-filter)拥有者的数量吗?
-我可以知道[美国](geo-filter)[发布后](time-filter)拥有[鹦鹉](subject-filter)的数量吗?
-我可以知道[意大利](geo-filter)[最新](time-filter)中[owl](subject-filter)拥有者的数量吗?
-我可以知道[意大利](geo-filter)[发布后](time-filter)中[owl](subject-filter)拥有者的数量吗?
-我能知道[美国](geo_filter)[ltd](time_filter)的[狗](subject_filter)所有者的数量吗?
-我可以知道[加拿大](地理过滤器)[今年](时间过滤器)的[狗](主题过滤器)所有者的数量吗?
-我能知道[法国](geo_filter)[今年](time_filter)的[猫](subject_filter)拥有者的数量吗?
-我能知道[美国](geo-filter)[发布后](time-filter)的[猫](subject-filter)所有者的数量吗?
-我能知道[美国](地理过滤器)[本月](时间过滤器)的[猫](主题过滤器)所有者的数量吗?
-我能知道[加拿大](geo_filter)[至今为止的生命](time_filter)的[猫](subject_filter)所有者的数量吗?

```
然后,此文件就可以用作RASA NLU的培训输入。


-时隙{"时间过滤器":"自财政年度开始"}
-utter_ask_geo_filter
*收购{"geo_filter":"america"}
-槽{"geo_filter":"america"}
-utter_ask_subject_filter
*获取{"subject_filter":"dogs"}
-action_acquisition

"释放""地理过滤器":"德国"}
-slot{"时间过滤器":"发布以来"}
-slot{"地理过滤器":"德国"}
-utter_ask_subject_filter
*acquisition{"subject_filter":"owl"}
-slot{"subject_filter":"owl"}
-action_acquisition

877699493192194
*获取{"主题过滤器":"鹦鹉"}
-槽{"主题过滤器":"鹦鹉"}
-完全询问时间过滤器
*获取{"时间过滤器":"有限公司"}
-槽{"时间过滤器":"有限公司"}
-完全询问地理过滤器
*获取{"地理过滤器":"法国"}
-插槽{"geo_filter":"france"}
-action_acquisition
```
此文件可用于rasa core的培训。


所有其他功能都是实现细节。

generate(input_path,output_path="./xwords/outputs/",intent_string=none,output_prefix='',training_ratio=1.0,for_story=false,n_sub=none)
这是"cross words"的主要功能。


它将意图x实体x别名的所有组合输出到一个.md文件中,以备培训。


一些参数允许调整其行为:

-**输入路径:**配置文件的路径*(字符串)*
-**输出路径:**将在其中生成训练/测试文件的输出文件夹的路径writed*(string)*
-**intent_string**字符串指定句子文件开头的intent(对于rasa nlu)或generated stories内部的intent(对于rasa core)*(string)*
-**output_prefix**字符串指定要写入的文件的名称开头*(string)*
-**训练比率:***列车与试验台的比率。如果是.7,则所有生成的组合的30%将保留到测试文件中。如果为1.0,则不会创建测试文件。*(float)*
-**用于故事:**是生成句子(用于rasa nlu)还是生成故事(用于rasa core)*(bool)*
-**n-u sub:**要作为所有可能的意图x实体x别名组合的子样本的句子/故事(包括测试)*(生成故事时需要)对于rasa核心)

这是generate调用的第一个函数。

在@[地理过滤器]@[时间过滤器]中?]
```
-一个实体词,形式为
``
{实体{0':['alternative_00','alternative_01',…],
实体{1':['alternative_10','alternative_11',…],…}

例如,从上面开始:
{时间过滤器:['this month','this year',…],
"地理过滤器":["法国"、"德国"…],…}
````
-同义词的一种措辞,其形式为
````
{"别名"0:["备选""00","备选""01"…],
"别名1":["备选""10","备选""11"…],…}

例如,从上面:
{owners':['owners','posessors']}
````

生成的句子的总最大数量顺序为:

nb<;sub>;意向句子<;/sub>;次;平均值nb<;sub>;每个意向句子的实体占位符<;/sub>;次;平均值nb<;sub>;每个实体的备选方案<;/sub>;times;avg.nb<;sub>;每个意图语句的别名占位符<;/sub>;&;times;avg.nb<;sub>;每个别名的备选方案<;/sub>;

因此,创建的培训文件呈指数增长,因此,**generate**


中的available*n_sub*参数在特定情况下(rasa core),`cross words`也将使用*information availability*作为额外的组合维度。

下面的两个故事基于用户提供的不同的初始可用信息集:

````
"地理过滤器":"德国"}
-slot{"时间过滤器":"发布以来"}
-slot{"地理过滤器":"德国"}
-utter_ask_subject_filter
*acquisition{"subject_filter":"owl"}
-slot{"subject_filter":"owl"}
-action_acquisition

877699493192194
*获取{"时间过滤器":"自发布"}
-时隙{"时间过滤器":"自发布"}
-完全询问主题过滤器
*获取{"主题过滤器":"owl"}
-时隙{"主题过滤器":"owl"}
-完全询问地理过滤器
*获取{"地理过滤器":"德国"}
-插槽{"地理过滤器":"德国"}
-行动采购
`````

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

推荐PyPI第三方库


热门话题
java找不到当前线程的会话   同步Java同步方法调用非同步方法   这段代码的java时间复杂度是如何列出一个集合的所有子集的?   java Jetty SslConnectionFactory nextProtocol   为什么在java集合中使用游标而不是for循环   java如何对长函数进行单元测试?   如何从java中的文本输入创建数组   java工具栏内容未显示,尽管出现了片段内容   java MediaPlayer无法处理本地文件   java在多次读取时,从TCP服务器读取的数据将挂起   java组织。springframework。数据领域无法将PageImpl强制转换为   java如何使用@WithMockUser并从属性文件中传递用户名和密码?   JavaSpringBootGradle插件2。x如何使用自定义启动器布局工厂   sockets Java客户端和服务器之间使用字符串等进行通信的“行业标准”方法是什么   java变量引用不存在的资源:${project\u loc:project\u name}   搜索如何返回LDAP Java中所有用户的特定属性?   JDK1.8.016x的java密钥斗篷代理问题   spring如何使用Java中的Exchange获取邮件   java Kotlin+Dagger 2:Dagger*文件不会生成   如何在传入的double上执行操作,然后在Java中返回