NLP 语言模型_它们是什么_N-grams 示例

pythonserver side programmingprogramming更新于 2024/1/20 1:50:00

NLP 中的语言模型是统计生成的计算模型,可捕获单词和短语之间的关系以生成新文本。本质上,它们可以找到给定单词序列中下一个单词的概率以及整个单词序列的概率。

这些语言模型很重要,因为它们有助于各种 NLP 任务,例如机器翻译、语言生成和单词补全等。您可能没有意识到,但在计算机或手机上打字时,所做的更正和您的写作基本上是由 NLP 指导的;单词补全以及有时拼写和短语中的错误检测都基于概率语言模型。

本文将介绍语言模型的工作原理、统计和概率背景、使用的各种技术以及它们在各种情况下的应用方式。具体来说,我们将介绍最基本的类型之一的 N-gram 模型。

什么是 N-gram 语言模型?它是如何得出的?

语言模型有两种类型:统计模型和基于神经网络的语言模型。N-gram 属于统计模型,它借助马尔可夫特性为句子和句子中的单词创建概率分布。让我们深入了解这些模型是如何形成的。根据我们对条件概率的了解,我们可以用概率链式法则找到一个单词序列的概率,并根据公式找到下一个单词的概率,其中 Wi 代表句子中的第 i 个单词:

一个序列的概率如下

公式 1:P(W1, W2,....., Wn) = P(W1) x P(W2|W1) x P(W3|W1,W2) …..x P(Wn|W1,W2,....,Wn-1)

给定单词在序列中的概率

$$\mathrm{Equation\:2\::\:P(Wi\:|\:Wi-1,\:Wi-2,\:.....,\:W1)\:=\:\frac{Count(wi−1,wi−2,....,w1)}{Count(wi,wi−1,wi−2,...,w1)}}$$

然而,上述方程式中使用的这种方法的总体思路,在处理大规模语料库时,需要太多的时间和资源来计算。我们可以利用我们对概率的了解来找到近似单词和句子概率的新方法。

当处理每一个前面的单词时,我们意识到这可能是一项非常繁琐的任务,所以我们可以假设前面提到的马尔可夫特性。

这意味着我们不是关注每一个前面的单词,而是只关注一个固定的数字,而这个数字反过来意味着代表所有前面的单词。因此,我们得到以下估计值 −

公式 3:P(Wi = w1 | Wi-1 = wi-1, Wi-2 = wi-2, …. W1 = w1) ≈ P(Wi = wi | Wi-1 = wi-1)

现在,我们可以结合"公式 1"和"公式 3"来创建一个公式,我们可以通过近似值更轻松地使用该公式 −

公式 4:P(W1, W2,....., Wn) ≈ P(W1) x P(W2|W1) x P(W3|W2) …..x P(Wn|Wn-1)

请注意,在上面的公式中,我们只选择了两个单词概率?好吧,在 n-gram 模型中,这将是一个二元模型。如果我们只关注每个特定的单词,它将是一元模型,如果我们按顺序选择三个单词,我们将得到一个三元模型。这个命名约定继续被命名为 4-gram、5-gram 等等。

何时使用哪种模型

要知道何时使用哪种类型的模型,如二元模型或 5-gram 模型,将取决于数据集的大小。二元模型适合小数据集,因为它们比较大的 n-gram 更有可能出现在小数据集上,这可能会导致稀疏性。另一方面,对于较大的数据集,较大的 n-gram 模型 n 大小会起作用。

为了帮助具体理解这一点,让我们用实际的单词替换方程中上面提到的变量。下面我们有一个针对特定句子的二元模型示例(请注意,START END 用于表示下一个单词是开头,或者前一个单词是最后一个)−

P(This is a test sentence)= P(This | START)x P(is | This)x P(a | This is)x P(test | This is a)x P(sentence | This is a)x P(sentence | This is a test )x P(END | This is a test sentence)≈ P(This | START)x P(is|This)x P(a|is)x P(test|a)x P(sentence|test)x P(END |sentence)

结论

在本教程中,我们讨论了如何在不使用深度学习的情况下计算特定的语言模型,深度学习在过去的几年中越来越受欢迎几年。这应该能让你很好地了解不断变化的领域内的不同想法是如何产生的。


相关文章