词库
词库是一个规范的自然语言短语集合,通常定义为应用所在领域的关键词、术语。词库在一个AI中用于从用户自然语言输入中提取参数值。词库在学术领域也被称为实体(entity),是自然语言处理中的重要概念。
引用词库
用户在录入用户提问语料后,系统会自动标识词库,并高亮显示。同时系统根据词库名称会自动生成一致的参数名称。在系统自动标识词库有误时,用户也可以通过鼠标选定进行手动输入。
词库类型
一个AI内部已经定义好很多常用的词库类型,如数量词、日期和时间、姓名、地区、机构名等。开发者可以直接使用这些已定义好的系统词库。如果系统词库无法满足需求,开发者也可以定义自己的词库类型。
一、系统词库
数量词
词库名称 | 描述 | 范例 | 解析结果 |
---|---|---|---|
yige.quantity_number | 数字 | 1,2, 三百二十六 | {'amount': '326', 'unit': null} |
yige.quantity_ordinal | 有序数量词 | 第一, 第二名 | {'amount': '1', 'unit': null} |
yige.quantity_area | 带面积单位的数量词 | 十平米 | {"amount":10,"unit":"平米"} |
yige.quantity_currency | 带货币单位的数量词 | 5元,两百块 | {'amount': '5', 'unit': '元'} |
yige.quantity_length | 带长度单位的数量词 | 十米,五十公里 | {'amount': '50', 'unit': '公里'} |
yige.quantity_speed | 带速度单位的数量词 | 每分钟50米 | {'amount': '50', 'unit': '米每分钟'} |
yige.quantity_volume | 带体积单位的数量词 | 2升 | {'amount': '2', 'unit': '升'} |
yige.quantity_weight | 带重量单位的数量词 | 5千克,15吨 | {'amount': '5', 'unit': '千克'} |
yige.quantity_percentage | 百分比 | 1%,25 percent,百分之十 | {'amount': '25%', 'unit': null} |
yige.quantity_temperature | 带温度单位的数量词 | 12C,10°F,15度 | {'amount': '12', 'unit': '℃'} |
yige.quantity_duration | 表示时间段的数量词 | 5天 | {'amount': u'5', 'unit': '天'} |
yige.quantity_age | 表示年龄的数量词 | 20岁 | {'amount': '20', 'unit': '岁'} |
日期和时间
词库名称 | 描述 | 范例 | 解析结果 |
---|---|---|---|
yige.date | 绝对日期和相对日期 | 2014年12月31日、2016年7月 | '2014-12-31','2016-07' |
yige.time | 绝对时间和相对时间 | 2014-12-31 13:30:00、下午三点 | '2016-08-27 15:00:00','15:00:00' |
yige.time_freq | 时间频率 | 每三天,每周四 | {'amount': 3, 'unit': '天'},{'week': ['4'], 'amount': 1, 'unit': '周'} |
yige.time_range | 时间段 | 本周、两三点钟 | {'start': '02:00:00', 'end': '03:00:00'} |
联系方式
词库名称 | 描述 | 范例 | 解析结果 |
---|---|---|---|
yige.contact_type | 联系方式(手机/微信/QQ) | 微信号 | 微信号 |
yige.contact_id | 联系ID | 15012345678 | 15012345678 |
姓名
词库名称 | 描述 | 范例 | 解析结果 |
---|---|---|---|
yige.name | 人名 | 范冰冰 | 范冰冰 |
地区
词库名称 | 描述 | 范例 | 解析结果 |
---|---|---|---|
yige.address | 地名 | 北京市 | 北京市 |
机构名
词库名称 | 描述 | 范例 | 解析结果 |
---|---|---|---|
yige.org | 机构名 | 北京大学 | 北京大学 |
通配符
词库名称 | 描述 | 范例 | 解析结果 |
---|---|---|---|
yige.any | 匹配任意非空字符串 | 用户在定义组合词库时可使用“yige.any”,实现类似正则表达式中“.+”的功能。如“${yige.any:name}说”能匹配“刘德华说”,“奥巴马说”等。“yige.any”的匹配长度必须大于0 | 任意非空字符串 |
组合实体(组合实体的子实体必须包含别名,即{}中冒号后面的部分)
词库名称 | 描述 | 范例 | 解析结果 |
---|---|---|---|
${yige.quantity_number:num} | 鞋码 | 42码 | "parameters": [{"type": "鞋码","name": "xiema","value": [{"type": "yige.quantity_number","name": "num","value":"42","original": "42"}],"original":"42码"}] |
二、开发者词库
开发者可以根据需要定义自己的词库。开发者词库分为三种:同义词词库、枚举词库和组合词库。
注:词库名称只能包含中文、字母、数字、中划线及下划线。
同义词词库
在我们日常聊天过程中,经常是一件事情有很多种表达方式。因此我们可以为每个关键词映射一个或多个同义词来减少用户语料库的例句。
枚举词库
枚举类型的词只包含关键词,没有同义词。操作时要勾选掉定义同义词的复选框。以联系方式举例:
组合词库(组合词库的子词库必须包含别名,即{}中冒号后面的部分)
组合词库是由其他词库通过给定的模式组合而成。组合词库不能定义同义词,所以可以认为它是一种特殊的枚举词库。组合词库在使用其他词库时需要明确对应词库的类别和变量名称。例如,我们可以定义一个词库来全面描述鞋子的价格范围:
在场景中使用组合词库中的变量:
短语“我想要一双300元以下的鞋”的返回值:
"parameters": [
{
"type": "价格区间",
"name": "jiagequjian",
"value": [
{
"type": "yige.quantity_currency",
"name": "n1",
"value": "300元",
"original": "300元"
}
],
"original": "300元以下"
}
]
组合词库比同义词词库与枚举词库更加灵活,它能在一个词库类别中定义很多匹配模式。
词库的导入导出
json文件内容示例:
{
"name": "店铺", // 词库名称
"entries": [ // 词库内容
{
"value": "肯德基", // 同义词中比较权威的名称
"synonyms": [ // 同义词
"肯德基",
"kfc"
]
},
{
"value": "7-11",
"synonyms": [
"711",
"711便利店"
]
}
],
"type": 1, // 是否定义同义词 1是 0否
}
注意事项:
1、导入的格式必须按照上述格式。
2、导入的文件必须在后缀为.zip的压缩包中。
3、暂时不支持组合实体的导入。