上個星期寫過一篇文章, 讓你的站跟新浪的新聞數據保持同步,有一些網友產生了興趣,於是我決定再和大家分享一下裡面所提及的偽原創系統,介紹其實現的原理,這個系統在我的西西弗斯工作室中也有介紹。
搜尋引擎畢竟還是個機器,透過改改標題,替換一些詞語,打亂一些章節,插入一些連結等手段,就能達到偽原創的目的,目前網路上也有類似的偽原創工具,但還需要人工操作去生成,所以我就想做一個全自動,無人監控的自動偽原創系統,結合自動採集程序,可以實現採集->入庫->偽原創的流程,並且整個過程實現無人管理,並具有實時性。
言歸正傳,要做到更改詞語而不影響文章語義,比較好的方法就是使用同義詞進行替換,所以我想到第一步,是建立同義詞庫,在網上搜索這種數據庫無果後,決定找相關的網站進行採集,發現金山詞霸可以很好地滿足我的要求,透過採集,建立起了詞庫,上萬條數據。
然後就是進行關鍵字替換了,那麼怎麼樣替呢,替換哪些呢?我的想法是先對文章進行分詞,分成若干個詞組,然後取長度大於兩個漢字的,在同義詞庫中進行搜索,如果有,則替換之,我使用python來實現這個流程的,另外為了加速同義詞的速度,可以使用key-value進行存儲。一些關鍵程式碼如下:
def getnewword(text,list):
cxn。 execute("select id from tool_words where name='%s' limit 1"%text)
result=cxn。 fetchone()
if type(result) is not NoneType:
cxn。 execute("select name from tool_wordslike where wid=%d order by rand() limit 1"%result[0])
result4=cxn。 fetchone()
if type(result4) is not NoneType:
list[text]=result4[0]
def cuttest(text,flag):
list={}
wlist = seg。 cut(text)
wlist。 reverse()
result=""
for tmp in wlist:
if len(tmp)>1:
if flag==1:
getnewword(tmp,list)
if flag==1:
result=""
for k in list。 iterkeys():
result+=k+","+list[k]+";"
else:
result+=tmp+";";
return result
不過畢竟偽原創系統,也是一個程序,肯定不可能完全保證語義的不恰當,語句的流暢,主要提供給那些做垃圾站的達人們,哈哈,我記得我的網站有一篇轉換後相當搞笑, http ://www.xxfsw.com/show24047.html ,諾貝爾物理學獎得主俄院士金茨堡逝世,結果把逝世轉成了圓寂,我都無語了。當然除了近義詞的替換外,還有段落的顛倒,插入連結等,這些就比較容易實現,我就不細語了,大家根據實現情況選擇,後來我也想了一些方法,可以實現對搜尋引擎呈現使用偽原創後的內容,對實現用戶提供偽原創前的內容,這樣既達到了目的,又不影響用戶體驗,只是不知道這樣的危險有多大,會不會被百度人工查出。
於是乎,經過這樣一番折騰,百度蜘蛛來到了你的站,大驚小怪了一下:哎呀小樣,這文章內容沒見過啊!收了。