2012-09-15 81 views
4

由於Django不處理過濾褻瀆 - 有沒有人有任何建議,以簡單的方式來實現某種自然語言處理/過濾褻瀆中的褻瀆?Django中的褻瀆評論

回答

7

Django的確處理過濾褻瀆。

https://docs.djangoproject.com/en/1.4/ref/settings/#profanities-list

PROFANITIES_LIST

默認值:()(空元組)

髒話的元組,作爲字符串,將在評論被禁止時 COMMENTS_ALLOW_PROFANITIESFalse

這就是說你仍然需要填充該列表。 Somelinkstogetstarted。我也會熟悉Scunthorpe problem

+1

注:自1.3它已經提到,PROFANITIES_LIST應該被棄用。我相信Adrian Holovaty和Daniel Greenberg在最近的談話中都提到這個計劃是1.5。它現在仍然在master分支,但我認爲(希望)它即將消失。 –

+0

+1是的,我個人認爲有一個褻瀆名單是浪費時間,但正在糾正這個問題,因爲Django確實有基本的處理。以下是有關將內置列表更改爲空的發行說明的鏈接 - https://docs.djangoproject.com/en/1.4/releases/1.3/#no-more-naughty-words – zackdever

+0

+1對於Scunthorpe問題。 @Tom我相信什麼是不贊成的列表內容 - 因爲你看它現在默認爲一個空的元組,但過去只用四個相當隨機的侮辱填充。 –

2

我個人說...不要打擾。如果您創造更好的過濾器,他們會簡單地鍵入不同......

但是,這裏有一個簡單的例子:

import re 
bad_words = ['spam', 'eggs'] 
# The \b gives a word boundary so you don't have the Scunthorpe problem: http://en.wikipedia.org/wiki/Scunthorpe_problem 
pattern = re.compile(
    r'\b(%s)\b' % '|'.join(bad_words), 
    re.IGNORECASE, 
) 

some_text = 'This text contains some profane words like spam and eggs. But it wont match spammy stuff.' 
print some_text 
# This text contains some profane words like spam and eggs. But it wont match spammy stuff. 

clean_text = pattern.sub('XXX', some_text) 
print clean_text 
# This text contains some profane words like XXX and XXX. But it wont match spammy stuff. 
+2

雅虎通過考慮科學學士學位的「BS」褻瀆和審查職位使自己看起來很愚蠢。除非你要做足夠的NLP來理解上下文,否則確保你的褻瀆清單是明確的。 – Dave