1

最近我一直在研究基于 Cavnar 和 Trenkle 的文章“基于 N-Gram 的文本分类”以及其他相关资源的文本分类和语言分类。

对于进行语言分类,我发现这种方法非常可靠和有用。用于生成 N-gram 频率分布的文档的大小并不重要,只要它们“足够长”,因为我只是使用文档中最常见的 n N-gram。

另一方面,运作良好的文本分类让我望而却步。我已经尝试了我自己对手头算法的各种变体的实现,有和没有各种调整,例如 idf 加权和其他人的实现。只要我可以为类别参考文档生成大小相似的频率配置文件,它就可以很好地工作,但是当它们开始差异太大时,整个事情就会崩溃,并且配置文件最短的类别最终会变得不成比例分配给它的文档数量。

现在,我的问题是。补偿这种影响的首选方法是什么?这显然正在发生,因为该算法假定任何给定 N-gram 的最大距离等于类别频率分布的长度,但由于某种原因,我无法解决如何修复它。我对此修复感兴趣的一个原因实际上是因为我正在尝试根据具有已知类别的文档自动生成类别配置文件,该文档的长度可能会有所不同(即使它们的长度相同,配置文件也可能最终成为不同的长度)。对此有“最佳实践”解决方案吗?

4

2 回答 2

1

据我所知,任务是计算语言模型 M 生成某些文本的概率。

最近,我正在使用语义、同步和词汇属性来测量文本的可读性。它也可以通过语言模型方法来衡量。

要正确回答,您应该考虑以下问题:

您是否使用对数似然方法?

您使用的是什么级别的 N-Gram?unigrams digrams 或更高级别?

您使用的语言语料库有多大?

仅使用 digrams 和 unigrams 我设法对一些文档进行了很好的分类。如果您的分类很弱,请考虑创建更大的语言语料库或使用较低级别的 n-gram。

另请记住,将某些文本分类为无效类别可能是错误的,具体取决于文本的长度(随机出现在另一种语言模型中的单词很少)。

只需考虑使您的语言语料库更大,并知道分析短文本有更高的错误分类概率

于 2011-05-17T11:06:30.357 回答
1

如果您仍然感兴趣,并且假设我正确理解了您的问题,那么您的问题的答案就是标准化您的 n-gram 频率。

对于每个文档,最简单的方法是计算文档中所有 n-gram 的总频率,然后将每个单独的 n-gram 频率除以该数字。结果是每个 n-gram 频率加权现在都与总文档内容的百分比相关,而与总长度无关。

在距离度量中使用这些百分比会降低文档的大小,而是专注于其内容的实际构成。

还可能值得注意的是,n-gram 表示仅占整个分类解决方案的很小一部分。您还可以考虑使用降维、不同的索引权重指标和明显不同的分类算法。

有关在文本分类中使用 n-gram 的示例,请参见此处

于 2013-04-14T16:23:56.900 回答