Rasa NLU:置信度得分计算

时间:2018-09-13 08:17:35

标签: python tensorflow metrics rasa-nlu

我试图了解rasa nlu(ver-0.12.3)输出的置信度得分实际是什么以及如何计算它们。

我一直在使用tensorflow嵌入进行意图分类任务。训练好模型并解析新数据/测试数据后,我将收到一个置信度得分以及每个可能的意图。但是我几乎不知道这个置信度分数实际上代表什么。

如文档中所述,它不代表概率。经过对结果的观察后,这似乎是一种多类型的评估,即对于单个文本输入,我可以获得具有高置信度得分的多个意图。

快速浏览code之后,我认为它是在“ embedding_intent_classifier.py”文件的“ _tf_sim”函数(以下相关代码段)中计算的

有人可以在此确认/澄清其工作原理或置信度得分的确切含义吗?

    def _tf_sim(self, a, b):
    """Define similarity"""

    if self.similarity_type == 'cosine':
        a = tf.nn.l2_normalize(a, -1)
        b = tf.nn.l2_normalize(b, -1)

    if self.similarity_type == 'cosine' or self.similarity_type == 'inner':
        sim = tf.reduce_sum(tf.expand_dims(a, 1) * b, -1)

        # similarity between intent embeddings
        sim_emb = tf.reduce_sum(b[:, 0:1, :] * b[:, 1:, :], -1)

        return sim, sim_emb
    else:
        raise ValueError("Wrong similarity type {}, "
                         "should be 'cosine' or 'inner'"
                         "".format(self.similarity_type))

1 个答案:

答案 0 :(得分:2)

意图分类器intent_classifier_tensorflow_embeddingdocs)是基于Facebook StarSpace paper的一种方法。

在这种方法中,意图示例及其标签都嵌入在同一多维空间中。因此,将意图特征向量和该句子的标签分别乘以权重矩阵,然后将权重矩阵映射到n维空间。在训练过程中,会调整这两个权重矩阵,以使映射的意图向量与其标签的映射向量相似,并且与其他标签尽可能不同。因此,使用cosine similarity测量相似度。如果向量指向同一方向(对于其他角度1),则相似度为< 1