PTT2 Life
Analysis of A Person in PTT2
資工四 B94902003 黃竣瑋 資工四 B94902032 陳縕儂 資工四 B94902095 陳晉暉 資工四 B94902097 呂哲安
System Structure
PTT2PTT2
Crawler Crawler
files
files
ControllerControllerParser ParserDatabase Database
User Interface
User
Interface ProgramsPrograms
parser
parser parserparser parserparser
PTT2 manager (wens)
Programs Programs
Programs Programs
Parallel Skill
• MapReduce (Hadoop)
– 計算高維度的 K-means
• OpenMP
– Insert data into DB
– testing model weight (bayesian 原理 ) – 尋找 IP location
– 對推文時間作 sort
System Component
• BBS Crawler
• Parser Controller
• Program Components
• User Interface
System Component
• BBS Crawler
• Parser Controller
• Program Components
• User Interface
BBS Crawler (1)
• 給定板名即可自動抓下所有板名內的文章
– Telnet Protocol
• 將 telnet 回傳的封包內容的 command 和 content 分 開,同時對 telnet 作回應。
– Terminal
• 模擬 BBS 上 buffer 畫面,包含判斷 content 中對游標 下的 command 及畫面的改變。
– Robot
• 判斷此時的 state
– Crawler
BBS Crawler (2)
Terminal Terminal
PTT2PTT2
Telnet Protocol Telnet Protocol
Robot Robot
Crawler
Crawler datadata
System Component
• BBS Crawler
• Parser Controller
• Program Components
• User Interface
Parser Controller
• Function
– Parsing all files to extract
• 標題、作者、 po 文時間、內文、 po 文 ip 、推文時 間、推文者、推文內容等資訊
– Inserting into database
• Parallel Programming
– 每一篇文章都給一個 thread 去 parse information
System Component
• BBS Crawler
• Parser Controller
• Program Components
• User Interface
Program Components
• 個人分析
• 十大名言
• 凡來過必留下痕跡
• 凡 PO 過必留下 IP
個人分析 (1)
• 分析板主文章決定六種指數並以此找尋相似的人
– 變態、貪吃、氣質、黑特、宅宅、陽光
• Using corpus in PTT to generate LM
– Text Normalization – Text Segmentation – Stopword Removing – Training LM
• Classification (bayesian 理論 )
– 利用 LM 中的機率計算所有文章對於六個 model 的 weight ,以估計個人的六項指數
個人分析 (2)
• Parallel Programming
– 使用 OpenMP 用 6 個 threads 將之平行放進 language model 去 testing
• 效能比較 ( 對一篇文章產生六個 weight)
– Sequential
• 0.384u 0.016s 0:00.40 97.5%
– Parallel with p = 6
• 0.320u 0.032s 0:00.21 166.6%
speedup ≈ 2
個人分析 (3)
LM1LM1 LM2LM2 LM3LM3 LM4LM4 LM5LM5 LM6LM6
Program
ProgramProgram Program
個人分析 (4)
個人分析 (5)
• 星座分析
– 在板內尋找生日文,並從中獲得日期的資訊,以此判 斷板主的星座
十大名言 (1)
• 找尋板主較常用的句子,並且列出與此句
相似的前幾名句子
• K-means preproccessing
– 計算 sentence 中 character 的 unigram 及 bigram
– 移除機率太小的將維度降至約 10000 維 – 每一句當作一 space 的 vector
十大名言 (2) - K-means
• Step 1. Random
決定 K 個 center• Step 2.
計算每個點最近的center 並歸到同一群
– 距離為 cosine similarity
• Step 3.
同一群中取平均值當作新的 center
• Step 4.
重複 Step 2. 和Step 3. ,最後計算出 K 個 cluster
十大名言 (3)
• Parallel Programming
– 用 MapReduce(Hadoop) 將每個點都平行分下 去計算與 center 的距離
• 效能比較 ( 約 10000 句,每句 10000 維 )
– Sequential (perl)
• 等了 3 小時以上都無法跑完
– Parallel with Mapper = 4 & Reducer = 2
• 約 15~20 分鐘
時間的下降非常明顯 (speedup 很大 )
十大名言 (4)
凡來過必留下痕跡 (1)
• 個板中從開板至今所有推文者所出現的時
間及頻率
– Interval
• 同一個人兩次推文時間相差超過此數則顯示中斷點
– Density period
• 以多少時間為單位來計算推文數
• Parallel Programming
– 對所有使用者出現在板上的所有時間作 sorting 時使用到平行的技術。
凡來過必留下痕跡 (2)
凡 PO 過必留下 IP (1)
• 板主 po 文的 IP 位置跟時間的對照,呈現在
UI 並表現時間與空間的概念
– 根據 IP 去查找板主在地圖上的位置
凡 PO 過必留下 IP(2)
• Parallel Programming
– 對於每一個 IP 去查詢對應到的地點時,需要耗費 較長的時間,因此使用 OpenMP ,以平行化的方式 去算每個 IP 對應到的位置。
• 效能比較
– Sequential
• .496u 2.060s 0:52.53 14.3%
– Parallel with p = 16
• 4.680u 1.820s 0:09.12 71.2%