※ 引述《blessthefall (花 請聽我說話)》之銘言:
: 板上女版友收到的約砲信
: 來來去去大概就是那個樣子八九不離十
: 有沒有男版友收過什麼很特別/意外/恐怖
: 之類的性騷擾或是約砲信啊
: 求眾男神出來分享一下意見
在板上待久,難免會收到一些來信
後來留下深刻印象的,多半來信簡短
像是簡單一句"Hi,我想認識你",或是"單挑?"
當資訊量太少時,會面臨選擇上的困難
是要回信? 還是當做沒看到?
直接忽略,可能會錯失一些什麼
往返聯絡,可能會浪費一些時間
於是我在想,是否有個簡便方式,能自動分析來信者背景資料
因為我很懶惰,懶惰的人只想一勞永逸
稍微查閱網路資料後,寫了程式自動抓站內文章
站內看板數量太多,資源有限,無法每個看板都追蹤
可以先用 google 進階搜尋,看看哪些看板值得納入追蹤
接著將文章一一寫入 SQL 資料庫
這樣就能簡便搜尋 ID、暱稱、文章標題、日期、IP、推文數和內文
有了這些資料,終於可以嘗試解決幾個問題:
1.對方的性別
2.對方的興趣項目
3.對方和哪些項目最有關聯
4.與對方的關聯度
5.依照特定項目篩選對象
先從分析文章內容做起,首先進行中文分詞,這已經有許多開源專案可用
背後原理主要是基於 TF-IDF 演算法提取關鍵詞,並取得每個詞出現的頻率
對於未登錄詞,則用 Hidden Markov model(HMM) 和 Viterbi 演算法挖掘出來
分詞過程將根據詞頻,查找出最大機率路徑,找出基於詞頻的最大機率分詞組合
例如: 西斯板為批踢踢站內討論與性知識、性愛及相關議題之看板
分詞後:
西斯板 為 批踢踢 站內 討論 與 性知識 、 性愛 及 相關 議題 之 看板
將一篇文章分詞後,可以再用 TF-IDF 演算法提取出權重高的關鍵詞
例如將某篇文章提出權重最高的前 15 個關鍵詞,得到:
褲子 / 單挑 / 陰蒂 / 內褲 / 變態 / 寄信 / 可以 / 站內信 /
平胸 / 感覺 / XD / 磨破 / 有圖 / 哩金 / 跪求 /
現在將對方每一篇文章提出前 15 個關鍵詞,加總並排序,可得到類似這樣的結果:
======= 出現次數 =======
寄信 5
男友 5
主人 4
西斯 3
調教 3
=========================
然而,每個關鍵詞在每篇文章出現順序不一,也就是權重是有差別
如果考量權重,給予加權計算,那關鍵詞權重次數可能是這樣:
======= 出現權重 =======
男友 41
寄信 40
調教 28
單挑 28
主人 25
母狗 22
前男友 21
下體 20
=========================
如此一來,只要看對方有哪些高權重關鍵詞,就可以略知興趣、偏好
有了這份關鍵詞權重表,可以計算自己和對方的關聯度
例如比對關鍵詞,一致則加計關聯度
實務上,分詞系統仍有不完美之處
像可能出現兩個關鍵詞分別是 "輪班星人"、"輪班",兩者有一定的關聯
如果只有關鍵詞完全一致才加計,那會流失一些關聯度
因此,當某一個關鍵詞是另一個關鍵詞子集,可以考慮納入平均化後的關聯度
公式為:
關聯度(A,B) =
Σ(FreqA + (FreqA * FreqB /100) + ( (FreqA * FreqBofA + FreqBofA)/(100+100) )
但有一些人很少貼文章,甚至沒貼過任何文章,此時要如何計算關聯度?
可嘗試篩選對方推過的所有文章,理論上這些文章會與對方的興趣較有關聯
例如某個人文章數只有 3 篇,計算關聯度只有 31.571
但推過的文章有 132 篇,計算關聯度,上升到 97.832
試運算關聯度:
================= 關聯度 =================
100.278 = Hokusai 與 Hokusai 的關聯度
079.104 = Hokusai 與 g****** 的關聯度
068.253 = Hokusai 與 B****** 的關聯度
065.965 = Hokusai 與 L****** 的關聯度
055.688 = Hokusai 與 n****** 的關聯度
033.252 = Hokusai 與 T****** 的關聯度
028.984 = Hokusai 與 s****** 的關聯度
027.882 = Hokusai 與 a****** 的關聯度
004.734 = Hokusai 與 g****** 的關聯度
==========================================
關聯度的運用或許可劃分為:
a.擷取對方po過的所有文章,"不納入" 底下推文
計算與自己文章的關聯度 = 找出近似文風
假設 文風 = 常見用語 + 獨特用語
如果兩者常見用語和獨特用語都很接近,那可能文章風格接近,甚至可能是同一人
b.擷取對方po過的所有文章,"納入" 底下推文
計算與自己文章的關聯度 = 找出個人特質以及眾人評語
例如: 從推文提取出高權重關鍵詞 "好大"、"想揉",那或許發文者有大胸部
或是 "美腿"、"絲襪",那或許發文者有一雙美腿
c.擷取對方推過的所有文章,"不納入" 底下推文
計算與自己文章的關聯度 = 找出有興趣的主題
例如: 對方完全沒發過文,但推過許多文章,這些文章主題都跟絲襪有關
那或許對方是個絲襪控
d.擷取對方推過的所有文章,"納入" 底下推文
計算與自己文章的關聯度 = 找出有興趣的主題以及眾人評語
例如: 對方推的文章沒什麼內容,只有貼圖或貼網址
但底下推文高權重關鍵詞是 "想要"、"濕了"
或許這些文章都是高度情慾相關,可彰顯出對方的偏好
關鍵詞的另一項運用是計算對方和某些關鍵詞的關聯度
例如設定這些有點糟糕的關鍵字:
"主人,調教,奴,肉棒,穴,繩,鞭,屁股"
選定一些對象後,計算可得:
======= 特定關鍵詞關聯度 =======
050.495 = 與 B***** 的關聯度
050.477 = 與 L***** 的關聯度
050.079 = 與 Hokusai 的關聯度
025.395 = 與 a***** 的關聯度
012.523 = 與 r***** 的關聯度
000.000 = 與 t***** 的關聯度
000.000 = 與 g***** 的關聯度
================================
如此一來,就能迅速找出所有板友當中,與特定關鍵詞高度關聯的人
至於該如何得知對方性別呢?
直覺想法是找出對方所有文章,根據文章內容人工解讀
但懶人並不這麼做,懶人想要電腦自動根據演算法計算出對方性別機率
要計算這樣的機率,就得用到詞向量
背後數學原理,有興趣可自行上網找,實作上已經有開源項目,直接使用即可
將西斯板,甚至是全站主要板面所有文章一一分詞,放入神經網路模型訓練
得到的是許多關鍵詞以及它們的詞向量,詞向量相近的詞可能是近似詞,或有關聯
例如:
約炮