2012-09-09 205 views
0

我正在开发一个从纯文本中提取关键字的系统。WordNet 3.0诅咒词

为关键字的要求是:

  1. 在1 - 45个字母
  2. 字必须在共发现存在于数据库中
  3. 不能是“共同”二字
  4. 切不可一个诅咒字

我已经达到了要求1 - 3,但是我找不到找到区分curs单词;我如何过滤它们?

我知道这不会是一个筛选出所有诅咒词的权威方法,但是会发生什么事情呢是所有关键词在被主持人“批准”之前首先被设置为“未决”状态。但是,如果我可以让WordNet过滤掉大部分的诅咒话,它会让主持人的工作更轻松。

+2

从根本上说,你只需要找到的“俗”字来筛选对列表。 –

回答

3

很奇怪,共发现(WN)的Unix命令行版本会给你的选项-domn(域)所需 信息:

wn ass -domnn (-domnv for a verb) 

... 
>>> USAGE->(noun) obscenity#2, smut#4, vulgarism#1, filth#4, dirty word#1 
>>> USAGE->(noun) slang#2, cant#3, jargon#1, lingo#1, argot#1, patois#1, vernacular#1 

然而,在NLTK等效方法只返回空单:

from nltk.corpus import wordnet 
a = wordnet.synsets('ass') 
for s in a: 
    for l in s.lemmas: 
     print l.usage_domains() 

[] 
[] 
... 

正如你可以尝试筛选在其同义词集的定义“淫亵”,“粗”或“俚语”字样的替代方案。但是,如前所述,对固定列表进行过滤可能更容易(如noswearing.com)。

更新:还有一个curse word filter API at Mashape.

+0

您也可以尝试[pattern.en.PROFANITY](http://www.clips.ua.ac.be/pages/pattern-en#wordlist) –

0

对于第4点这将是更好的和有效的,如果你能收集的骂人话清单,并通过反复的过程中删除。

要达到同样的,你可以检出this博客

我将在这里总结了一样。 1.从here加载发誓词文本文件 2.将其与文本进行比较,如果匹配则将其删除。

def remove_curse_words(): 
    text = 'Hey Bro Fuck you' 
    text = ' '.join([word for word in text.split() if word not in curseWords]) 
    return text 

输出将是。

嘿老兄你