使用语言模型纠错,看了很多都是前n个字来预测,那第一个字咋纠错呢

语言模型训练的时候,会给所有句子加一个开始符,所以考虑开始符的话第一个词实际上是第二个词,并不存在你说的问题。
■网友
题外话,语言纠错是语言建模的一个应用场景。任何一个语言模型都可以 adapt 来做纠错,其效果好坏决定于语言模型有多强。在没有足够好的语言模型的时候,做纠错其实是空中楼阁。基于某一个语言模型做纠错的科研角度意义不大。更有意义的角度可能是把语言模型当作黑箱,研究一下这个黑箱内部的何种结构会在算法意义上更有利于纠错的实现。然后再考虑构建黑箱。
【使用语言模型纠错,看了很多都是前n个字来预测,那第一个字咋纠错呢】 === 俺之前做过通信里的纠错编码,跟这个问题很接近,所以再扯几句哈 ==
语言纠错问题的formulation 大致应该是这样的。假设你有个已经训练好的语言模型A, 用来 描述正确句子X。但是正确的句子 X 并没有被观测到;所观测到的是这个正确句子被噪声污染后的结果,Y (这里的噪声可以有各种模型,比如替词的替换,缺失,插入等)。那么纠错问题可以如下构造:给定模型A和观测到的句子 Y,infer 正确的句子 X. (当然这里的句子X 和Y 不一定需要是句子本身,可以是它们 embedding vector 的序列)。那么这样就构造出一个统计推断问题。 这个formulation 的好处是它并没有预先假设哪个词是错的(当然也没有如你题中假设的是前n个词是对的),相反它假设的是每个词都有一定几率出错。然后通过做inference 确定句子中的哪些词错了,并改正。 通信里纠错编码的解码就是这样的思想。 上述的formulation就是如法炮制,应该是最标准最自然的构造。(你问题里提到的纠错思路看起来是一个greedy 的思路,即依此判断每一个词。这种greedy 的办法一般都是比较弱的,它的致命弱点是error propagation。因为你一旦在某个词上判断错了,之后的判断就都错了。)
下面你就可以问这个问题:在这样的构造下,模型A 应该有什么性质/结构才能最有利于我实现纠错呢?这个答案会跟你决定使用的inference 算法相关。。。剩下的就自己想吧。

■网友
Bidirectional and even bidirectional+iterative.
■网友
题主你可以看看word2vec了,你的思路类似于里面的bow模型。另外就是现在序列建模,一般都是双向的,例如双向RNN。这样第一个字其实就是最后一个字。


    推荐阅读