当用户拼错一个单词时,我想使用朴素贝叶斯进行文本分类以获得字典(数据库)的紧密单词。例如:用户输入“ sheese”,则输出将为“ cheese”。
请我如何使用它?知道我的项目在java中。
感谢您的任何建议或意见。
我的想法是:
P(correct|wrong)
。P(wrong|correct)
(记住,对于贝叶斯,我们需要它),这意味着在给出正确单词的情况下成为错误单词的可能性。例如:“奶酪”可能被拼写为“ sheese”或“ shess”,其中第一个更有可能出现并且出现在75%的时间中,而另一个仅出现在25%的时间中。因此:P(sheese|cheese) = 0.75
,P(shees|chesse) = 0.25
。P(cheese) = 0.7
,P(chess) = 0.3
。这些将是我们的P(correct)
P(correct|wrong) = P(wrong|correct) * P(correct) / P(wrong)
P(wrong)
对于所有可能的正确单词都是相同的,因此我们暂时可以忽略它。我们剩下的是:
P(correct|wrong) = P(wrong|correct) * P(correct)
(假设P(sheese|chess) =0.25
)现在给定单词"sheese"
,我们可以计算P(cheese|sheese) = 0.7*0.75 = 0.525
和P(chees|sheese) = 0.3*0.25 = 0.075
,因此将单词分类为"cheese"