WeatherBot icon indicating copy to clipboard operation
WeatherBot copied to clipboard

“查找表”功能不能支持中文吗?

Open lixiang1991 opened this issue 5 years ago • 8 comments

通过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'词。

请问是我理解不对,还是哪一步做错了吗?

lixiang1991 avatar Mar 20 '19 02:03 lixiang1991

Hi, 你对 "intent_entity_featurizer_regex" 的工作方式理解错误,它不负责提取实体,它只是建议后续的实体提取组件这个可能是一个实体,具体是什么实体和采不采纳建议都是有后续组件训练得到的。具体对中文的支持情况,我还没测试。由于具体原理类的问题和 WeatherBot 项目并无关系,建议你加入 Rasa 中国官方社区 QQ Group ID:820037374,那里比较适合问rasa 相关的问题

howl-anderson avatar Mar 20 '19 02:03 howl-anderson

好的,谢谢指点,我再深入研究下

lixiang1991 avatar Mar 20 '19 03:03 lixiang1991

经过测试发现怎么样使用查找表都没效。 然后在rasa_nlu文档中看到了,Regex features 只支持CRFEntityExtractor。 而查找表也是在regex基础上使用的,所以它也不支持mitie。 都怪我看文档不够仔细

lixiang1991 avatar Mar 20 '19 07:03 lixiang1991

如果你动手能力强,可以自己在后续的一些 NER 或者 分类器上实现支持这个属性的,不是很难,你如果感兴趣可以试一试,顺便给官方贡献一个 feature

howl-anderson avatar Mar 20 '19 08:03 howl-anderson

我用英文数据研究了几天,想要修改mitie的实体抽取部分以实现这个功能。 我发现crf的确能根据regex特征提取出只在查找表中出现,而examples中不出现的实体。mitie不行。

原因是mitie的python调用工具里,并没有提供“为token附加其他特征”的接口。也就是说即使"regex"组件为每个token附加了regex特征,但是最终训练时的数据集里还是把regex特征丢弃了。

我不清楚是mitie本身就没有添加额外特征的功能还是python版没提供这个接口,请问你知道吗?

lixiang1991 avatar Mar 27 '19 03:03 lixiang1991

具体是 mitie 不支持额外特征还是只是 rasa 没有集成,需要你看看 mitie 的原理什么的了,我也不确定,只有看过代码理解原理才好回答

howl-anderson avatar Mar 27 '19 04:03 howl-anderson

https://github.com/mit-nlp/MITIE/blob/master/examples/python/train_ner.py#L1 这个是mitie的官方示例,里面就是只有词和词的索引作为训练数据,应该不是rasa没集成的原因。 那我再仔细研究下mitie吧

lixiang1991 avatar Mar 27 '19 05:03 lixiang1991

追根问底的解决问题的方式非常棒!加油,如果找到了最终的答案,也请在这里 update 一下,作为众人的参考。:)

howl-anderson avatar Mar 27 '19 05:03 howl-anderson