我正在寻找一个简单的算法或开源库(PHP),可以估计文本主要使用哪种语言。我发现了与Python相关的以下答案,这可能是正确方向的引导。但是,能够立即在PHP中使用的东西会更好。
当然,像n-gram估计器这样的东西并不难实现,但它也需要参考数据库。
需要解决的实际问题如下。我运行了一个WordPress博客,目前被SPAM淹没了。博客是用德语编写的,几乎所有的反向链接垃圾邮件都是用英语编写的。我的想法是立即将所有看起来是英语的反向链接垃圾邮件标记为垃圾邮件。但是,我不能使用标记词,因为我不想标记错别字或引用。
我的解决方案:
使用这个问题的答案,我实现了一个解决方案,通过简单的停用词比率检测德语。任何评论必须包含至少25%的德语停用词,如果它有一个链接。所以你仍然可以评论类似于“酷文章”的东西,它根本没有停用词,但是如果你放一个链接,你应该写正确的语言。
不幸的是,NLTK中的停用词是不正确的。该列表包含在德语中不存在的单词。所以我使用了snowball列表。使用Perl正则表达式优化器,我将整个列表压缩成一个单一的正则表达式,并使用preg_match_all()计算停用词数。整个过滤器有25行,是生成从列表中产生正则表达式的Perl代码的三分之一。让我们看看它在实际应用中的表现如何。
感谢您的帮助。
当然,像n-gram估计器这样的东西并不难实现,但它也需要参考数据库。
需要解决的实际问题如下。我运行了一个WordPress博客,目前被SPAM淹没了。博客是用德语编写的,几乎所有的反向链接垃圾邮件都是用英语编写的。我的想法是立即将所有看起来是英语的反向链接垃圾邮件标记为垃圾邮件。但是,我不能使用标记词,因为我不想标记错别字或引用。
我的解决方案:
使用这个问题的答案,我实现了一个解决方案,通过简单的停用词比率检测德语。任何评论必须包含至少25%的德语停用词,如果它有一个链接。所以你仍然可以评论类似于“酷文章”的东西,它根本没有停用词,但是如果你放一个链接,你应该写正确的语言。
不幸的是,NLTK中的停用词是不正确的。该列表包含在德语中不存在的单词。所以我使用了snowball列表。使用Perl正则表达式优化器,我将整个列表压缩成一个单一的正则表达式,并使用preg_match_all()计算停用词数。整个过滤器有25行,是生成从列表中产生正则表达式的Perl代码的三分之一。让我们看看它在实际应用中的表现如何。
感谢您的帮助。