我有一个基于输入单词列表生成字符串的算法.如何仅将听起来像英语单词的字符串分开?即.在保留LORD的同时丢弃RDLO.
编辑:澄清一下,他们不需要是字典中的实际单词.他们只需要听起来像英语.例如,KEAL将被接受.
你可以建立一个巨大的英文文本的马尔可夫链.
之后,您可以将单词输入马尔可夫链,并检查单词是英语的概率有多高.
见这里:http://en.wikipedia.org/wiki/Markov_chain
在页面底部,您可以看到markov文本生成器.你想要的恰恰相反.
简而言之:马尔可夫链为每个角色存储下一个角色将遵循的概率.如果你有足够的内存,你可以将这个想法扩展到两个或三个字符.
使用贝叶斯过滤器的简单方法(来自http://sebsauvage.net/python/snyppets/#bayesian的 Python示例)
from reverend.thomas import Bayes guesser = Bayes() guesser.train('french','La souris est rentrée dans son trou.') guesser.train('english','my tailor is rich.') guesser.train('french','Je ne sais pas si je viendrai demain.') guesser.train('english','I do not plan to update my website soon.') >>> print guesser.guess('Jumping out of cliffs it not a good idea.') [('english', 0.99990000000000001), ('french', 9.9999999999988987e-005)] >>> print guesser.guess('Demain il fera très probablement chaud.') [('french', 0.99990000000000001), ('english', 9.9999999999988987e-005)]