首页 > 解决方案 > 如何计算文本分类中的困惑度?

问题描述

我正在使用 scikit learn、naive bayes 和 countvectorizer 进行方言文本分类。到目前为止,我只做 3 种方言文本分类。我将添加一种新的方言(或者实际上,这些方言的正式语言)。问题是,我要添加的新文本与其他 3 种方言有很多相同的词。所以我在一份研究文件中阅读了以下内容:

我们从收集的数据中为每种方言训练一个 n-gram 模型。为了训练 MSA 模型,我们从阿拉伯联合国语料库和新闻集中选择句子。所有方言和 MSA 模型共享相同的词汇表,因此可以正确比较困惑度。在分类时,给定一个输入句子,分类器计算每种方言类型的困惑度,并选择困惑度最小的一个作为标签。

他们的意思是 MSA(现代标准阿拉伯语),这是这些方言的正式语言。他们如何计算困惑度?他们只是使用朴素贝叶斯还是更多?

标签: nlptext-classificationnaivebayescountvectorizerperplexity

解决方案


从我在这里看到的情况来看,引用的工作根本没有使用朴素贝叶斯分类器。该方法与您的建议不同。

所提出的方法是为每种要分类的方言训练基于 n-gram 的语言模型。为了分类给定输入的方言,输入文本使用每种语言模型进行评分。LM 的困惑度越低,概率越高。因此,如果在方言 A 上训练的 LM 为输入分配比方言 B 更低的困惑度(即更高的概率),则输入文本更有可能是方言 A。

困惑度是某些文本按单词数(来源)归一化的逆概率。

对于一个句子 W,
Perplexity(W) = P(W)^(-1/N),其中N是句子中的单词数,P(W)是 W 根据 LM 的概率。

因此,根据每种语言模型计算输入的概率,进而计算困惑度,并将这些进行比较以选择最可能的方言。


推荐阅读