Componente de geração de recursos RASA Featurizer

      Os geradores de recursos de texto RASA se enquadram em duas categorias distintas: geradores de recursos esparsos, como One-hot, e geradores de recursos densos, como Bert. Os geradores de recursos esparsos retornam vetores de recursos com um grande número de valores ausentes, como zeros. Mas como esses vetores de atributos geralmente ocupam muita memória, nós os armazenamos como recursos esparsos, que armazenam apenas valores diferentes de zero e suas posições no vetor, possibilitando o treinamento em conjuntos de dados maiores.

      Todos os geradores de recursos podem retornar dois tipos diferentes de recursos: recursos de sequência e recursos de frase. Recursos sequenciais são matrizes de dimensão número de tokens x dimensão do recurso. Esta matriz contém os vetores de características para cada token na sequência. Usamos esse recurso para treinar modelos de sequência, como reconhecimento de entidades. Um recurso de sentença é uma matriz de latitude (1 x dimensão do recurso), que contém o vetor de recursos do enunciado completo e pode ser usado para classificação de intenção. Os recursos de sentença podem ser usados ​​com qualquer modelo de saco de palavras. Qual método de recurso usar depende do classificador usado. Observação: a dimensão do recurso para sequências e sentenças não precisa ser a mesma.


Mitie Featurizer

      A saída do gerador de recursos é um vetor denso, que pode ser usado como um recurso para extração de entidade, classificação de intenção e classificação de resposta. O modelo de linguagem MitieNLP precisa ser introduzido no pipeline. Mas o interessante é que esse dispositivo de recurso não é usado por MitieIntentClassifier, porque MitieIntentClassifier implementa todas as funções de segmentação de palavras e extração de recursos.

      O MitieFeaturizer gera um vetor de dimensão de recurso para cada Token, portanto, o método de geração de vetores de sentença é por meio da tecnologia de agrupamento, aqui você pode escolher o agrupamento máximo e o agrupamento médio, e esse parâmetro pode ser especificado no arquivo de configuração. Eventualmente, um vetor de sentença de 1 x dimensão de recurso será gerado. O algoritmo de pooling máximo deve ter a mesma dimensão em cada token, e o maior valor é usado como o valor dessa dimensão do vetor de sentença, então o pooling médio é fácil de entender e o vetor de sentença é o valor médio de cada token .

      O MitieFeaturizer é configurado principalmente no pipline, o método de configuração é o seguinte:

pipeline:
- name: "MitieFeaturizer"
  # Specify what pooling operation should be used to calculate the vector of
  # the complete utterance. Available options: 'mean' and 'max'.
  "pooling": "mean"

SpacyFeaturizer

      A saída do gerador de recursos é um vetor denso, que pode ser usado como um recurso para extração de entidade, classificação de intenção e classificação de resposta. O modelo de linguagem SpacyNLP precisa ser introduzido no pipeline.

      O SpacyFeaturizer gera um vetor de dimensão de recurso para cada Token, portanto, o método de geração de vetores de sentença é por meio da tecnologia de pooling, aqui você pode escolher o pool máximo e o pool médio, e esse parâmetro pode ser especificado no arquivo de configuração. Eventualmente, um vetor de sentença de 1 x dimensão de recurso será gerado. O algoritmo de pooling máximo deve ter a mesma dimensão em cada token, e o maior valor é usado como o valor dessa dimensão do vetor de sentença, então o pooling médio é fácil de entender e o vetor de sentença é o valor médio de cada token .

      SpacyFeaturizer é configurado principalmente no pipline, o método de configuração é o seguinte:

pipeline:
  - name:"SpacyNLP"
     model:"en_core_web_md"
  - name: "SpacyTokenizer"
    "intent_tokenization_flag": False
    "intent_split_symbol": "+"
    "token_pattern": None
  - name: "SpacyFeaturizer"
    # Specify what pooling operation should be used to calculate the vector of
    # the complete utterance. Available options: 'mean' and 'max'.
    "pooling": "mean"

ConveRTFeaturizer

      O modelo ConveRT gera uma representação característica da frase e a saída é uma variável densa. Como o modelo ConveRT possui apenas modelos em inglês, os robôs de diálogo chineses não podem usar o ConveRTFeaturizer, a menos que você mesmo queira treinar um modelo ConveRT. Ao usar este Featurizer, você precisa usar o parâmetro model_url para configurar o caminho do arquivo de modelo, caso contrário, um erro será relatado durante o treinamento.

      ConveRTFeaturizer implementou a função de ConveRTTokenizer, então o Pipeline pode configurar qualquer Tokenizer. Olhando para o ConveRTTokenizer no código, LanguageModelTokenizer herda o WhitespaceTokenizer e não faz processamento especial.Ao usar o WhitespaceTokenizer em chinês, ele avisará que não oferece suporte a erros de chinês, portanto, não há muitos tokenizers opcionais, apenas MitieTokenizer e SpcayTokenizer.

      Nota: Para usar o ConveRTFeaturizer, instale Rasa pip3 install rasa[convert].

      A configuração é a seguinte:

pipeline:
- name: "ConveRTFeaturizer"
# Remote URL/Local directory of model files(Required)
"model_url": None

LanguageModelFeaturizer    

     Isso é para usar o modelo pré-treinado como um gerador de recursos, a entrada são mensagens do usuário, mensagens de resposta, etc., e a saída são variáveis ​​densas. Para usar o LanguageModelFeaturizer, você deve primeiro selecionar diferentes modelos de pré-treinamento de acordo com o idioma do robô: chinês ou inglês. A tabela a seguir lista os modelos pré-treinados com suporte atualmente. Porque LanguageModelFeaturizer implementou a função de segmentação de palavras, porque qualquer Tokenizer pode ser configurado no pipeline. Mas observe que se for um vetor denso, WhitespaceTokenizer e JiebaTokenizer não podem ser configurados. E LanguageModelTokenizer não suporta chinês, então apenas MitieTokenizer e SpcayTokenizer. O tokenizador configurado aqui não afeta o resultado final.

      Os modelos pré-treinados suportados pelo LanguageModelFeaturizer são:

      A configuração é a seguinte:

pipeline:
  - name: LanguageModelFeaturizer
    # Name of the language model to use
    model_name: "bert"
    # Pre-Trained weights to be loaded
    model_weights: "rasa/LaBSE"

    # An optional path to a directory from which
    # to load pre-trained model weights.
    # If the requested model is not found in the
    # directory, it will be downloaded and
    # cached in this directory for future use.
    # The default value of `cache_dir` can be
    # set using the environment variable
    # `TRANSFORMERS_CACHE`, as per the
    # Transformers library.
    cache_dir: null

RegexFeaturizer

      Use expressões regulares para criar uma representação de mensagem. Observe que a entrada pode ser apenas mensagens do usuário. Ao contrário de outros Featurizers, a saída é um vetor esparso.

      Na fase de treinamento, uma lista de expressões regulares que correspondem à frase de entrada será gerada de acordo com a configuração. Na fase de execução, cada expressão regular será correspondida uma vez para a mensagem do usuário. Se a expressão regular for correspondida, um recurso será ser criado e, em seguida, todos esses recursos formam uma lista, que é enviada para o classificador e extrator. Em seguida, o classificador e o extrator de entidade saberão que o rótulo ou entidade de classificação foi encontrado de acordo com essa indicação de recurso e, em seguida, usarão diretamente o rótulo e a entidade de classificação.

      Observe que atualmente apenas CRFEntityExtractor e DIETClassifier oferecem suporte a RegexFeaturizer.

      RegexFeaturizer é configurado no pipeline e a configuração de expressões regulares específicas é configurada nos dados de treinamento. Torne o recurso sem distinção entre maiúsculas e minúsculas adicionando a opção case_sensitive: False, padrão case_sensitive: True.

      Para lidar corretamente com o chinês e outros idiomas que não usam espaços para separar palavras, os usuários precisam adicionar a opção use_word_boundaries: False, cujo padrão é use_word_boundaries: True.

      A configuração é a seguinte:

pipeline:
- name: "RegexFeaturizer"
  # Text will be processed with case sensitive as default
  "case_sensitive": True
  # use match word boundaries for lookup table
  "use_word_boundaries": True

CountVectorsFeaturizer

      Crie um modelo de saco de palavras que representa mensagens de usuário, intenções e mensagens de resposta. A saída também é uma matriz esparsa.

      O algoritmo de geração do CountVectorizer é usar o CountVectorizer do sklearn. Para parâmetros de configuração, consulte a documentação do CountVectorizer do sklearn.

      A configuração é a seguinte:

pipeline:
- name: CountVectorsFeaturizer
  additional_vocabulary_size:
    text: 1000
    response: 1000
    action_text: 1000

LexicalSyntacticFeaturizer

      A mensagem de entrada é usada para criar recursos lexicais e gramaticais para reconhecimento subsequente da entidade. A entrada é uma mensagem de entrada do usuário e a saída é um vetor esparso.


==============  ==========================================================================================
Feature Name    Description
==============  ==========================================================================================
BOS             Checks if the token is at the beginning of the sentence.
EOS             Checks if the token is at the end of the sentence.
low             Checks if the token is lower case.
upper           Checks if the token is upper case.
title           Checks if the token starts with an uppercase character and all remaining characters are
                lowercased.
digit           Checks if the token contains just digits.
prefix5         Take the first five characters of the token.
prefix2         Take the first two characters of the token.
suffix5         Take the last five characters of the token.
suffix3         Take the last three characters of the token.
suffix2         Take the last two characters of the token.
suffix1         Take the last character of the token.
pos             Take the Part-of-Speech tag of the token (``SpacyTokenizer`` required).
pos2            Take the first two characters of the Part-of-Speech tag of the token
                (``SpacyTokenizer`` required).
==============  ==========================================================================================

      O extrator de recursos é a base para os cálculos subsequentes e, quanto mais informações houver, mais benéfico será para os cálculos subsequentes; portanto, vários métodos costumam ser usados ​​em combinação. Especialmente RegexFeaturizer é o mais comumente usado. LexicalSyntacticFeaturizer também fornece algumas informações úteis. Vale ressaltar que o classificador mencionado posteriormente terá requisitos de características, seja um vetor esparso ou um vetor denso.

      Enquanto o criador de recursos usa uma janela deslizante para mover os tokens na mensagem do usuário, o desenvolvedor pode definir recursos para o token anterior, o token atual e o próximo token na janela deslizante. Os desenvolvedores definem recursos como matrizes [antes, token, depois]. Se você deseja definir funções para token anterior, token atual e token futuro, a configuração específica será a seguinte:

pipeline:
- name: LexicalSyntacticFeaturizer
  "features": [
    ["low", "title", "upper"],
    ["BOS", "EOS", "low", "upper", "title", "digit"],
    ["low", "title", "upper"],
  ]

Fonte primária:

  1. https://blog.csdn.net/qq_35273499/article/details/128456306

  1. https://rasa.com/docs/rasa/components/#dietclassifier-2

Acho que você gosta

Origin blog.csdn.net/fzz97_/article/details/128880089
Recomendado
Clasificación