Parallel Programming
Final Project Report – PTT2 Life
B94902003 黃竣瑋 B94902032 陳縕儂 B94902095 陳晉暉 B94902097 呂哲安
System Structure
Parallel Skill
MapReduce (Hadoop) 計算高維度的 K-means
OpenMP
Insert data into DB、testing model weight(bayesian 原理)、尋找 IP location、對推文時間 作 sort(merge sort)
BBS Crawler
給定板名即可自動抓下所有板名內的文章(也可指定 XX~XX 篇),主要分成下方四層,由底 層網上分別為:
◦ Telnet Protocol
將 telnet 回傳的封包內容的 command 和 content 分開,同時對 telnet 作回應。
◦ Terminal
模擬 BBS 上 buffer 畫面,包含判斷 content 中對游標下的 command 及畫面的改變。
PTT2
Crawler
files Parser controller
Database User
Interface Programs
parser parser parser
user PTT2 manager (wens)
Programs Programs
判斷此時的 state。(例如:下方出現”請按任意鍵繼續”,則按一下)
◦ Crawler
做每個詳細的動作。(例如:抓文章)
Parser Controller
功能說明
對每一篇文章去做 parse 的動作,抽取出標題、作者、po 文時間、內文、po 文 ip、推文時 間、推文者、推文內容等資訊,並將其存到資料庫中。
程式平行
對於每一篇文章都丟給一個 thread 去抽取其中的資訊
經過 Parser Controller 將資料存進資料庫後,再透過 programs 去做不同的處理,以下是 programs components 的各個程式詳細說明。
Program Components
Terminal
PTT2 Telnet Protocol
Robot
Crawler
data
1. 變態指數:Beauty 板、Sex 板、Japanavgirls 板 2. 貪吃指數:Food 板
3. 氣質指數:Book 板、Vocal 板、Instrument 板 4. 黑特指數:Hate 板
5. 宅宅指數:WOW 板、Joke 板、Little-Games 板、Comic 板 6. 陽光指數:Baseball 板、Travel 板、Musclebeach 板、Play 板
◦ LM 產生步驟
Step1. Text Normalization (將 noise 過濾掉) perl filter ../corpus/yahoo_news_utf8.txt
Step2. Text Segmentation (依照辭典進行 text segmentation) ./bin/textSegment -i file.txt -o file_ts.txt
Step3. 以 SRILM 的程式計算每個 word 出現的次數 ngram-count -text file_ts+sw -write file.cnt -order 1 Step4. Stopword Removing (根據 stopwordlist 將之移除)
./rm_stopword file_ts stopword.list > file_ts+sw
Step5. 以 SRILM 的程式根據 count 訓練 model (產生 unigram 的 model) ngram-count -read lm.cnt -lm file.lm -order 1
◦ Classification
利用 LM 中的機率計算所有文章對於六個 model 的 weight,以估計個人的六項指 數。
程式平行
使用 OpenMP 用 6 個 threads 將之平行放進 language model 去 testing 分數,如下兩圖:
Sequential
LM1 LM2 LM3 LM4 LM5 LM6
Program
效能比較(計算一篇文章的六個 Sequential
0.384u 0.016s 0:00.40 97.5%
Parallel with p = 6
0.320u 0.032s 0:00.21 166.6%
對於一篇文章就有接近兩倍的 LM1
Parallel 計算一篇文章的六個 weight)
0.384u 0.016s 0:00.40 97.5%
0.320u 0.032s 0:00.21 166.6%
對於一篇文章就有接近兩倍的 speedup
LM2 LM3 LM4 LM5
Program
LM6
十大名言 功能說明
找尋板主較常用的句子十句
◦ K-means
將所有句子中的 character 大約 10000 多維。每個 sentence 來 clustering。
Step 1. Random 決定 K 個 Step 2. 計算每個點最近的
Step 3. 同一群中取最中心點當作新的 Step 4. 重複 Step 2.和 Step 3.
十句,並且列出相同類別中的句子五句。
character 計算 unigram 及 bigram,並且刪去機率太低的 sentence 是一個 10000 多維的 vector,並在空間中
個 center
計算每個點最近的 center 並歸到同一群(距離為 cosine similarity) 同一群中取最中心點當作新的 center
Step 3.,最後計算出 K 個 cluster
太低的 data,降維至 並在空間中以 K-means
cosine similarity)
程式平行
使用 MapReduce(hadoop)將每個點(vector)都分給 map 去做,負責算與之最近的 center,而 reducer 負責計算下一個 center 為何。
效能比較(計算一個個板的所有句子) Sequential
等了 3 小時以上都無法跑完
Parallel with mapper = 4 & reducer = 2 大約 15~20 分鐘
時間的下降非常明顯(無法計算 speedup)
凡來過必留下痕跡 功能說明
給定一個個板,找出曾經出現在板上的所有使用者 時間,藉此觀察訪客與版主的熟識程度
參數調整
Interval-如果超出此區間沒有推文或 UI 上就會出現中斷的時間點
Density period-以多少時間為單位來計算推文數 程式平行
對所有使用者出現在板上的所有時間作
找出曾經出現在板上的所有使用者,並抓出他們出現的時間 藉此觀察訪客與版主的熟識程度。
如果超出此區間沒有推文或 po 文,則假設此訪客近期內和版主較無關係 上就會出現中斷的時間點。
以多少時間為單位來計算推文數。
對所有使用者出現在板上的所有時間作 sorting 時使用到平行的技術(merge sort)
並抓出他們出現的時間,以及消失的
則假設此訪客近期內和版主較無關係,在
(merge sort)。
凡 PO 過必留下 IP 功能說明
將一個版主 po 文的 IP 跟時間對照表都抓出來 這些地點的變化呈現在 UI 上
程式平行
對於每一個 IP 去查詢對應到的地點時 化的方式去算每個 IP 對應到的位置
效能比較(查詢一個個板中的 Sequential
.496u 2.060s 0:52.53 14.3%
Parallel with p = 16
4.680u 1.820s 0:09.12 71.2%
跟時間對照表都抓出來,接著使用 IP 去查詢 po 上,使用 UI 表達出時間與空間的概念。
去查詢對應到的地點時,需要耗費較長的時間,因此使用 對應到的位置。
查詢一個個板中的 distinct IP)
.496u 2.060s 0:52.53 14.3%
4.680u 1.820s 0:09.12 71.2%
po 文的地點,並且把
因此使用 OpenMP,以平行
User Interface
使用 QT 及 javascript 製作 user interfaceuser interface