python實現(xiàn)過濾敏感詞_第1頁
python實現(xiàn)過濾敏感詞_第2頁
python實現(xiàn)過濾敏感詞_第3頁
python實現(xiàn)過濾敏感詞_第4頁
python實現(xiàn)過濾敏感詞_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第python實現(xiàn)過濾敏感詞關(guān)于敏感詞過濾可以看成是一種文本反垃圾算法,例如

題目:敏感詞文本文件filtered_words.txt,當(dāng)用戶輸入敏感詞語,則用星號*替換,例如當(dāng)用戶輸入「北京是個好城市」,則變成「**是個好城市」

代碼:

#coding=utf-8

deffilterwords(x):

withopen(x,'r')asf:

text=f.read()

printtext.split('\n')

userinput=raw_input('myinput:')

foriintext.split('\n'):

ifiinuserinput:

replace_str='*'*len(i.decode('utf-8'))

word=userinput.replace(i,replace_str)

returnword

printfilterwords('filtered_words.txt')

再例如反黃系列:

開發(fā)敏感詞語過濾程序,提示用戶輸入評論內(nèi)容,如果用戶輸入的內(nèi)容中包含特殊的字符:

敏感詞列表li=["蒼老師","東京熱",”武藤蘭”,”波多野結(jié)衣”]

則將用戶輸入的內(nèi)容中的敏感詞匯替換成***,并添加到一個列表中;如果用戶輸入的內(nèi)容沒有敏感詞匯,則直接添加到上述的列表中。

content=input('請輸入你的內(nèi)容:')

li=["蒼老師","東京熱","武藤蘭","波多野結(jié)衣"]

i=0

whilei4:

forli[i]incontent:

li1=content.replace('蒼老師','***')

li2=li1.replace('東京熱','***')

li3=li2.replace('武藤蘭','***')

li4=li3.replace('波多野結(jié)衣','***')

else:

pass

i+=1

實戰(zhàn)案例:

一道bat面試題:快速替換10億條標題中的5萬個敏感詞,有哪些解決思路?

有十億個標題,存在一個文件中,一行一個標題。有5萬個敏感詞,存在另一個文件。寫一個程序過濾掉所有標題中的所有敏感詞,保存到另一個文件中。

1、DFA過濾敏感詞算法

在實現(xiàn)文字過濾的算法中,DFA是比較好的實現(xiàn)算法。DFA即DeterministicFiniteAutomaton,也就是確定有窮自動機。

算法核心是建立了以敏感詞為基礎(chǔ)的許多敏感詞樹。

python實現(xiàn)DFA算法:

#-*-coding:utf-8-*-

importtime

time1=time.time()

#DFA算法

classDFAFilter():

def__init__(self):

self.keyword_chains={}

self.delimit='\x00'

defadd(self,keyword):

keyword=keyword.lower()

chars=keyword.strip()

ifnotchars:

return

level=self.keyword_chains

foriinrange(len(chars)):

ifchars[i]inlevel:

level=level[chars[i]]

else:

ifnotisinstance(level,dict):

break

forjinrange(i,len(chars)):

level[chars[j]]={}

last_level,last_char=level,chars[j]

level=level[chars[j]]

last_level[last_char]={self.delimit:0}

break

ifi==len(chars)-1:

level[self.delimit]=0

defparse(self,path):

withopen(path,encoding='utf-8')asf:

forkeywordinf:

self.add(str(keyword).strip())

deffilter(self,message,repl="*"):

message=message.lower()

ret=[]

start=0

whilestartlen(message):

level=self.keyword_chains

step_ins=0

forcharinmessage[start:]:

ifcharinlevel:

step_ins+=1

ifself.delimitnotinlevel[char]:

level=level[char]

else:

ret.append(repl*step_ins)

start+=step_ins-1

break

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論