【问题标题】:what's the greedy or dynamic programming approach for this?什么是贪婪或动态编程方法?
【发布时间】:2015-01-07 16:25:09
【问题描述】:

假设我们使用二元组造句,这意味着每个单词出现的概率取决于前一个单词。一个句子的概率是单词概率的倍数

P(sentence) = p(t0)*multiple from i=1 to i=n p(ti|ti-1)

我们有可以用来确定P(ti|ti-1)的概率矩阵,我们想找到最可能的句子

是否有任何贪心或动态编程方法?

【问题讨论】:

  • 每个p(ti|ti-1) <= 1,所以P(sentence) <= p(t0),这意味着最可能的句子由一个概率最大的单词组成。
  • 这是不正确的,因为我们在句子的开头和结尾有一些特殊字符。为了更清楚,我们有例如 * 以 P(t0) 开头,而 & 在以 P(tn|t0) 结尾。现在如果你在这两个字符之间放一个新词,可能是 P(t0)*P(t1|t0)*P(tn|t1) 的乘积大于 P 的乘积(t0)*p(tn|t0).....所以我们必须找到最好的选择
  • 句子有多长?有多少个字符?
  • 假设你有n个单位词,你可以在一个句子中使用任意数量的词。没有限制

标签: algorithm dynamic-programming greedy


【解决方案1】:

您可以使用Viterbi algorithm。你的状态是一个词(t0, t2, t7, ...)。你的初始状态是t0 并且你有一个转换概率为a_i,j = P(tj|ti) 的矩阵,你没有“观察”,所以你不能考虑P(y|k)。对于每个长度 (t) 和每个单词 (t_k),您会发现 V_t,k 是最可能的句子,t 单词和单词 t_k 在句子末尾。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2013-05-17
    • 2012-06-08
    • 2015-01-12
    • 1970-01-01
    • 2011-10-16
    • 2019-12-23
    相关资源
    最近更新 更多