2012-12-14 56 views
2

假设有一个文本文件中的URL列表(以百万为单位),并且在包含黑名单单词的文本文件中还有另一个列表。分析黑名单单词的URL和黑名单URL列表的算法

我愿意在URL列表上进行以下处理。

- Parse the URLs and store them in some DS 
- Process the URLs and blacklist those URLs which contain atleast one of the 
    blacklisted words. 
- If there exists a URL containing 50% or more blacklisted words, add the other 
    words of that URL in the list of blacklisted words. 
- Since now the blacklisted words list has been modified then it's probable 
    that the URLs which were not blacklisted earlier can get blacklisted now. So, 
    the algorithm should handle this case as well and mark the earlier whitelisted 
    URLs as blacklisted if they contain these newly added blacklisted words. 

我到底应该列入白名单网址,

任何建议,这可能是它可以被用来实现最有效的时间和空间复杂解决方案最好的算法和DS的名单?

+4

我强烈建议'如果存在包含50%或更多黑名单单词的网址,请将该网址的其他单词添加到列入黑名单的单词中。您很可能最终会禁止诸如“a”,“that”,“the”这样的词,并最终以空白集作为您的“列入白名单”的网址 – amit

+1

请小心使用此方法。假设你有一个网站“http://www.theblacklistedwordblog.com”。在运行这个词之后,博客和这个词也将被列入黑名单。我希望你不要限制。 – Erik

+2

如何定义URL的单词? –

回答

1

使用矩阵来存储URL。

  1. 首先,由Porter Stemmer打破每个URL进言,并把它们在矩阵(一行一个网址,一个字一个项目)。

  2. 然后用TFIDF对矩阵中的每个单词进行评分,并删除低分单词(它们将是流行词,如'a','the'等,这些词对于判断垃圾信息并不具有信息量)。

  3. 手动初始化黑名单(将一些常见的黑字放入其中)。

  4. 只要按照给定的步骤运行该过程即可。

1

我只是回答关于机器学习这个问题的一部分,并保持数据结构/有效的文本匹配的东西打开。

首先,如果非确定性是一个问题,那么在更新它之前,您可以使用给定版本的黑名单/分类器对数据进行整个传递。这样,无论输入的顺序如何,您都会得到相同的答案。另一方面,我认为决定论不应该被视为高于一切。在机器学习中,随机梯度下降不是顺序不变的,但它在实践中表现良好,特别是在大型数据集上。第二,除非你愿意手动过滤拟定的候选词(甚至可能还是),并且可能希望使用更柔和的概率方法,否则你可能希望小心谨慎地使用黑名单。天真的贝叶斯是可以合理工作的最简单的方法。这可能会让你将有关viagra的医疗文章标记为非垃圾邮件,例如,即使它包含垃圾邮件词,因为它来自非常值得信赖的主机(如webmd)。

您可以使用您选择的黑名单术语生成一组初始负面标记的网址。然后你可以想出另外一组正面的标签(甚至可以从你的语料库中随机选取,假设它大部分都是好的),并用它来训练初始的朴素贝叶斯分类器。然后,您可以通过执行semi supervised learning,根据您自己的特定语料库输出来改变您的分类器。这会给你从一小组最初的标签文件带来的好学习/雪崩效应。