2012-09-09 233 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 

輸出將是。

嘿老兄你