最近看了贝叶斯定理,挺有意思的,下面是贝叶斯定理在拼写检查中的应用具体的理论部分参看阮一峰老师的文章
点击打开链接 pathyon实现只用了21行。 由于编辑距离为2的扩展实在是太大了,这里就只实现了编辑距离为1的查找
以C#实现(Ps:编辑距离可以更加完善,数据字典的效率比较低啊)
/// <summary>
/// 统计次数类
/// </summary>
public class Statistics
{
public Dictionary<string, int> di_text;
public Statistics(List<string> Li_text)
{
di_text = new Dictionary<string, int>();
foreach(string word in Li_text)
{
if(di_text.Keys.Contains(word))
{
di_text[word]++;
}
else
{
di_text.Add(word, 1);
}
}
}
}
/// <summary>
/// 编辑距离类
/// </summary>
class Edit
{
//数据字典,单词以及对应的 编辑距离为1的词
public Dictionary<string, List<string>> Di_Word_Edit = new Dictionary<string, List<string>>();
public void Edit_1(ref List<string> text)
{
Char[] char_text;
string alphat = "abcdefghijklmnopqrstuvwxyz";
char[] alphat_char=alphat.ToCharArray();
List<string> li_text_2=new List<string>();
int text_count = text.Count;
string Later_text; int Lengths=0;
for(int i=0;i<text_count;i