通过rasa_nlu的官方文档,我知道查找表是为了优化实体识别功能,同时又不增加过多训练样本。
但是实际使用我发现没有效果,请问你知道怎么用吗?
我在nlu.json中增加
"lookup_tables": [
{
"name": "date-time",
"elements": [
"周子","明天","后天","海天","每天"
]
}]
nlu_model_config.yaml中增加pipeline
- name: "intent_entity_featurizer_regex"
训练时会在models文件夹中生成regex_featurizer.json文件。
看了rasa_nlu的源码中featurizers/regex_featurizer.py文件,
regex_string = '(?i)(\\b' + '\\b|\\b'.join(elements_sanitized) + '\\b)'
这里加了\b导致无法匹配中文(因为送到这里的文本没有分词)
然后我去掉了这里的\b,确实就能够被查找表的正则匹配了。
我理解的查找表应该是把自定义词“周子”当作和“明天”一样的'date-time'实体。
但是实际上输入“周子”时,它还是被识别成了'address'词。
请问是我理解不对,还是哪一步做错了吗?
通过rasa_nlu的官方文档,我知道查找表是为了优化实体识别功能,同时又不增加过多训练样本。
但是实际使用我发现没有效果,请问你知道怎么用吗?
我在nlu.json中增加
nlu_model_config.yaml中增加pipeline
- name: "intent_entity_featurizer_regex"训练时会在models文件夹中生成regex_featurizer.json文件。
看了rasa_nlu的源码中featurizers/regex_featurizer.py文件,
regex_string = '(?i)(\\b' + '\\b|\\b'.join(elements_sanitized) + '\\b)'这里加了\b导致无法匹配中文(因为送到这里的文本没有分词)
然后我去掉了这里的\b,确实就能够被查找表的正则匹配了。
我理解的查找表应该是把自定义词“周子”当作和“明天”一样的'date-time'实体。
但是实际上输入“周子”时,它还是被识别成了'address'词。
请问是我理解不对,还是哪一步做错了吗?