4.1 總體實現
以下是整體系統的流程圖(圖 4-1)與說明演算法(圖 4-2)。
圖4- 1 系統流程圖
圖4- 2 系統演算法
再簡述一下整體的流程(詳細部分已經於第三章說明):一則評論進到系統,經過 斷句、斷詞以及建立結構樹後,在暫存區中;接著將評論的各個句子分別取 出,依序放入單句意見判斷,將各句判斷後的意見作為標籤,附註在各句後;
判斷完整篇評論的所有句子後,統計正面意見與反面意見,若正面意見句多於 反面意見句,則判斷評論為正向,反之則判斷評論為負向,若正反意見句數目 相同,則判斷為沒有意見。本系統各個區塊圖之間,以手動的方式來接合(在斷
32
33 圖4- 3 句型結構樹實例
底層的Node 儲存詞以及詞性,而上層的 parent node 則儲存短語之類的類別。
最上層的Node 標註為 Root。讀取句子並建立 Parse Tree 時,採用由上而下的方 法:遇到左括弧”(”時,Tree 就往下一層,而遇到右括弧”)”時,便往上一層。因 此在程式實作中,遇到括號”(”時,就建立新的 Node,並以之為 Child,連結到 目前這一個Node,而目前指標也改指到這個新的 Child Node;遇到括號”)”就將 目前指標改到目前Node 的 parent,其演算法如圖 4-4。
34 圖4- 4 讀取結構樹演算法
4.2.2 動詞與形容詞的句型結構樹判斷實現
第三章提到單句意見判斷可以分成動詞與形容詞、名詞、該句中無特徵詞等 三部分。動詞與形容詞的部分如先前所述,找出離該意見詞最近的NP (該 NP 不 得包含目前指定的意見詞)。流程說明為先將目前 Node 標註一個旗標,再將目 前指標改到目前Node 的 parent;接著在現在指標所指 Node 的所有 Child 中,
找尋在Tree 中 ,與之前紀錄的 Node 最接近(第三章有 Tree 中兩 Node 的距離 的定義)之含有 NP 的 Node(不包含紀錄”已經過”的 Node 本身)。若是找到具有 NP 的 Node,則將該 Node 儲存後停止搜尋的流程。若是所有的 Child 都沒有具 有NP 的 Node,則紀錄目前的 Node 為已經過(traverse),並將目前指標再改到 目前指標Node 的 Parent,並重複以上步驟,直到找到具有 NP 的 Node 為止。
找尋NP 的流程圖(圖 4-5)與演算法虛擬碼(圖 4-6)如下。
35 圖4- 5 動詞&形容詞意見找尋主詞/受詞流程圖
圖4- 6 動詞&形容詞意見找尋主詞/受詞演算法
從演算法虛擬碼可以看出:找尋NP 和名詞,都是使用遞迴來處理。
找到NP 之後(無 NP 的情況,判斷為該句內無特徵詞),便在 NP 中找尋其在 Tree 結構中底部的所有名詞(找不到名詞的情況,在第三章已敘述處理方法)。先設置 一個特徵分數為0,若找到符合意見特徵詞的詞則加上一個正分,若是找到符 合劇情特徵詞的詞則加上一個負分(本論文中每次所加正分會稍大於每次所加負 分的絕對值)。找完所有 NP 之 Node 下,Tree 之所有底層詞後,將特徵分數大 於0 者視為特徵句,並標示在該句中。流程圖(圖 4-7)與虛擬碼演算法(圖 4-8)如 下所示。
36 圖4- 7 動詞&形容詞意見判斷流程圖
圖4- 8 動詞&形容詞意見判斷演算法
動詞與形容詞的找尋特徵詞部分,也使用遞迴實現,接下說明名詞的特徵詞找 尋。
37
4.2.2 名詞的句型結構樹判斷實現
名詞的部分在特徵詞的處理上,與動詞及形容詞不太相同。動詞與形容詞直 接使用離意見詞在Tree 中距離最近的 NP,底下所有的詞來找尋特徵詞。而名 詞的處理方式,是先找出數個(在本論文是三個)在 Tree 中離意見詞距離最近的 NP,但在這邊的 NP,必須直接連至底層的詞(在第三章有較詳盡的說明)。流程 中,首先紀錄目前的Node 為已經過,接著將目前指標指向目前 Node 的 Parent,標示目前 Node 為已經過,接著變更目前指標為底下 index 最小之未經 過的Child,檢查其所有 Child。若所有 Child 皆為底層(發現的底層皆標示已經 過),則將此 Node 儲存在一個 Set 中。接著將目前指標指向目前 Node 的
Parent,若發現有非底層,且未經過的 Child(發現的底層皆標示已經過),則將目 前指標指向底下index 最小之未經過的 Child,繼續重複以上步驟,直到找到所 有Child 皆為底層的 Node 為止。若是目前 Node 的所有 Child 皆為已經過,則將 目前指標指向目前Node 的 Parent,標示目前 Node 為已經過,之後重複以上搜 尋動作,直到所有底層都為已經過為止。之後將Set 中所有的 NP,依照 Tree 中 與意見詞的距離排序。流程圖(圖 4-9)與演算法(圖 4-10)如下。
圖4- 9 名詞意見找尋主詞/受詞流程圖
38 圖4- 10 名詞意見找尋主詞/受詞演算法
挑出數個(本論文中為三個)與意見詞句離最近之 NP,接著檢查其中所有的底層 詞。接著與動詞相同,先設置一個分數值,分別加減劇情特徵詞與意見特徵詞 的分數,若數值結果大於零則判斷其為意見句。流程圖(圖 11)與演算法(圖 4-12)如下。
圖4- 11 名詞意見判斷流程圖
39 圖4- 12 名詞意見判斷演算法
以上為名詞尋找特徵的部分,判斷完意見的句子會先儲存起來。為因應動詞與 形容詞的特殊情況(第三章所述),處理完初步判斷後,會再進行特殊情況的判 斷,已在第三章詳述。
4.2.3 句內無特徵詞之判斷的實現
如第三章所述,句中無特徵詞者,需依賴鄰近句子來輔助判斷其意見。而鄰 近的句子則採用第三章所定義之關連句:首先給予各意見特徵詞及劇情特徵詞 一個初始分數0。衡量標準是距離(斷完句後文中的距離)該需要判斷的句子 N 句 的句子中,如果出現一個意見特徵詞,則在意見特徵詞加1
𝑁𝑁的分數(因為本句沒 有特徵詞,所以並不會有分母為0 的情況出現)。若出現一個劇情特徵詞,也加 上1
𝑁𝑁。之後將意見特徵詞分數減去劇情特徵詞分數,若結果大於0 則判斷該句屬 於意見句。流程圖(圖 4-13)與演算法(圖 4-14)如下所示。
40 圖4- 13 該句內無特徵詞意見判斷流程圖
圖4- 14 該句內無特徵詞意見判斷演算法
本系統中,句中無特徵詞的判斷是在動詞、形容詞、名詞的判斷結束之後,才 開始進行。
41
4.2.4 三種意見句情況比較
表4- 1 判斷意見句之三種 Case 比較表
意見句情況 動詞&形容詞 名詞 無特徵詞
找NP 找一個 找N 個 無
找特徵詞 NP 內所有加權 N 個 NP 所有加權 鄰近句加權 加權分數配比 意見特徵較高 意見特徵較高 兩種特徵相同,
以文字距離決定 遞迴使用有無 找NP 與特徵詞皆
有
找NP 有,特徵詞 無
無
意見詞詞性 動詞、形容詞 名詞 所有
系統中順序 1 2 3
表4- 1 為三種意見句判斷方式的比較。在動詞&形容詞、名詞的實現上,需要 使用Parsing Tree 的結構,而無特徵詞的情況則不必。而無特徵詞處理需用到鄰 近句,動詞&形容詞處理只有在考慮特殊情況時需要鄰近句意見。此外,無特 徵詞的部分。
42 NTUSD 縮減,並加入簡體中文的部分,結果為正面詞與負面詞各為 2600、3200 個左右的意見詞典。除了NTUSD 之外,另外收集了 300 篇作品評論的文章(非
43
第五章 模擬實驗與討論
本章先就判斷作品評論的系統進行實驗並討論結果,之後會簡單示範一個利用 判斷完成含有意見傾向標註的評論書評系統。
5.1.1 實驗語料收集
系統製作時,使用從百度貼吧與 PTT 上所收集的語料,作為抽取關鍵詞之用。
本研究的實驗語料來源中,繁體中文為《巴哈姆特》網站以及電子佈告欄《PTT》
的作品評論,簡體中文則採取《輕之國度》論壇小說測評區以及《百度貼吧》的 文章,圖5- 1 到圖 5- 7 是文章來源與收集結果的舉例圖。
圖5- 1 《輕之國度》評論文章
圖5- 2《巴哈姆特》評論文章
44 圖5- 3《PTT》評論文章
圖5- 4《百度貼吧》評論文章
圖5- 5 繁體評論文章範例
45 圖5- 6 簡體評論文章範例
圖5- 7 實驗選用動漫輕小說作品一覽
本研究選用了25 部輕小說作品,與包含其改編之動漫畫的評論為實驗語料。每 部作品在繁體中文與簡體中文的評論各選擇10 篇,全部的評論共 500 篇。
46
5.1.2 比較標準
第二章結尾提到 F-Score (2-5、2-6、2-7),結合 Precision 與 Recall,作為準確 性的衡量。本論文採用Accuracy 與 F-Score 的分數以及 ROC space 圖作為標準,
並予以比較。正確答案(ground truth)為三位同學人工標記 500 篇測試評論文章 的意見,並投票決定作為判斷。衡量方法如(5-1)
Opinion = Voting�文章人工判斷 1 , 文章人工判斷 2 , 文章人工判斷 3� (5-1) Ground truth 的判斷結果有 134 篇評論為負面,剩下皆為正向意見。表 5- 1 是 比重百分率之整理表。
表5- 1 測試用資料之對照答案各意見所占比例
意見 + -
所占比例 73.2% 26.8%
為了使正負評論的數量達到平均以利於分析,在這邊選用了正負評論各125 篇來 作為實驗測試之用。單句部分,因為系統主要偏重評論文章最後結果的正反意見,
故沒有對各句意見判斷作準確率之衡量。若在一篇評論文章中,正負評論句的數 目相等,則依照正負詞典中詞彙數量的比例來給予不同的機率後以此機率來隨機 判斷此評論為正向或負向。在本論文實驗中,對照組與本論文的方法皆使用同一 隨機結果以排除因不同時間點下隨機值不同對於比較造成干擾。
F-Socre 的公式如第二章敘述
47
5.1.3 實驗結果與討論
本研究使用兩組資料,作為本論文系統方法的對照組,對照組一為不考慮關連 句意見的數據(完全不考慮劇情詞典),對照組二為直接使用關連句中是否有意見 詞典之詞彙存在來判斷關連句意見,結果如表5- 2 與表 5- 3。
表5- 2 本論文系統實驗之結果
分類方法 評論意見(評論篇 數)
Ground truth 正向 Ground truth 負向
對照組一 系統判斷 正向 71 5
系統判斷 負向 3 68 對照組二 系統判斷 正向 79 7
系統判斷 負向 5 76
本論文 系統判斷 正向 82 4
系統判斷 負向 2 79
表5- 3 實驗結果比較
組別 對照組一 對照組二 本論文
Precision 94.6% 92.8% 96.4%
Recall 57.4% 65.1% 66.0%
F1-Score 71.4% 76.5% 78.3%
48
由以上實驗結果,可知本論文在Precision 與 Recall 表現皆較對照組為優。可以得 出濾掉劇情討論的干擾後,單篇評論的意見誤判情形隨之減少,因此Precision 與 Recall(Recall 主要因意見誤判為相反的情況減少而得到進步)皆上昇。在 F1-Score 的部分本論文相較對照組二進步些微進步1.8%。
49
本論文使用NIUParser 進行詞性標註,而詞性標註可能會出現錯誤(部分是因為斷 詞的影響),例如:
一堆/AD 設定/VV 也/AD 挺/AD 認真/VA 的/DEC
50
在本句中的”設定”其實指的是故事或角色設定,屬於名詞,而 NIUParser 的部分 判斷為動詞VV。本論文中的特徵詞,只考慮名詞的部分(依照正常的結果,名詞 比較適合做為動詞與形容詞的特徵詞或者是作意見名詞的敘述對象)。若是詞性 本身已經標示錯誤,特徵詞判定上自然也會受到影響。
在本句中的”設定”其實指的是故事或角色設定,屬於名詞,而 NIUParser 的部分 判斷為動詞VV。本論文中的特徵詞,只考慮名詞的部分(依照正常的結果,名詞 比較適合做為動詞與形容詞的特徵詞或者是作意見名詞的敘述對象)。若是詞性 本身已經標示錯誤,特徵詞判定上自然也會受到影響。