Parallel Programming Final Project Report – PTT2 Lifer98922004/doc/PP.pdf · 2014. 6. 20. ·...

9
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

Transcript of Parallel Programming Final Project Report – PTT2 Lifer98922004/doc/PP.pdf · 2014. 6. 20. ·...

Page 1: Parallel Programming Final Project Report – PTT2 Lifer98922004/doc/PP.pdf · 2014. 6. 20. · Final Project Report – PTT2 Life B94902003 B94902032 B94902095 B94902097 System Structure

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

Page 2: Parallel Programming Final Project Report – PTT2 Lifer98922004/doc/PP.pdf · 2014. 6. 20. · Final Project Report – PTT2 Life B94902003 B94902032 B94902095 B94902097 System Structure

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

Page 3: Parallel Programming Final Project Report – PTT2 Lifer98922004/doc/PP.pdf · 2014. 6. 20. · Final Project Report – PTT2 Life B94902003 B94902032 B94902095 B94902097 System Structure

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

Page 4: Parallel Programming Final Project Report – PTT2 Lifer98922004/doc/PP.pdf · 2014. 6. 20. · Final Project Report – PTT2 Life B94902003 B94902032 B94902095 B94902097 System Structure

� 效能比較(計算一篇文章的六個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

Page 5: Parallel Programming Final Project Report – PTT2 Lifer98922004/doc/PP.pdf · 2014. 6. 20. · Final Project Report – PTT2 Life B94902003 B94902032 B94902095 B94902097 System Structure

十大名言

功能說明

找尋板主較常用的句子十句◦ 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)

Page 6: Parallel Programming Final Project Report – PTT2 Lifer98922004/doc/PP.pdf · 2014. 6. 20. · Final Project Report – PTT2 Life B94902003 B94902032 B94902095 B94902097 System Structure

6

程式平行

使用MapReduce(hadoop)將每個點(vector)都分給 map去做,負責算與之最近的 center,而reducer負責計算下一個 center為何。

� 效能比較(計算一個個板的所有句子)

Sequential

等了 3小時以上都無法跑完

Parallel with mapper = 4 & reducer = 2

大約 15~20分鐘

� 時間的下降非常明顯(無法計算 speedup)

Page 7: Parallel Programming Final Project Report – PTT2 Lifer98922004/doc/PP.pdf · 2014. 6. 20. · Final Project Report – PTT2 Life B94902003 B94902032 B94902095 B94902097 System Structure

凡來過必留下痕跡

功能說明

給定一個個板,找出曾經出現在板上的所有使用者時間,藉此觀察訪客與版主的熟識程度參數調整

� Interval-如果超出此區間沒有推文或UI上就會出現中斷的時間點

� Density period-以多少時間為單位來計算推文數程式平行

對所有使用者出現在板上的所有時間作

7

找出曾經出現在板上的所有使用者,並抓出他們出現的時間藉此觀察訪客與版主的熟識程度。

如果超出此區間沒有推文或 po文,則假設此訪客近期內和版主較無關係上就會出現中斷的時間點。

以多少時間為單位來計算推文數。

對所有使用者出現在板上的所有時間作 sorting時使用到平行的技術(merge sort)

並抓出他們出現的時間,以及消失的

則假設此訪客近期內和版主較無關係,在

(merge sort)。

Page 8: Parallel Programming Final Project Report – PTT2 Lifer98922004/doc/PP.pdf · 2014. 6. 20. · Final Project Report – PTT2 Life B94902003 B94902032 B94902095 B94902097 System Structure

凡 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,以平行

Page 9: Parallel Programming Final Project Report – PTT2 Lifer98922004/doc/PP.pdf · 2014. 6. 20. · Final Project Report – PTT2 Life B94902003 B94902032 B94902095 B94902097 System Structure

� User Interface 使用 QT及 javascript製作 user interface

9

user interface