rasa source - nlu classifiers源码走读
Contents
rasa source - nlu classifiers源码走读
classifiers包括如下实现:
- embedding_intent_classifier.py:构建神经网络
- keyword_intent_classifier.py:根据关键词进行分类
- mitie_intent_classifier.py:利用mitie
- sklearn_intent_classifier.py:使用sklearn中的SVC
重点介绍一下embedding_intent_classifier.py
的实现。从源代码的注释中可以发现,该实现基于:https://arxiv.org/abs/1709.03856。关于该文章的其他人的读书笔记:https://www.jianshu.com/p/35c15221c1c4。
示例准备参见:rasa source - nlu 实体提取代码走读
类EmbeddingIntentClassifier构造函数在第一次调用的时候除了第一个参数以外,其他的参数均为None。下面首先来看一下train函数调用的时候,不同函数的调用情况(PS 在后续不同函数走读的时候需要不是的返回到这里,查看走读的函数所处的位置):
|
|
首先来看下_create_label_id_dict
的实现,如下:
|
|
_create_encoded_label_ids
实现如下:
|
|
该函数返回之后,接着会调用_create_session_data
,如下:
|
|
接下来看一下构建训练网络的代码,如下:
|
|
以构建消息输入层为例,看下函数_create_tf_embed_fnn
的实现,如下:
|
|
train_utils.create_tf_fnn
实现如下:
|
|
关于训练的后一部分内容由于牵涉到对于文章https://arxiv.org/abs/1709.03856的理解不足,只能给出个大概。
sample_negative
的函数如下:
|
|
_tf_get_negs
的实现如下,注释中的代码理解可能有误,请指出:
|
|
calculate_loss_acc
函数实现如下:
|
|
知识点
Author grassofsky
LastMod 2019-12-21