将单词分类为“好”和“坏”

时间:2011-05-29 18:35:45

标签: python algorithm scala classification text-mining

我有一个域名列表,想确定域名是否属于色情网站。有什么更好的方法呢?色情域名列表如http://dumpz.org/56957/。此域名可用于教授系统色域应该如何显示。我还有其他列表 - http://dumpz.org/56960/ - 此列表中的许多域名也是色情内容,我想通过名称来确定它们。

6 个答案:

答案 0 :(得分:5)

你不能依赖域名,有太多的色情网域名称不错,很少有其他色情网名,但内容安全。

答案 1 :(得分:5)

使用贝叶斯过滤器,例如:SpamBayes或Divmods Reverend。您可以使用您拥有的列表进行训练,并且可以评估给定域名的可能性(如果是色情内容)。

简要概述一下this文章。

答案 2 :(得分:1)

这可能取决于你的目标是什么。我猜你最感兴趣的是最大限度地减少假阴性(如果不是,就不小心将域名称为一个好的域名)。例如,如果您希望在发布之前对论坛中的所有色情链接进行垃圾邮件审核,则可能会出现这种情况。如果某些非色情链接被标记为要审核,则可以。

在这种情况下,你可能会做一些相当简单的事情。如果你能想出一个色情词的列表,你可以将包含任何这些词的所有域标记为子串。这会抓住一些安全的领域:expertsexchange.com可能匹配“性别”或“性别变化”,但“雅虎”永远不会标志积极。易于实施,易于理解,易于调整。

使用您最喜欢的搜索引擎可以找到淫秽单词列表。您可以使用域列表来提取域中的常见长子串作为单词。

如果你想真正得到正确的答案,你需要看看这些域名是什么。 Site-About-Kitty-Porn.com可能是lolcats域名或非法色情内容。除非你做一些爬行,否则无法知道。如果您获取实际内容并与列表匹配,那么您的表现会更好一些。

您还可以针对某些第三方服务尝试每个域,例如儿童安全互联网过滤器,甚至尝试测试该域是否会出现在您最喜爱的搜索引擎中的安全搜索结果中。当然,请确保您遵循每项服务的服务条款和所有这些。

答案 3 :(得分:1)

正如有人已经指出的那样,你需要某种分类来实现你想要的目标。但是,总体准确度(精确度和召回率)取决于您拥有的训练数据集。为此,您可以使用SVM,决策树等分类器。

我建议采用半监督方法,您可以对不同的网址进行聚类,并检查每个群集中的一些代表性网址,看是否是色情内容。好处是你不需要任何培训,你可以找到可能不包括你的训练数据集的色情网址。常见的聚类技术是k-means,层次结构,dbscan等。 这仍然不会涵盖没有像URL这样的色情网站的色情网站。为此,您必须抓住页面并需要对网页内容进行类似的培训/聚类。

答案 4 :(得分:0)

你的意思是这样吗?

scala> val pornList = List("porn1.com","porn2.com","porn3.com")
pornList: List[java.lang.String] = List(porn1.com, porn2.com, porn3.com)

scala> val sites = List("porn1.com","site1.com","porn3.com","site2.com","site3.com")
sites: List[java.lang.String] = List(porn1.com, site1.com, porn3.com, site2.com, site3.com)

scala> val result = sites filterNot { pornList contains _ }
result: List[java.lang.String] = List(site1.com, site2.com, site3.com)

答案 5 :(得分:0)

classifying webpages by topic上查看此博文。从错误网站列表开始作为您的正面示例,并使用任何启发式方法来查找好的网站(基本的网络抓取工具,其中包含一些无辜的Google搜索)作为反面示例。该文章将引导您完成通过页面提取内容并触及Weka的过程,以及如何应用他们的一些基本学习者。

请注意,您可能希望向训练集中添加特定于问题域的其他数据,而不是仅使用页面内容。例如,页面上的图片数量或图片大小可能是您可能需要考虑的因素。