我们如何将博客上的 post 分类为不适合未成年读者(比如 16 岁)?

How can we classify a post on a blog as being inappropriate for underage readers say 16?

更新:如何对 public 论坛(例如游戏)或博客上的任何文本进行分类,以便过滤掉发布前的贬义 comments/texts。

原文:“ 我想从推文(或与此相关的任何文本)中过滤掉成人内容。

对于垃圾邮件检测,我们有数据集可以检查特定文本是垃圾邮件还是非垃圾邮件。

对于成人内容,我找到了一个我想使用的数据集(摘录如下):

arrBad = [
'acrotomophilia',
'anal',
'anilingus',
'anus',
.
. etc.
.
'zoophilia']

问题

如何使用该数据集来过滤文本实例? “

我会将此视为文本分类问题,因为使用单词黑名单通常不能很好地 class 化全文。黑名单不起作用的主要原因是您会有很多误报(一个示例:您的列表包含 'sexy' 一词,仅此不足以将文档标记为成人文档)。为此,您需要一个训练集,其中包含标记为 "adult content" 和其他标记为 "safe for work" 的文档。所以这就是我要做的:

  1. 检查是否可以使用现有的标记数据集。你需要 每个 class 的数千个文档。
  2. 如果找不到,请创建一个。例如,您可以创建一个爬虫并下载 Reddit 内容。例如阅读 Text Classification of NSFW Reddit Posts
  3. 使用 NLTK 构建文本 classifier。如果您不知道如何操作,请阅读:Learning to Classify Text

您可能对 TextRazor 之类的内容感兴趣。通过使用他们的 API,您可以对输入文本进行分类。

例如,您可以选择删除所有您不想要的类别或关键字附带的输入文本。

我认为您更需要探索过滤算法,研究它们的用法,多模式搜索的工作原理以及您如何使用其中一些算法(它们的实现是免费在线的,因此不难找到现有的实施和定制您的需求)。可以指点一些。

  1. Check how grep family of algorithm works, especially the bitap algorithm and Wu-Manber implementation for fgrep..Depending upon how accurate you want to be, it may require adding some fuzzy logic handling (think why people use fukc instead of fuck..right?).

  2. You may find Bloom Filter interesting, since it wont have any false negatives (your data set), downside is that it may contain false positives..

这可以视为二进制文本分类问题。您应该收集包含 'adult-content' 以及不包含成人内容 ('universal') 的文档。可能会发生这样的情况,即您已包含在列表 arrBad 中的 word/phrase 可能会出现在 'universal' 文档中,例如 'girl on top' 在句子 'She wanted to be the first girl on top of Mt. Everest.' 中,您需要获取每个 word/phrase 在 'adult-content' 文档和 'universal' 文档中出现的次数的计数向量。

我建议您考虑使用像朴素贝叶斯这样的算法(在您的情况下应该可以很好地工作)。但是,如果您想捕获使用每个短语的上下文,您也可以考虑支持向量机算法(但这需要调整很多复杂的参数)。