3

我正在阅读 Brian W. Kernighan 和 Rob Pike 的《编程实践》一书。第 3 章提供了马尔可夫链方法的算法,该方法读取源文本并使用它生成“读起来很好”的随机文本(意味着输出更接近于正确发音的英语而不是胡言乱语):

set w1 and w2 to the first two words in the source text
print w1 and w2
loop:
   randomly choose w3, one of the successors of prefix w1 and w2 in the source text
   print w3
   replace w1 and w2 by w2 and w3
   repeat loop

我的问题是:处理 w2 和 w3 的新值在源文本中没有后继的情况的标准方法是什么?

提前谢谢了!

4

3 回答 3

1

在这里你的选择:

  1. 随便选一个词?(总是有效)
  2. 随机选择一个新的W2?(可以想象仍然循环)
  3. 备份到之前的 W1 和 W2?(可以想象仍然循环)

我可能会尝试 #2 或 #3 一次,然后回退到 #1 - 这将始终有效。

于 2013-05-06T02:31:52.223 回答
1

您描述的情况考虑3-grams,即给定数据集中三元组的统计频率。要创建一个没有吸附状态的马尔可夫矩阵,即没有 af_2(w1,w2) -> w3和的点f_2(w2,w3) = 0,您必须扩展可能性。@ThomasW 的答案的一般扩展是:

  1. 如果集合预测器f_2(w1,w2) != 0从中得出
  2. 如果集合预测器f_1(w2) != 0从中得出
  3. 如果集合预测器f_0() != 0从中得出

也就是说,通常从 3-gram 集合中提取,而不是 2-gram 集合而不是 1-gram 集合。在最后一步,您将简单地根据统计频率随机加权绘制一个单词。

于 2013-05-06T02:50:48.593 回答
0

我相信这是 NLP 中的一个严重问题,没有直接的解决方案。一种方法是标记除了实际单词之外的词性,以便泛化映射。使用词性,如果没有词序列的先例,程序至少可以预测词 W2 和 W3 后面应该有什么词性。“一旦在训练示例上执行了这种映射,我们就可以在这些训练示例上训练一个标记模型。给定一个新的测试句子,我们可以从模型中恢复标记序列,并且可以直接识别由模型。” 来自哥伦比亚笔记

于 2013-05-06T02:33:15.643 回答