regex - 在 Rasa NLU 中使用正则表达式和实体
问题描述
我正在尝试在实体提取中使用正则表达式来扩展训练集。它只识别训练示例中的单词。对于“检查体式是否有新数据”,它只识别“新”。
Your input -> check asana for new data
Are you asking for new
我在 nlu.md 中的意图和实体:
## regex:task_name
- [a-zA-Z0-9\\s]*
## intent: check_asana
- check asana for [jobs on linkedin](task_name)
- check asana for [job interviews](task_name)
- check asana for [new opportunities](task_name)
- check asana for [finding job opportunities](task_name)
- check asana for [finding jobs on linkedin](task_name)
- check asana for [handling the rasa example](task_name)
- check asana
- 从更新它
## intent: check_asana
- check asana for [jobs on linkedin](task_name)
- check asana for [job interviews](task_name)
- check asana for [new opportunities](task_name)
- check asana
## regex:task_name
- [^\\s]*
在 domain.yml 中,实体和槽:
entities:
- task_name
slots:
task_name:
type: text
# auto_fill: false
在 config.yml 我使用管道:
language: en
pipeline:
- name: WhitespaceTokenizer
- name: RegexFeaturizer
- name: LexicalSyntacticFeaturizer
- name: CountVectorsFeaturizer
- name: CountVectorsFeaturizer
analyzer: "char_wb"
min_ngram: 1
max_ngram: 4
- name: DIETClassifier
epochs: 100
- name: EntitySynonymMapper
- name: ResponseSelector
epochs: 100
解决方案
正则表达式功能适用于具有非常规则模式的实体,例如邮政编码或房间号。在这种情况下使用它们没有意义;您的实体没有明显的模式。
用于实体提取的正则表达式为实体提取器提供了一个特征,即“是的,这个正则表达式在这个句子/这个短语中匹配”。您的正则表达式基本上会匹配每一个句子,因此它对您没有任何用处。
我建议完全删除正则表达式并提供更多实体示例。
推荐阅读
- python - TensorFlow 2 中 Densenet 密集块的 TypeError
- go - 如何在 GoLang 中找到 json.Unmarshalled() 对象的长度?
- video - 什么是 mp4.lvix 文件扩展名,我可以安全地删除它吗?
- ios - iOS Charts 框架中简单的 xAxis 粒度设置
- php - 通过 move_file_upload 保存的 php 文件在直接调用时有效,而不是通过 exec()
- python - iter() 的多个标记值?
- c - “现在节省 38%” C 字符串中止程序
- unity3d - 游戏库存的设计模式?
- python - 在 PyCharm 中,如何并排打开两个文件
- javascript - 语义 UI 和样式化组件。这是使用它而不是通常的课程的坏习惯吗?