我想从头开始实现一个用于垃圾邮件过滤的朴素贝叶斯分类器,作为学习练习。以下哪种语言最适合尝试这个项目?
- Java
- Ruby
- C++
- C
- 其他
请给出理由(这将非常有帮助!)
回答:
我会选择C#来做这个项目,但这只是因为这是我目前最熟悉的语言,而且我知道它在字符串处理方面很强大。也可以用C++的stl::string类、Ruby、Java等来实现。
如果我要构建一个朴素贝叶斯分类器,我会从一个简单的例子开始,比如Russell & Norvig的书中(我很久以前从这本书的第二版中学到的)或Mitchell的书中(我用他的是因为他教这个课程)。让你的学习器以通用的方式生成规则;也就是说,给定输入数据,生成输出规则,并使输入数据成为可泛化的事物(可以是用于垃圾邮件检测的文本块,也可以是用于预测某人是否会打网球的天气报告)。
如果你正在学习贝叶斯分类器,像这样的简单例子比一个完整的垃圾邮件过滤器更适合作为起点。语言解析本身就很困难,然后确定是否存在垃圾语言也同样困难。最好有一个简单的小数据集,你可以从中推导出你的学习器应该如何学习,并确保你的程序符合你的预期。然后,你可以扩展你的数据集,或者修改你的程序以纳入像语言解析这样的功能。