Unigram 在语言识别方面比 Ngram 提供更好的结果

Posted

技术标签:

【中文标题】Unigram 在语言识别方面比 Ngram 提供更好的结果【英文标题】:Unigram Gives Better Results than Ngram for Language Identification 【发布时间】:2020-07-04 13:23:46 【问题描述】:

我有一个学校项目,其中包括从推文数据集中识别推文的每种语言。该数据集包含西班牙语、葡萄牙语、英语、巴斯克语、加利西亚语和加泰罗尼亚语的推文。任务是使用一元、二元和三元实现语言识别模型,并分析每个模型的效率。

我了解 ngrams 的概念,并且我了解这些语言有些相似(因此这不是一项微不足道的任务),但我不明白的是,我在 unigrams 上得到的结果比 bigrams 更好,而且我'bigrams 比 trigrams 得到更好的结果。

我无法理解这怎么可能,因为我预计二元组和三元组的效率会更高。

您能帮我解释一下为什么会这样吗?

感谢您的宝贵时间。

【问题讨论】:

简短回答:高阶 n-gram 存在数据稀疏问题。 (我们倾向于通过平滑来解决这个问题。)这会使它们的信息量减少,因为有很多是看不见的,这使得在没有更多数据的情况下更难学习真实的数据分布。但这并不是一个真正的调试问题。 这个解释得很清楚。谢谢!我现在试图理解为什么较小的平滑值(例如 0.01)与较大的平滑值(例如 1.00)相比,使用 n-gram 可以提供更好的结果,因为我看到它的方式是无论我们选择什么平滑值,它都应该取消,不是吗? (将其移至下面的答案。) 【参考方案1】:

简答:高阶 n-gram 存在数据稀疏问题。 (我们倾向于通过平滑来解决这个问题。)这会使它们的信息量减少,因为有很多是看不见的,如果没有更多数据,就更难学习真实的数据分布。

您注意到较小的平滑量比较高的平滑量提供更好的性能。这是因为较低的可以让您收听您的数据更多。平滑就像“先验信念”,但您获得的计数代表实际数据。如果你平滑太多,现在你(几乎)完全忽略了你的数据!任何一元组的概率都变得相同。

【讨论】:

以上是关于Unigram 在语言识别方面比 Ngram 提供更好的结果的主要内容,如果未能解决你的问题,请参考以下文章

如何从 R 中的 ngram 标记列表中有效地删除停用词

[语音识别] kaldi -- aidatatang_200zh脚本解析:语言模型训练

PackagesNotFoundError:当前频道不提供以下软件包(ngram)

基于MR实现ngram语言模型

Bigram 在 weka 中包含停用词?

n-gram语言模型