用于网站分类的简单机器学习



我正在尝试生成一个Python程序来确定网站是否有害(色情等(。

首先,我制作了一个Python网页抓取程序,可以计算每个单词的出现次数。

有害网站的结果

这是一个键值字典,如

{ word : [ # 有害网站中出现,# 包含这些单词的网站] }。

现在,我希望我的程序分析来自任何网站的单词,以检查该网站是否安全。但我不知道哪种方法适合我的数据。

这里的关键是你的训练数据。您需要某种监督学习技术,其中您的训练数据由网站的数据本身(文本文档(及其标签(harmfulsafe(组成。

你当然可以使用RNN,但还有其他自然语言处理技术和更快的技术。

通常,您应该在训练数据上使用适当的矢量化器(将每个站点页面视为文本文档(,例如tf-idf(还有其他可能性;如果您使用Python,我强烈建议scikit提供许多有用的机器学习技术并提到sklearn。TfidfVectorizer 已经在里面了(。关键是以增强的方式矢量化文本文档。例如,想象一下英语单词the它通常在文本中存在多少次?你需要考虑这样的偏见。

训练数据矢量化后,您可以使用随机梯度下降分类器,并查看它在测试数据上的表现(在机器学习术语中,测试数据意味着简单地采用一些新的数据示例并测试您的 ML 程序输出的内容(。

无论哪种情况,您都需要尝试上述选项。有许多细微差别,您需要测试数据并查看在哪里获得最佳结果(取决于 ML 算法设置、矢量化器类型、使用的 ML 技术本身等(。例如,当涉及到二进制分类器时,支持向量机也是不错的选择。您可能也想使用它,看看它的性能是否比 SGD 更好。

无论如何,请记住,您需要使用标签(harmfulvs.safe(,并找到最合适的分类器。在寻找最佳分类器的过程中,您可能还希望使用交叉验证来确定分类器的行为情况。同样,已经包含在scikit-learn中。

注意:不要忘记有效的案例。例如,可能有一本完全安全的在线杂志,它只在某篇文章中提到有害主题;这并不意味着网站本身是有害的。

编辑:正如我所想的,如果你根本没有ML的经验,参加任何在线课程都可能很有用,因为尽管你知道API和库,你仍然需要知道它的作用和幕后的数学(至少粗略(。

您尝试执行的操作称为情感分类,通常使用递归神经网络(RNN(或长短期记忆网络(LSTM(来完成。从机器学习开始,这不是一个容易的话题。如果您是新手,您应该首先了解线性/逻辑回归、SVM 和基本神经网络 (MLP(。否则将很难理解正在发生的事情。

也就是说:有许多库可用于构建神经网络。可能最容易使用的就是keras.虽然这个图书馆极大地简化了很多事情,但它不仅仅是一个从垃圾中制造黄金的魔盒。您需要了解引擎盖下发生的事情才能获得良好的结果。下面是如何使用keras对 IMDB 数据集执行情绪分类(基本上确定电影评论是否正面(的示例。

对于没有NLP或ML经验的人,我建议使用TFIDF矢量化器而不是使用深度学习库。简而言之,它将句子转换为向量,将词汇中的每个单词带到一个维度(度数是出现次数(。

然后,您可以计算余弦与结果向量的相似性。

要提高性能,请使用 NLTK 库中支持的词干提取/词形还原/停用词。

最新更新