【问题标题】:What's the probability to calculate in a unigram language model?在一元语言模型中计算的概率是多少?
【发布时间】:2016-05-01 13:46:23
【问题描述】:

我为句子完成实现创建了一个一元语言模型。我有所有单词及其出现次数。

我对如何从这里比较它们感到困惑。我认为我必须计算每个案例的概率并取最大的一个。

所以如果我有 3 个单词可以使用,我比较每个单词的出现次数并取最高的 ?这是正确的实施吗?

或者我将每个单词的出现次数除以训练集的所有(不同?)单词的数量?

谢谢。

【问题讨论】:

    标签: python nlp n-gram sentence sentence-similarity


    【解决方案1】:

    如果您不想使用任何平滑处理(Turing、Kneser-Ney 等),请将每个单词(表单)的原始计数除以您的语料库(文本)的总字数。这将为您提供每个单词的概率。现在你并不总是选择概率最高的那个,因为你生成的文本看起来像:

    'the the the the the the the ...'
    

    相反,您必须根据概率选择单词(查看here 以获得解释)。

    顺便说一句,如果你想要改进它的建议,你必须发布代码。

    【讨论】:

    • 谢谢。这是我计算每个单词的概率的方法。 float(nbocurrences_mot) / float(word_count)) 之后,我选择在我的句子中使用的概率最大的单词。既然是一元模型,我不关心短语中的其他词,我只需要在我拥有的词之间选择正确的一个。
    • 我对二元组(和三元组)模型有疑问,我是否计算相同的浮点数(nbocurrences_bigram)/浮点数(nbtotal_bigrams)?或者我在某处读到它是 P(a b) = P(a)*P(b) = nb(a)/nb(word_count) * nb(b) / nb(word_count ?或者 P(wi | w(i- 1)) = c(wi-1,wi) /c(wi-1),所以在我的例子中 P(a|b) = nbocurrences_bigram_ba / nbocurrences(b)
    • 好吧,你可以猜到“正确”(糟糕的是,我可以补充一下,使用一元模型,因为你不使用任何上下文信息)。但同样,如果您选择概率最高的单词,您将始终选择相同的单词('the' 表示足够大的英语语料库)。
    • 您对二元组的第二个建议是正确的。第一个是搭配检测措施的一部分:基于一元计数的预期二元出现次数。不要将其用于语言模型!
    • 对于二元组,我看不出 P(a b) = P(a)*P(b) = nb(a)/nb(word_count) * nb(b) / nb(word_count ) 考虑到 a 后跟 b 的事实。我有 4 种情况:x a、x b、x c 和 x d,我想在 a、b、c 或 d 之间选择最有可能出现在单词 x 之后的单词。
    猜你喜欢
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 2021-08-06
    • 2021-05-31
    • 2015-02-17
    相关资源
    最近更新 更多