自然语言处理:用英语查找猥亵?

时间:2009-12-02 20:34:06

标签: java nlp

鉴于为词性标记了一组单词,我想找到主流英语中的猥亵词。我怎么能这样做?我应该制作一个巨大的列表,并检查列表中是否存在任何内容?我应该尝试使用正则表达式来捕获单个根上的一堆变体吗?

如果它更容易,我不想过滤掉,只是为了得到一个计数。因此,如果有一些误报,那就不是世界末日,只要有一个或多或少均匀过度夸大的利率。

11 个答案:

答案 0 :(得分:11)

一个巨大的列表并想到目标受众。是否有专门用于此的第三方服务而不是自己推销?

一些敏捷的想法:

  • Scunthorpe问题(并点击指向“Swear filter”的链接了解更多信息)
  • 英国或美国英语?范妮,fag等
  • 政治正确:“黑人”或“非裔美国人”?

编辑:

答案 1 :(得分:8)

答案 2 :(得分:2)

我会列出一个巨大的名单。

当应用于自然语言时,正则表达式会出现失火问题 - 尤其是英语有例外情况。

答案 3 :(得分:2)

请注意,任何类似这样的NLP逻辑都会受到“字符替换”的攻击:

例如,我可以将“你好”写成“he11o”,用One代替L's。与猥亵相同。因此,虽然没有完美的答案,但“坏词”的“黑名单”方法可能有效。注意误报(我会针对一本大书运行我的黑名单,看看会出现什么)

答案 4 :(得分:1)

这种过滤器的一个问题是他们倾向于标记完全正确的英语城镇名称,如斯肯索普。虽然可以通过检查整个单词而不是部分来减少这一点,然后您会发现人们通过将他们的冒犯性词语与相邻文本合并来利用它们。

答案 5 :(得分:0)

这取决于您的文本来源,但我会使用Trie作为某种已建立且经过验证的模式匹配算法。

答案 6 :(得分:0)

使用WordNet中内置的morphy lemmatizer,然后确定引理是否是淫秽。这将解决不同动词形式,复数形式等问题......

答案 7 :(得分:0)

我会提倡一大堆简单正则表达式。比变体列表小,但不试图在任何给定表达式中捕获除字母替代之外的任何内容:例如“f [u _- @#$%^& *。] ck”。

答案 8 :(得分:0)

您想使用Bayesian Analysis来解决此问题。贝叶斯概率是垃圾邮件过滤器用于检测电子邮件收件箱中的垃圾邮件/网络钓鱼邮件的强大技术。您可以训练您的分析引擎,以便它可以随着时间的推移而改进。检测合法电子邮件与垃圾邮件的能力与您遇到的问题完全相同。

以下是一些有用的链接:

A Plan For Spam - 第一个使用贝叶斯分析来打击垃圾邮件的提案。

Data Mining (ppt) - 这是我的一位同事写的。

Classifier4J - 用Java编写的文本分类器库(它们适用于所有语言,但您使用Java标记了此问题)。

答案 9 :(得分:0)

有些网络服务用英语做这件事。

我确定还有其他人,但我之前在项目中使用了WebPurify正是出于这个原因。

答案 10 :(得分:0)

在Melissa Data,当我的经理,马萨诸塞州研究与开发总监和我重构了一个针对关系数据库的数据分析器时,我们根据Levinshtein距离匹配的数量来计算亵渎,其中插入,删除和替换的数量是可调的由用户允许拼写错误,日语等同于英语,复数,以及空白和非空白标点符号。我们通过仅查看n乘n矩阵的对角线带来加快Levinshtein距离计算的运行时间。