NLU训练需要很长时间

时间:2021-03-22 02:12:16

标签: rasa

我在 nlu 文件中有大约 1000 个示例和 25 个意图。其中包含实体的示例数量为 710(大多数示例只有 1 个实体)。我在没有 GPU 的情况下完成一个训练集大约需要 30-40 分钟(并且在使用 Tesla T4 的 GG Colab 中进行测试时需要 6 分钟)。这需要相当长的时间。是因为我的数据太多还是我选择管道的方式。

这是我的管道:

language: vi

pipeline:
  - name: "WhitespaceTokenizer"
  - name: "RegexFeaturizer"
  - name: "CRFEntityExtractor"
  - name: "LexicalSyntacticFeaturizer"
  - name: "CountVectorsFeaturizer"
  - name: "CountVectorsFeaturizer" 
    analyzer: "char_wb" 
    min_ngram: 1 
    max_ngram: 4
  - name: DIETClassifier
    epochs: 100
  - name: "EntitySynonymMapper"

policies:
  - name: TEDPolicy
    max_history: 5
    epochs: 100
    state_featurizer:
      - name: FullDialogueTrackerFeaturizer
    attn_shift_range: 2
    embed_dim: 20
    constrain_similarities: True
  - name: FallbackPolicy
    core_threshold: 0.5
    nlu_threshold: 0.4
  - name: FormPolicy
  - name: MappingPolicy

Rasa 版本:2.3.2 有谁知道问题出在哪里?请帮忙!

1 个答案:

答案 0 :(得分:0)

我脑子里有一些想法。

  • 我们运行了 100 个 epoch。没关系。但也许我们不需要 100 个 epoch?有时你可以在 50 以内收敛。这个建议有点“黑客”,因为我们冒着一个次优模型的风险。但它可能值得一提。
  • 您正在使用 CRFEntityExtractor。 DIET 已经在此处检测实体,因此您可能不需要它。如果您从管道中移除该模型,您的性能应该会得到提升。
  • 我了解到您使用的是越南语。我想知道该语言是否存在某种影响。我可能会想象,由于字母表不同(据我所知,更多重音符号),与任何英文演示相比,CountVectorsFeaturizer 会产生更多的功能。
  • 考虑到这一点,您可以尝试减少正在生成的 ngram。特别是如果数据集包含长词,我们可能会为 DIET 生成很多我们可以调低的特征。或许将 char_wb 设置设置在 (2, 3) 之间就足够了。

这里有很多值得研究的事情。为了详细地做到这一点,最好在 Rasa 论坛上发布这个问题。这样一来,您和有想法的人之间就可以来回交流。你可以找到它here。特别是当您提出问题时,您会想要 ping @koaning。他正在研究非英语工具,或许还能为您提供进一步帮助。