0
Rasa version - 1.3.7

pipeline: “supervised_embeddings”

我已经训练了机器人,没有像这样的意图标点符号。

意图:ask_holiday_in_a_year

How many holidays do we have in a year?

如果我向机器人询问以下问题

  1. 我们一年有多少个假期?- (NLU 能够正确识别它)。
  2. 多少 ()?假期!!,做!@#we have $%^ in a %^& year. - (NLU 能够正确识别。)
  3. 我们一年有多少个######################假期?.(NLU 无法正确识别。)
  4. 我们一年有多少个####### 假期%%^&*$$%?.(NLU 无法正确识别。)

对于案例 1 和 2,它有效,但对于案例 3 和 4,它不起作用?有什么方法(在管道中添加一些设置)我可以处理这些符号和标点符号并给出预期的结果?

4

3 回答 3

0

首先,rasa 根据您给它的内容识别示例。如果您有示例,例如 3 和 4 个句子,rasa 会识别它。如果您跳出框框思考,可能会出现多个这样的问题,并且 rasa 无法识别出这是什么等等。因此,您想给出一些与 bot 可能提出的问题有些相关的示例。

于 2019-10-23T07:57:55.063 回答
0

我不确定天气这是正确的方法。但是,您可以尝试使用Chatito 之类的工具创建随机数据,同时在火车数据中包含符号。再次,我不确定这是否正确

于 2019-10-16T06:46:31.923 回答
0

这可以使用自定义 nlu 组件来处理。

在 maketrans 函数的第三个参数中,添加要删除的符号。此自定义管道将删除所有定义的关键字并将过滤后的文本发送到 nlu。

from rasa.nlu.components import Component
import typing
from typing import Any, Optional, Text, Dict

if typing.TYPE_CHECKING:
    from rasa.nlu.model import Metadata


    class DeleteSymbols(Component):

        provides = ["text"]
        #requires = []
        defaults = {}
        language_list = None

        def __init__(self, component_config=None):
            super(DeleteSymbols, self).__init__(component_config)

        def train(self, training_data, cfg, **kwargs):
            pass

        def process(self, message, **kwargs):
            mt =  message.text
            message.text = mt.translate(mt.maketrans('', '', '$%&(){}^'))

        def persist(self, file_name: Text, model_dir: Text) -> Optional[Dict[Text, Any]]:
            pass

        @classmethod
        def load(
            cls,
            meta: Dict[Text, Any],
            model_dir: Optional[Text] = None,
            model_metadata: Optional["Metadata"] = None,
            cached_component: Optional["Component"] = None,
            **kwargs: Any
        ) -> "Component":
            """Load this component from file."""

            if cached_component:
                return cached_component
            else:
                return cls(meta)

在 config.yml 中添加管道

# Configuration for Rasa NLU.
# https://rasa.com/docs/rasa/nlu/components/
language: en
pipeline:
- name: "Pipelines.TextParsing.TextParsingPipeline"
- name: "WhitespaceTokenizer"
- name: "RegexFeaturizer"
- name: "CRFEntityExtractor"
- name: "EntitySynonymMapper"
- name: "CountVectorsFeaturizer"
- name: "EmbeddingIntentClassifier"

来源 - https://forum.rasa.com/t/how-to-handle-punctuation-and-symbol-in-rasa/19454

于 2019-11-18T12:14:45.830 回答