Nlp 生成语言模型在自然语言处理中是如何工作的?
好吧,生成语言模型只是一些词汇的概率分布。我想知道如何使用这个概率分布来生成一个词流,即语言 如果我总是选择概率最大的单词,它总是同一个单词,因为分布是固定的Nlp 生成语言模型在自然语言处理中是如何工作的?,nlp,nltk,probability,probability-theory,Nlp,Nltk,Probability,Probability Theory,好吧,生成语言模型只是一些词汇的概率分布。我想知道如何使用这个概率分布来生成一个词流,即语言 如果我总是选择概率最大的单词,它总是同一个单词,因为分布是固定的 我不确定我是否理解正确。有谁能提供一个具体的操作示例吗?首先,你不可能选择概率最高的词。你选择一个随机的词,但不是统一的——概率在模型中 因此,如果模型中有两个单词:“是”和“否”,并且概率分布为2/3“是”,1/3“否”,那么生成的文本可能如下所示: yes no no yes yes no yes yes yes no yes yes
我不确定我是否理解正确。有谁能提供一个具体的操作示例吗?首先,你不可能选择概率最高的词。你选择一个随机的词,但不是统一的——概率在模型中 因此,如果模型中有两个单词:“是”和“否”,并且概率分布为2/3“是”,1/3“否”,那么生成的文本可能如下所示:
yes no no yes yes no yes yes yes no yes yes yes
也就是说,文本中大约有2/3的“是”,1/3的“否”
编辑
以下是一种从分布中取样的简单方法:
0.8
。您从yes
开始,累积概率权重将为0.67
,因此您取下一个单词no
,得到大于0.8
的累积权重1.0
,因此您发出no
假设下次你有
0.5
,那么你需要发出yes
谢谢。但我知道理论上结果应该是这样的。但我的问题是如何在实践中生成它?我知道了,我已经用一个变量更新了答案,如何做到这一点。因此,按照你的例子,假设在我得到0.67的“是”之后,我得到0.5的“否”。所以它们都不超过0.8,我该怎么办?我是否应该继续迭代该模型,并不断求和概率权重,直到其超过0.8?在我发出一个单词后,我是否应该重复步骤1以获得一个介于0和1之间的新随机数?还是继续使用0.8?是的,为每个样本生成一个新的随机数。至于第一个问题:你把它倒过来了。在这种情况下,如果生成的数字低于0.67
,则会得到yes
,否则会得到no
。如果你有三个词:yes
,no
,可能
,概率相等,那么你需要选择yes
,如果生成的数字是从0
到1/3
,no
如果它是从1/3
到2/3
,如果它在2/3
之上,那么可能
。您可以将其视为将单词放在[0,1]
部分,每个单词的大小与概率成比例。FWIW,听起来您的问题是关于从单语言模型生成单词。高阶语言模型将包括一些历史概念(例如,先前的单词和/或句法上下文)。一般来说,高阶语言模型将生成更连贯的词流。