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

Post on 17-Aug-2020

0 views 0 download

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