Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
lixiang1991 opened this issue Mar 20, 2019 · 8 comments
Open

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

lixiang1991 opened this issue Mar 20, 2019 · 8 comments

Comments

@lixiang1991
Copy link

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

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

@howl-anderson
Copy link
Owner

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

@lixiang1991
Copy link
Author

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

@lixiang1991
Copy link
Author

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

@howl-anderson
Copy link
Owner

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

@lixiang1991
Copy link
Author

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

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

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

@lixiang1991 lixiang1991 reopened this Mar 27, 2019
@howl-anderson
Copy link
Owner

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

@lixiang1991
Copy link
Author

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

@howl-anderson
Copy link
Owner

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants