文字列内の罵り言葉 (およびそのリートピーク) を驚くほど高速にクリーニングします
現在、最新バージョン (0.7.0) にはパフォーマンスの問題があります。最新の安定バージョン 0.6.1 を使用することをお勧めします。
Ben Friedland のパッケージの冒涜からインスピレーションを得たこのライブラリは、正規表現の代わりに文字列比較を使用することにより、元のライブラリよりも大幅に高速になっています。
修正されたスペル ( p0rn
、 h4NDjob
、 handj0b
、 b*tCh
など) をサポートします。
このパッケージはPython 3.5+
以降およびPyPy3
で動作します。
pip3 install better_profanity
カテゴリLl
、 Lu
、 Mc
およびMn
の Unicode 文字のみが追加されます。 Unicode カテゴリの詳細については、ここを参照してください。
中国語など、すべての言語がまだサポートされているわけではありません。
from better_profanity import profanity
if __name__ == "__main__" :
profanity . load_censor_words ()
text = "You p1ec3 of sHit."
censored_text = profanity . censor ( text )
print ( censored_text )
# You **** of ****.
profanity_wordlist.txt 内の単語の修正されたスペルがすべて生成されます。たとえば、単語handjob
は次のようにロードされます。
'handjob' , 'handj*b' , 'handj0b' , 'handj@b' , 'h@ndjob' , 'h@ndj*b' , 'h@ndj0b' , 'h@ndj@b' ,
'h*ndjob' , 'h*ndj*b' , 'h*ndj0b' , 'h*ndj@b' , 'h4ndjob' , 'h4ndj*b' , 'h4ndj0b' , 'h4ndj@b'
ライブラリの完全なマッピングは profanity.py にあります。
デフォルトでは、 profanity
各罵り言葉を 4 つのアスタリスク****
に置き換えます。
from better_profanity import profanity
if __name__ == "__main__" :
text = "You p1ec3 of sHit."
censored_text = profanity . censor ( text )
print ( censored_text )
# You **** of ****.
関数.censor()
は、空白だけでなく単語も非表示にします。
_
、 ,
などの他の区切り記号も使用できます.
。 @, $, *, ", '
を除く。
from better_profanity import profanity
if __name__ == "__main__" :
text = "...sh1t...hello_cat_fuck,,,,123"
censored_text = profanity . censor ( text )
print ( censored_text )
# "...****...hello_cat_****,,,,123"
.censor()
の 2 番目のパラメータの文字の 4 つのインスタンスは、罵り言葉を置き換えるために使用されます。
from better_profanity import profanity
if __name__ == "__main__" :
text = "You p1ec3 of sHit."
censored_text = profanity . censor ( text , '-' )
print ( censored_text )
# You ---- of ----.
関数.contains_profanity()
は、指定された文字列内のいずれかの単語に単語リストに存在する単語がある場合にTrue
を返します。
from better_profanity import profanity
if __name__ == "__main__" :
dirty_text = "That l3sbi4n did a very good H4ndjob."
profanity . contains_profanity ( dirty_text )
# True
List
としての単語リスト関数load_censor_words
文字列のList
を検閲済みの単語として受け取ります。提供されたリストはデフォルトの単語リストを置き換えます。
from better_profanity import profanity
if __name__ == "__main__" :
custom_badwords = [ 'happy' , 'jolly' , 'merry' ]
profanity . load_censor_words ( custom_badwords )
print ( profanity . contains_profanity ( "Have a merry day! :)" ))
# Have a **** day! :)
関数 `load_ sensor_words_from_file はファイル名を受け取ります。これはテキスト ファイルであり、各単語は行で区切られています。
from better_profanity import profanity
if __name__ == "__main__" :
profanity . load_censor_words_from_file ( '/path/to/my/project/my_wordlist.txt' )
関数load_censor_words
およびload_censor_words_from_file
キーワード引数whitelist_words
を受け取り、ワードリスト内の単語を無視します。
単語リスト内に無視したい単語が少数しかない場合に使用するのが最適です。
# Use the default wordlist
profanity . load_censor_words ( whitelist_words = [ 'happy' , 'merry' ])
# or with your custom words as a List
custom_badwords = [ 'happy' , 'jolly' , 'merry' ]
profanity . load_censor_words ( custom_badwords , whitelist_words = [ 'merry' ])
# or with your custom words as a text file
profanity . load_censor_words_from_file ( '/path/to/my/project/my_wordlist.txt' , whitelist_words = [ 'merry' ])
from better_profanity import profanity
if __name__ == "__main__" :
custom_badwords = [ 'happy' , 'jolly' , 'merry' ]
profanity . add_censor_words ( custom_badwords )
print ( profanity . contains_profanity ( "Happy you, fuck!" ))
# **** you, ****!
profanity . censor ( 'I just have sexx' )
# returns 'I just have sexx'
profanity . censor ( 'jerkk off' )
# returns 'jerkk off'
s & m
など) は認識できないため、フィルターで除外されません。この問題は #5 で提起されました。 python3 tests.py
当社の行動規範とプル リクエストを当社に送信するプロセスの詳細については、CONTRIBUTING.md をお読みください。
このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細については、LICENSE.md ファイルを参照してください。