Parallel Programming Final Project Report – PTT2 Lifer98922004/doc/PP.pdf · 2014. 6. 20. ·...
Transcript of Parallel Programming Final Project Report – PTT2 Lifer98922004/doc/PP.pdf · 2014. 6. 20. ·...
1
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及畫面的改變。
◦ Robot
PTT2
Crawler
files Parser
controller
Database
User
Interface Programs
parser parser parser
user
PTT2 manager (wens)
Programs Programs
2
判斷此時的 state。(例如:下方出現”請按任意鍵繼續”,則按一下)
◦ Crawler
做每個詳細的動作。(例如:抓文章)
� Parser Controller
功能說明
對每一篇文章去做 parse的動作,抽取出標題、作者、po文時間、內文、po文 ip、推文時間、推文者、推文內容等資訊,並將其存到資料庫中。
程式平行
對於每一篇文章都丟給一個 thread去抽取其中的資訊
� 經過 Parser Controller將資料存進資料庫後,再透過 programs去做不同的處理,以下是programs components的各個程式詳細說明。
� Program Components
個人分析
功能說明
透過板主的文章,分析板主的六種指數並預測星座。
� 六項指數
利用 PTT上的文章當作 corpus,分別 train出六個不同的 language model,並根據 model
計算每篇文章相對於六種指數的 weight。並可以此找尋相似的人。
Terminal
PTT2
Telnet Protocol
Robot
Crawler data
3
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
4
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.
5
十句,並且列出相同類別中的句子五句。
character計算 unigram及 bigram,並且刪去機率太低的sentence是一個 10000多維的 vector,並在空間中
個 center
計算每個點最近的 center並歸到同一群(距離為 cosine similarity)
同一群中取最中心點當作新的 center
Step 3.,最後計算出 K個 cluster
太低的 data,降維至並在空間中以 K-means
cosine similarity)
6
程式平行
使用MapReduce(hadoop)將每個點(vector)都分給 map去做,負責算與之最近的 center,而reducer負責計算下一個 center為何。
� 效能比較(計算一個個板的所有句子)
Sequential
等了 3小時以上都無法跑完
Parallel with mapper = 4 & reducer = 2
大約 15~20分鐘
� 時間的下降非常明顯(無法計算 speedup)
凡來過必留下痕跡
功能說明
給定一個個板,找出曾經出現在板上的所有使用者時間,藉此觀察訪客與版主的熟識程度參數調整
� Interval-如果超出此區間沒有推文或UI上就會出現中斷的時間點
� Density period-以多少時間為單位來計算推文數程式平行
對所有使用者出現在板上的所有時間作
7
找出曾經出現在板上的所有使用者,並抓出他們出現的時間藉此觀察訪客與版主的熟識程度。
如果超出此區間沒有推文或 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%
� 可從 50多秒下降到 10
8
跟時間對照表都抓出來,接著使用 IP去查詢 po
上,使用 UI表達出時間與空間的概念。
去查詢對應到的地點時,需要耗費較長的時間,因此使用對應到的位置。
查詢一個個板中的 distinct IP)
.496u 2.060s 0:52.53 14.3%
4.680u 1.820s 0:09.12 71.2%
10秒內
po文的地點,並且把
因此使用 OpenMP,以平行
� User Interface 使用 QT及 javascript製作 user interface
9
user interface