You are on page 1of 66

國立臺北大學資訊工程學系

Department of Computer Science & Information Engineering


National Taipei University

碩士論文

Master Thesis

指導教授: 張玉山 博士

Advisor: Dr. Yue-Shan Chang

以 BERT 與文本詞性結構為基礎之語句判斷

Sentence Checking based on the BERT and the Structure of Part-of-Speech in

Text

研究生: 蔡承哲

Student: Cheng-Zhe Tsai

中華民國 111 年 8 月
August, 2022
II
III
誌謝
首先我要感謝張玉山教授這兩年來的教導,從當初接計畫、論文方向、實驗、論文的撰寫以及系

統實作,老師都很樂意花時間不厭其煩給我許多意見,讓我在實作以及完成碩士論文上遇到問題能更

快的有方向去解決問題,論文的撰寫也更能將重點有條理的表達出來。除了論文的指導外,老師的專

業知識以及嚴謹的研究精神,使我受益良多學習到老師傳授的知識以及精神,相信在日後的職場上會

有所幫助。接著要感謝國立澎湖科技大學校長黃有評教授、國立陽明交通大學資訊工程學系袁賢銘教

授、國立中央大學資訊工程學系王尉任教授以及國立臺北大學資訊管理研究所戴敏育副教授提供許多

研究上的意見以及論文呈現上的建議,讓我能掌握研究上需要注意的地方,使得本論文能更加完善。

另外,我還要感謝實驗室的黃瀚勳學長,學長除了忍著身體疾病的病痛與自己的研究外,還額外花時

間協助我在系統上遇到的問題,給予我很大的幫助。

再來就是要感謝實驗室的同學、學長、系上的同學以及學弟妹,在苦悶的碩士生活中,彼此之間

互相加油打氣,遇到問題會互相幫忙,在研究之餘也會一起出去放鬆紓解壓力,使我碩士兩年的生活

過得多采多姿,有大家的鼓勵我才能繼續努力不懈,堅持下去完成這本碩士論文。最後,我要感謝我

的家人,家是永遠的避風港,無論在外受到什麼挫折,只要一回到家卻總是覺得溫暖,原因無非是有

家人真誠的關切以及無限的全力支持,讓我在做研究的過程中不用擔心生活,謝謝家人溫暖的支持與

陪伴。這篇論文我獻給我的師長、朋友、家人以及在我人生中幫助過我的貴人,在此至上深深的謝意,

將成果與你們分享。

IV
國立臺北大學資訊工程學系 110 學年度第學期碩士學位論文提要

論文題目: 以 BERT 及文本詞性結構為基礎之語句判斷 論文頁數: 54


所 組 別: 資訊工程學 系(所) 網路 組 (學號: 710983105 )
研 究 生: 蔡承哲 指導教授: 張玉山

論文提要內容:

吶語症(Dysphasia)患者因先天上的缺陷,發出來的語音有所缺損,一般的語音辨識系統無法

使用,因此針對語言障礙的語音辨識系統逐漸受到重視。本團隊在先前研究[2,3]中提出應用深

度學習方法建構語言障礙者中文語音辨識系統,先使用中文音節辨識模組辨識各個字的音,接

著在使用語句建構模組組合出句子。目前語音辨識模組準確度不穩定,語句建構模組識是將字

與字之間關聯歷史資料作為依據,建構出句子,再加上比對法若在資料庫中曾經出現過的句子,

組出來的結果就會比較好,缺點是如果講一個全新的語句,在語句庫沒有的,則結果就無法組

合出正確的句子。在[4]中,應用 N-gram 的方法來輔助構句,其結果有提升了語句建構的準確

率,但隨著語句變長時間複雜度也隨之提高。

本團隊延續之前的系統與方法,在[5]使用了事先建好的歷史資料透過 N-gram 雜湊表(N-

gram Hash Table)去建構 N-gram 關係矩陣,最後根據 N-gram 關係矩陣去生成 Top 50 語句。本

研究在[5]生成 Top 50 語句之後,將文本的詞性結構與把 CKIP 原始繁體中文 BERT(Bidirectional

Encoder Representations from Transformers)語言模型做遷移學習(Transfer Learning)訓練出來的

TL-BML(Transfer Learning approach for BERT-based Masked Language model)語言模型做結合,結

合這兩個方法做語句判斷,挑出正確的詞性結構語句,若遇到詞性部分錯的句子盡可能的使用

TL-BML 去猜出詞性錯的字詞做語句修正,藉由語句判斷讓使用者的候選語句能有更符合語意

邏輯的句子去做選擇,在語句平均相似度中,在 25 句測試長度 3、5、6 和 9 的句子皆有 80%以

上的相似。

關鍵字:語句分析、詞性結構、BERT、Transfer Learning、Fine Tune

I
ABSTRACT
Sentence Checking based on BERT and the Structure of Part-of-Speech in Text

by

Cheng-Zhe Tsai

August 2022

ADVISOR(S):Dr. CHANG, YUE-SHAN

DEPARTMENT:COMPUTER SCIENCE & INFORMATION ENGINEERING

MAJOR:COMPUTER SCIENCE & INFORMATION ENGINEERING

DEGREE:MASTER OF SCIENCE

Due to congenital defects, patients with Dysphasia have some defects in their speech, and the general

speech recognition system cannot be used. Therefore, the speech recognition system for language

disorders has gradually received attention. In previous studies [2,3], our team proposed to apply deep

learning methods to construct a Chinese speech recognition system for people with language disabilities.

First, the Chinese syllable recognition module was used to identify the sound of each character, and then

the sentence construction module was used to compose sentences. At present, the accuracy of the speech

recognition module is unstable. The sentence construction module recognizes the historical data related

to words as the basis to construct sentences, and then compares the sentences that have appeared in the

database. The result will be better. The disadvantage is that if you speak a brand new sentence, which is

not available in the sentence library, the result will not be able to combine the correct sentence. In [4],

the N-gram method is used to assist sentence construction, and the result is that the accuracy of sentence

construction is improved, but as the sentence becomes longer, the complexity also increases.

The team continued the previous system and method, and used the pre-built historical data to

construct the N-gram relationship matrix through the N-gram Hash Table in [5]. Finally, according to the

N-gram relationship matrix, the Generate Top 50 statements. In this study, after generating the Top 50

sentences in [5], the part-of-speech structure of the text is compared with the TL-BML (Transfer Learning

approach for BERT-based Masked Language model) trained by the CKIP original Traditional Chinese

II
BERT (Bidirectional Encoder Representations from Transformers) language model, combine these two

methods to make sentence judgment, pick out the correct part of speech structure sentence, if encounter

a sentence with a wrong part of speech, use TL-BML as much as possible to guess the wrong part of

speech Sentence correction is performed on the words of the sentence, so that the user's candidate

sentences can have more semantically logical sentences to choose by sentence judgment. In the average

sentence similarity, the 25 sentences were tested with sentences of length 3, 5, 6 and 9. All are more than

80% similar.

Keyword(s):Sentence Analysis, Part-of-Speech Structure, BERT, Transfer Learning, Fine Tune

III
目錄
目錄......................................................................................................................IV

圖目錄..................................................................................................................VI

表目錄................................................................................................................ VII

第一章 緒論.................................................................................................... 1

1.1 問題與動機 ..................................................................................................... 1

1.2 目標與貢獻 ..................................................................................................... 2

1.3 論文架構 ......................................................................................................... 4

第二章 背景與相關研究................................................................................ 5

2.1 語言障礙中文語音辨識系統 ......................................................................... 5

2.1.1 應用 N-gram 改善語句建構 .................................................................................. 5

2.1.2 以 N-gram Word 為基礎之吶語症中文語句生成 ................................................. 5

2.2 開發平台 ......................................................................................................... 6

2.2.1 Python ..................................................................................................................... 6

2.2.2 CKIP Tagger ............................................................................................................ 6

2.2.3 PyTorch ................................................................................................................... 7

2.3 相關研究 ......................................................................................................... 7

第三章 語句判斷.......................................................................................... 10

3.1 架構與流程 ................................................................................................... 10

3.2 建構詞性結構資料庫 ....................................................................................11

3.3 原始語句與問題 ........................................................................................... 12

3.4 詞性結構比較 ............................................................................................... 14

3.4.1 斷詞與詞性結構 ................................................................................................... 14

3.4.2 詞性結構比較 ....................................................................................................... 15

IV
3.4.3 新增語句及語句詞性結構 ................................................................................... 17

3.5 基於 BERT MLM 的 Transfer Learning 方法 .............................................. 18

3.5.1 TL-BML model ..................................................................................................... 18

3.5.2 BERT..................................................................................................................... 20

3.5.3 Transfer Learning .................................................................................................. 24

3.5.4 Fine Tuning BERT Pre-trained Model .................................................................. 26

3.6 Sentence Checking Algorithm ....................................................................... 30

第四章 實驗結果與評估方法...................................................................... 33

4.1 實驗環境介紹 ............................................................................................... 33

4.2 Cosine Similarity ........................................................................................... 33

4.3 句子正確性評量 ........................................................................................... 37

4.4 句子刪除效果評估 ....................................................................................... 39

4.5 討論 ............................................................................................................... 41

4.5.1 句子正確性評量與句子刪除效果評估 ............................................................... 41

4.5.2 改善語句準確度 ................................................................................................... 42

4.5.3 使用 HSWD 推薦詞 ............................................................................................. 42

第五章 結論與未來展望.............................................................................. 44

參考文獻.............................................................................................................. 45

附錄...................................................................................................................... 48

V
圖目錄
圖 1. 語句判斷流程圖.............................................................................. 11

圖 2. 詞性結構資料庫.............................................................................. 12

圖 3. TOP 50 候選語句與最終候選語句 ................................................. 14

圖 4. 詞性結構比較架構圖...................................................................... 16

圖 5. 詞性結構比較流程圖...................................................................... 17

圖 6. 新增語句及語句詞性結構流程圖.................................................. 18

圖 7. TL-BML MODEL 架構圖 ................................................................. 20

圖 8. BERT 原始架構圖........................................................................... 22

圖 9. BERT INPUT REPRESENTATION ......................................................... 24

圖 10. TRANSFER LEARNING 架構圖 .......................................................... 25

圖 11. TRANSFER LEARNING FROM BERT ................................................... 29

圖 12. TL-BML 猜[MASK]範例 ............................................................... 30

VI
表目錄

表 1. FINE TUNE BERT MODEL - HYPERPARAMETER ................................... 29

表 2. 語句詞頻範例 ..................................................................................... 34

表 3. 語句平均相似度比較 ......................................................................... 35

表 4. 本文方法相似度提升率與平均提升率 ............................................. 37

表 5. 句子正確性分析表(25 句/組) ............................................................ 38

表 6. 句子正確性分析(百分比表示) .......................................................... 38

表 7. 句子刪除表 ......................................................................................... 40

表 8. 句子平均刪除表 ................................................................................. 41

VII
第一章 緒論
在日常生活中,說話這件事對於正常人來說是輕鬆容易的,只要透過胸腔呼

出氣流與唇舌間的變化,便可發出不同的音,說出各式各樣的語句。隨著科技日

新月異的發展,各家資訊大廠都有做語音辨識系統,如 : Google 語音和 Apple

Siri,方便了你我的日常生活。但對於吶語症者(Dysphasia) [1]而言,因患者肌肉

無力發聲,口齒含糊不清,使得溝通十分不便,幾乎無法正常說話。說出來的句

子無法字正腔圓與抑揚頓挫,一般人的耳朵聽不懂在說什麼,更何況是使用家喻

戶曉的語音辨識系統,絕對無法有效的辨識吶語症患者的語音。這些患者,為了

要與人正常溝通,若無語音辨識系統輔助,只能緩慢的一個字一個字的打出來,

非常不便利。

1.1 問題與動機
本篇論文延續[2,3]與[4],繼續研究應用深度學習技術於語言障礙的語音辨識

系統,在[2,3]中可以將語言障礙者的語音透過深度學習辨識出中文的音,再將中

文音轉換為文字,最後將文字組合起來成句子,顯示於 APP 上。由於語言障礙

者的語音辨識聲音收集不易,且標記困難,此外在錄音時有時發音與音量也不穩

定,這使得辨識出來效果不夠好。在[3]中語句建構句的部分提出句子比對,可以

讓使用者將曾經講過的話收集起來,未來只要使用者講過的語句在語句庫中,語

句辨識的準確率就會上升。在[4]中為了要將使用情況推廣到一般化,先使用網路

爬蟲將網路上的生活語料收集起來,把語句經由斷詞建立好 N-gram 詞庫,再經

由 N-gram 的輔助,提升語句建構的準確率。[5]提出以 N-gram 與先前建好的歷

史詞典資料去做結合,再透過 N-gram 雜湊表(N-gram Hash Table)去建構 N-gram

關係矩陣,最後依照 N-gram 關係矩陣去生成 Top 50 語句。

在以上的研究中因為目前在語音的辨識無法有效提高,我們只能靠語句的組

合[3,4,5]使最後產生的候選句接近吶語症者所表達的意思,再透過 APP 去做選

1
擇,將語句播放出來。在[5]中的句子是結合歷史資料與 N-gram 的方式生成候選

句,這類的語句雖然是根據固定的權重與機率去組合而出,並非完全由暴力法組

合出來,但有許多候選句並無符合我們日常說話的邏輯或是正確文法語意的修飾。

因此,本文想到可以先建立好正確語句的句子詞性結構,將由 N-gram 關係矩陣

生成的候選句子與正確的句子詞性結構去做比較,剔除掉不合乎正確詞性結構的

語句,暫存在新的候選語句名單中。此外,在本文設計的演算法中,加入 Transfer

Learning approach for BERT-based Masked Language model,以下簡稱 TL-BML

model,TL-BML model 是我們以遷移學習(Transfer Learning)中的微調(Fine Tune)

從 BERT 預練模型(BERT Pre-trained model)訓練而成,本文將這個語言模型當作

輔助,將錯誤的文法遮蓋起來,依靠 TL-BML 模型去猜出遮蔽的字,設法解決

某些音辨識結果不好,輔助單純用詞性結構比較的方法。最後,收集這兩個方法

的新候選語句,將候選語句上傳至 APP 畫面,提供吶語症患者使用。

1.2 目標與貢獻
在上一個小節中有提到,目前開發的語言障礙者的語音辨識系統,在音的辨

識準確度短時間內難以提升,語句的部分使用關聯度表單建立字與字之間的關聯,

好處是若新講得語句是使用者曾經講過的話或類似的話,其構句的準確度就會提

升,但是語句如果是完全新的話,其結果會不夠好;改成用 N-gram 的方式輔助

生成句子,透過音節辨識模組應用 N-gram 詞庫搜尋的方法,能有效提升正確率,

但也因此產生的問題,就是隨著語句長度變長,時間複雜度會隨著指數成長,效

率變差。

基於以上,本團隊在單音辨識結果之後,修改原始系統新加入 N-gram,以

1~4 gram 為基礎先組合出詞,再結合歷史資料與關聯性表單組合語句。由於生成

的語句只是以歷史資料出現的頻率當權重再乘上語音辨識結果來組合句子,比較

無考慮詞性結構與語義,所以本文接續生成 TOP 50 的候選語句在其之後增加詞

2
性結構比對[6]與基於 BERT 的語言模型[7]透過 Transfer Learning 訓練出來的 TL-

BML 模型作為輔助,希望能使最後產生的語句接近吶語症使用者想表達的話。

本文為了要做詞性結構比對,先將吶語症患者講過的話當作歷史文本,對這些句

子中的文字做斷詞 WS(Word Segmentation)與詞性標記 POST(Part of Speech

Tagging),這兩個動作皆是使用 CKIP Tagger1 Library 來執行,把詞性標記好的序

列存成詞性結構庫。首先,把候選句子的文字各別做斷詞,接著斷完的詞再做詞

性標記會形成一個詞性順序的序列,將這個序列與事先建立好的文法結構去做比

對,去除對不上的,將比較的結果暫時存入新的候選語句名單中。除此之外,為

了避免中文字可能出現轉品修辭[8],在不同句子或使用情境改變了原本的詞性,

或者有些字的音辨識度不好,本文在演算法中設計,跟正確的文法去比較,找出

候選句比對不上的文法位置回頭在原句子相對位置的詞用[MASK]這個 Token 取

代,在利用 TL-BML 語言模型去猜出[MASK]的字,將新的語句也放入新的候選

語句名單中。最後,將新的候選名單中的候選語句回傳到 APP 的畫面。

本文的貢獻在於希望能透過 NLP(Natural Language Processing)的方法,在[5]

生成完候選句子之後加上詞性結構比較挑出詞性結構正確的語句,此外若遇到在

語句中有部分語句詞性不正確的字詞,本文使用 TL-BML 模型去猜出錯誤詞性

的字詞盡可能的去做語句修正,希望能使得新候選語句與正確答案語句的語句相

似度提升,讓最後候選語句能輸出比較有邏輯句子或符合日常生活對話提供給吶

語症患者去做選擇。本文將 CKIP 提供的繁體中文 BERT 語言模型作為 Pre-

trained model 藉由 Transfer Learning 中 Fine Tune 這項技術訓練出我們所需的模

型也就是 TL-BML 模型,這兩個模型去做比較,Fine Tune 完的結果有略好一點。

在語句的測試評估中,雖然最後的候選句子實際使用上無法一字不差,每次都百

分之百正確,但在測試的結果中在特定的情境句子相似度能接近百分之八十,可

讓吶語症患者有好的最基本溝通體驗。

1
https://ckip.iis.sinica.edu.tw/project/ws

3
1.3 論文架構
本篇論文的架構如下,第一章介紹問題與動機以及本文目標與貢獻。第二章

介紹了相關研究,會先介紹語言障礙的語言辨識系統之架構與流程,接著介紹使

用的開發平台與 NLP 中和本文相關的研究。第三章詳細介紹了本文如何建構詞

性結構庫與詞性結構比較,並且會介紹如何運用 Transfer Learning 中 Fine Tune

技術去訓練適合我們自己的模型,最後將詞性結構比較與語言模型去做結合的語

句判斷演算法。第四章為語句評估方法,使用句子相似度、句子正確性評量以及

句子刪除評量去檢驗實驗結果的好壞。最後在第五章是本文之結論與未來展望。

4
第二章 背景與相關研究

2.1 語言障礙中文語音辨識系統
本文接續[2,3]所創建的應用深度學習技術之語言障礙中文語音辨識系統,系

統架構主要為 Client-Server,由 RESTful API2為溝通橋梁,將 Client 與 Server 串

聯。在 Client 端有一台智慧型手機搭載語音辨識系統的 APP,內有 UI 介面方便

使用者使用;系統另一端為 Server 端,主要功能為將 APP 收集到的語音由

RESTful API 傳到 Server 去做辨識,Server 辨識完成之後會組合成候選句子,再

透過 RESTful API 回傳到智慧型手機的 APP 上,APP 上的介面會顯示候選句子,

提供語言障礙者去選擇自己想表達的語句。

2.1.1 應用 N-gram 改善語句建構


接續[2,3]後從音節辨識模組辨識完的輸出結果,即為 Top n 的候選音節,到

N-gram 詞庫搜尋詞來組合候選句子。假設使用者說了一個長度為 L 以 2-gram 為

例子,會先去讀取事先建好以 JSON 格式儲存的 2-gram 詞庫字典,之後在所有

相鄰兩字的排名組合中,搜尋詞是否存在於詞庫中。若配對成功,則為候選句的

候選詞,最後將這些候選詞組合成句子。

2.1.2 以 N-gram Word 為基礎之吶語症中文語句生成


在[5]中會先將吶語症患者先前講過語句的文字透過 CKIP Tagger 所開發的

斷詞 library 將句子做斷詞,分為 1 ~ 4 個 term,存放至 N-gram Terms。另外,還

建構了 HSWD(Historical Successive Words Dictionary),這是用來記錄某個 term 在

整個文本資料中後文出現的機率。吶語症患者從[2,3]所開發的系統,透過 APP 接

2
http://ihower.tw/log/archives/1542

5
收至 Server 端,先做完語音辨識後,各別有每個字語音辨識的機率,再透過 N-

gram Terms 與 HSWD 用 N-gram Hash Table 以 Hash 的方式合併再一起,最後會

形成 N-gram 關聯矩陣(N-gram Candidate Matrix)。N-gram Candidate Matrix 記錄

著字詞間的關聯,根據 N-gram Candidate Matrix 生成出候選句子。

2.2 開發平台

2.2.1 Python
本文使用 Python 來撰寫程式,Python 是一種易閱讀、易學習、功能強大的

程式語言。它有著簡單且有效的方法實現物件導向,除此之外,Python 直譯的特

性使得它可跨足在多個平台上,快速開發應用程式。函式庫(Library)對於 Python

來說是十分重要的存在,其豐富的函示庫可以使用前人包裝好的模組,讓開發者

可以更快速去開發所需的功能,這也讓 Python 這個程式語言成為熱門主流的原

因。

2.2.2 CKIP Tagger


CKIP3(Chinese Knowledge and Information Processing)為中研院資訊所中專門

研究中文自然語言處理的單位,主要研究方向為 : 自然語言理解、知識表達、知

識擷取、聊天機器人。CKIP 還提供國內繁體中文自然語言處理工具、資料、開

發架構,而 CKIP Tagger 就是由他們所提開發。CKIP Tagger 內包含斷詞(Word

Segment, WS)、詞性標記(Part of Speech Tagging, POST)與實體辨識(Named Entity

Recognition, NER),是以深度學習模型為基礎而成的 NLP 應用,訓練的文本資料

為中央社與中文維基百科這兩個大量文本資料為主。本文所使用的 Library 為

CKIP Tagger 中的斷詞與詞性標記,會選擇使用這套系統是因為在繁體中文中

3
https://ckip.iis.sinica.edu.tw/

6
CKIP Tagger 的準確率比結巴(Jieba)系統準確率還更高,此外,這個 Library 不會

限制句子的長度,也不會自動增/刪/改輸入的文字,有較高的可靠度。

2.2.3 PyTorch
PyTorch4 在 2017 年為 Facebook AI 團隊基於 Torch 而開發而成,與 Tensorflow

一樣是一種深度學習的計算框架,支持著各種深度學習的演算法。PyTorch 有著

物件導向的風格,在設計模型的時候,要先繼承 PyTorch library 裡面的類別(Class),

再基於這個 Class 去修改新增自己所需的模型。若是熟悉 Python 的使用者,用起

來會比較容易去適應,編寫上也看起來比較清晰易理解。

2.3 相關研究
在自然語言處理的領域中,語言模型在處理文本或是語句是很常被拿出來做

許多相關應用,[9]描述了基於詞性依賴結構的性質設計了一個語句實現器,這個

方法是以對數為基礎的模型,在文中提到其主要結構來自詞性文法樹狀結構,先

以樹根和節點的相對順序決定相依關係,接著再透過對數線性模型選擇與相對順

序的最佳線性化,整個詞性依賴結構樹透過線性劃分各個子樹,子樹中分為兩組,

向前關係與向後關係,可視為前後文上下關係,在實驗結果中也有不錯的結果。

在[10]中給出 N-gram 的概念,它是一種以 n-1 階馬可夫模型為基礎的機率模型,

根據語句中在 n 個詞共同出現的統計資料中,去預測已知文字後面可能出現的

文字,適合用短句子的文字預測。在[11]提到 N-gram 缺點在於只適合字與字之

間的短距離,如 3-gram,能協助確定 3 個字之間的關係,但多個字形成的 gram

可能容易形成無意義的句子,在未來在 N-gram 的基礎之下再持續研究,提出改

善方法。

4
https://pytorch.org/

7
近年研究中語言模型也用在詞性標記,[6]是中研院開發的詞性標記系統,在

大量的文本資料中詞性標記是一件耗時且繁瑣的工作,以中文字來說有 40 幾種

詞性分類,更別說在修辭學中相同的詞在不同語句會有不同詞性的轉品修辭。因

此,能快速的幫繁體中文做詞性標註且可靠度高的系統是十分有必要的。在文中

設計的馬可夫二元模型(Markov Bi-Gram model)為成本效益最高的標記準確率,

效率也最好。隨著深度學習的方法提出來後,各大領域發表的論文都靠著深度學

習技術遍地開花,百花齊放,當然自然語言處理也不會缺席。論文[12]提出了基

於長短期記憶模型(Long Short-term Memory, LSTM)的序列標記模型,其中帶有

條件隨機場(Conditional Random Field, CRF)的雙向 LSTM(Bidirectional LSTM-

CRF),用於 NLP 相關標記工作,如 : POS、NER 等,都有不錯的準確性,而且

語之前的方法相比對詞嵌入的依賴性較小。

深度學習的方法運用在句子生成[13],文中使用 LSTM 的架構,先將詞做詞

嵌入(Word Embedding),將文字轉換成向量,將這些向量先送入 LSTM Layer 再

送入 Bi-LSTM Layer,透過雙向的上下文組合這些會生成相關的詞,多個詞最終

回形成語句。在[14]把兩種主流的神經網路 CNN 有著特徵擷取的優勢與 LSTM

處理時間序列相依特徵的 RNN(Recurrent Neural Network)去做結合,將 CNN 的

激活函數(Activation Function)去除,後面接上 LSTM,重新命名為 NA-CNN-COIF-

LSTM。在文中使用 NA-CNN-COIF-LSTM 這個模型做語句文本分類,分類語句

評論的主觀或客觀語義,在最後的實驗中 NA-CNN-COIF-LSTM 比傳統的 LSTM

的準確率高。除了監督式學習(Supervised Learning)的方法之外,語義分析也可以

使用非監督式學習(Unsupervised Learning),[15]使用 Word2vec 的技術去做語句

情感分析,Word2vec 是一種非監督式學習的模型,透過大量的文本資料,將字

詞用數學向量的方法,映射到另一個空間,在這個向量空間餘弦定理的方式判斷

他們的語義相似度。在文中的結論,[15]提出的方法從 Anthology Collections(ACL-

Embeddings)中使用 Word2vec 來建構句子向量(Sent2vec),建立好的句子向量形

成一個特徵空間,最後在將特徵送進支援向量機 (Support Vector Machine, SVM)

8
去做分類,實驗結果表示在分類正面語句與負面語句是有效的。

近年來又提出一些更厲害的語言模型,Google 在 2017 年提出了適合用在機

器翻譯的模型架構 Transformer[16],Transformer 是一個基於自注意力機制(self-

Attention Mechanism)的網路架構,因為 RNN 難以實現平行運算,因此 Google 捨

棄 RNN 使用 Transformer 平行計算,使得 Transformer 可不必依序輸入利於計算。

最後,Transformer 可以用來處理 NLP 的相關應用,如 : 語義分析,語音翻譯等。

在 2018 年,Google 在 Transformer 的基礎之上提出了 BERT(Bidirectional Encoder

Representations from Transformers)[7],BERT 主要的架構為 Transformer 的前半部

Encoder,在 Transformer 中 Encoder 可以把輸入的詞轉成向量,將轉換完成的向

量送進 Decoder,Decoder 讀取這些向量的資訊後可以生成我們所需的輸出。BERT

為一個 Encoder,它的主要任務為 : 我們事先把輸入句子的文字處理成一串

Embedding 的序列丟進 BERT 之後,BERT 會輸出另一個 Embedding 的序列,我

們可以根據這個輸出的序列,進一步丟進其他模型去使用,最後完成我們所需的

任務。在自然語言處理中,常會有不同的任務,若每次針對一個任務而去訓練其

實十分費時,甚至有一些任務的資料收集不易,人工標記也花時間。好在 BERT

還有一個優勢,因為它是由大量未標記的文本資料所訓練出來的,所以我們可以

將公開的預訓練模型(Pre-trained Model)作為一個通用的模型,再藉由遷移學習

(Transfer Learning)的方法將這個訓練好的 BERT 模型去做微調(Fine Tune),視自

己任務需求,轉換成適合的模型,而本文正是使用此方法來訓練我們自己的語言

模型。

基於以上的相關研究,大多為語句的詞性文法、語義分析都用在針對部分主

題去做應用,此外在 BERT 相關的語言模型比較常在比較兩句關係、問答系統、

詞分類等,因此本文結合文本詞性結構與基於 BERT 的 Pre-trained model 透過

Transfer Learning 中的 Fine Tune 訓練出來的語言模型納入演算法中,將[5]生成

的 Top 50 後選語句透過語句判斷,希望讓候選句子有更有邏輯以及符合日常對

話的選擇提供給吶語症患者使用。

9
第三章 語句判斷

本論文希望能透過語句的詞性結構與 Transfer Learning approach for BERT-

based Masked Language model(TL-BML model)去做語句判斷,將[5]的生成候選語

句透過演算法使得最後的候選句子能更符合日常說話的語義與邏輯。本節會先介

紹方法架構與原始語句的問題,接著是用詞性結構去做詞性結構比較,最後是使

用 Transfer Learning 去訓練 BERT Pre-trained model 與語句判斷演算法。

3.1 架構與流程
圖 1 為本文流程架構圖,首先,在語句建構[5]中使用者的語音會先轉成

MFCC(Mel-Frequency Cepstral Coefficients)轉換為頻譜圖,由 VTM(Voice Tailoring

Model)切割成每個字,送入 KWS-AM(Key Word Spotting Acoustic Model)深度學

習模型去做各個字的辨識。再來進到語句生成,透過 HSWD 與 N-gram Terms 跟

N-gram Hash Table 去做結合,建構出 N-Gram Candidate Matrix,再依據此關聯去

組合出 Top 50 的候選句子。

本文的輸入為[5]生成的 Top 50 候選語句,首先將每個候選語句先做斷詞

(Word Segment, WS)以及詞性標記(Part of Speech Tagging, POST),接著我們會將

斷詞的結果先暫時存在 WS 這個 list 中,而詞性標記的結果會暫時存在 CS 這個

list 中。接著我們去計算在 CS 這個 list 中所需要的詞性結構長度為何,然後從事

先建立好的詞性結構庫(POST Structure Dictionary)找到對應的長度,存進 PSL

(POST Structure Length)這個 list。詞性結構的資料型態皆為一個 list,裡面儲存詞

性結構序列,將 Top 50 的詞性序列也就是 CS 這個 list 與 PSL list 去做比較,將

比對相同的語句先暫存至 ANS list,即為新的候選語句名單。

在詞性結構比較的過程中,會有些語句是不完全正確的比對,本文將這些語

句去做處理修正,將詞性結構不對的字詞用[MASK]這個 Token 給取代,透過 TL-

10
BML 模型根據語句文字的上下文去猜出[MASK],猜出的字詞取代再取代

[MASK],成為新的語句。將新句子也放入 ANS list 暫存起來。最後,將這些暫

存的新候選語句蒐集完成,回傳到 APP 畫面供吶語症患者使用。其他詳細說明

會在 3.6 節去做說明。

圖1. 語句判斷流程圖

3.2 建構詞性結構資料庫
本文以 Python 程式去撰寫爬蟲程式,透過網路爬蟲將網路 PTT 新聞版中的

1000 篇新聞內容,經過文字前處理,去除非繁體中文文字,保留長度為 3~10 的

句子。我們將語句經由 CKIP Tagger Library 去做斷詞與詞性標記[17],接著抽出

詞性標記的部分,形成一連串的序列則每一句詞性標記的序列就是該句的詞性結

構,除此之外,本文也將吶語症患者講過的語句歷史資料經由上述方式取出語句

詞性結構。我們將這些序列依長度分門別類,分為長度為 2 到長度為 10 的詞性

結構序列,如圖 2 所示。這樣的好處是當我們的輸入為 Top 50 的候選句子,將

語句斷完詞與詞性標記後所形成的序列有長有短,只要去統計計算候選語句的詞

性標記序列長度,就可以去對應的長度尋找正確的詞性結構,如 : 「我想要吃午

11
餐」做完斷詞與詞性標註會變成[我(Nh 代名詞), 想要(VE 動作句賓動詞), 吃(VC

動作及物動詞), 午餐(Na 普通名詞)],這樣是長度為 4 的序列,所以只要到長度

為 4 的列表去找詞性文法結構,這樣的好處是不用每次都從第一個詞性結構序列

開始去做比對,其好處可以加快效率。其他詳細詞性名稱與詞性結構序列皆在可

在附錄查詢。

圖2. 詞性結構資料庫

3.3 原始語句與問題
在[5]中,先從 HSWD 與 N-gram Terms 跟 N-gram Hash Table 去做結合,去

建構出 N-Gram Candidate Matrix,再依據這個 Matrix 的關聯性去組合出 Top 50

的候選句子。這些候選句皆是透過歷史資料的機率以及權重去組合而成,以詞為

單位去建構語句。在圖 3 中為 Top 50 候選語句與做語句判斷後的最後結果,以

12
「我準備要錄音」為例 : 結果可能組出["我準備要錄音", "我準備要我一", "我

準備要我以" …, "不是你在錄音"],可以觀察到在這些 Top 50 的候選句子中有些

語句是通順有邏輯的,而有一些是在句子中的部分字詞不正確,語句不通順。本

文就是要在這 Top 50 的候選句子中去做語句判斷,挑出詞性結構正確的語句放

入新的候選語句並且將詞性結構不完全正確的語句透過語言模型盡可能的猜出

正確的字進而去做修正語句,使得最後剩下來的候選語句比較接近日常講話的邏

輯與語意。

像是圖 3 "我 準備 要錄音"其詞性結構為['Nh'(代名詞), 'VF'(動作謂賓動詞),

'D'(副詞), 'VB'(動作類及物動詞)],這個詞性結構在我們事先建立的詞性結構庫比

對的到,因此就把這句話放入新的候選語句 list 中; 在"我 不 一 用 語音"其詞

性結構為['Nh'(代名詞), 'D'(副詞), 'Neu'(數量詞), 'P'(介詞), 'Na'(名詞)],而詞庫中

正確的語句詞性結構為['Nh'(代名詞), 'D'(副詞), 'SHI'(常用詞:是), 'P'(介詞), 'Na'(名

詞)],比較出來後發現'Neu'和'SHI'比對不上,將'Neu'的字詞 "一" 用[MASK]取代,

接著使用 TL-BML 模型去猜[MASK]的為 "是",所形成的新語句為"我不是用語

音",最後將修正過後的新語句放至新的候選語句。我們將所有 Top 50 候選語句

判斷完成之後,輸出新候選語句結果。

13
圖3. Top 50 候選語句與最終候選語句

3.4 詞性結構比較

3.4.1 斷詞與詞性結構
在自然語言處理中,首先要做的第一個前處理一定是把一段文本或句子去做

斷詞,因為字詞是構成語言的最小單位。然而,中文字總共約 4 萬個字,其中有

1 萬個字便可表達全部的意思,而我們日常常用的字大該約 2000 字左右,中文

的常用字詞也從這些 2000 字所組合而成,因此斷詞是個繁瑣的任務。中文的詞

是由單個字為單位所組成,不像是英文中詞與詞之間由空白所間格,因此本文選

用 CKIP Tagger 中的斷詞 library,在[5]透過 N-Gram Candidate Matrix 生成 Top 50

的語句之後,將這些候選句先做斷詞的動作。斷完詞之後,我們接著要做詞性標

記。所有的語句,無論是中文還英文都會有個固定的詞性結構,以「我喝奶茶」

為例子,斷詞後會變成["我", "喝", "奶茶"],加上詞性標記則形成[我(Nh), 喝(VC),

14
奶茶(Na)]。"我"在這邊為代名詞(Nh),在語句中代表主詞;"喝"在這個句子為動

詞(VC),在語句代表動作及物動詞;"奶茶"在句中則為名詞(Na),語句中代表受

詞。在一般日常對話的正常語句中,主詞後面可能接及物動詞,表示某人做某動

作,最後因為是及物動詞則後面會加受詞來接受這個動作,所以會形成" Nh + VC

+ Na ",而不會有" 我(Nh) + 奶茶(Na) ",本文就是以這樣的序列順序做為詞性

結構。

3.4.2 詞性結構比較
圖 4 為文法比較架構圖,最左邊為本文的輸入,來自[5]生成出來 Top 50 的

候選語句。首先,先將輸入做斷詞以及詞性標記,將詞性標記完的語句取出來放

置另一個 list 暫時儲存。接著各別去計算詞性標記序列的長度,再去 POST

Structure Dictionary 找出所需長度的 list,將這些型詞性結構與做完詞性標記的語

句序列去做比較,保留相同結構的句子,將結果輸出。以圖 5 為例,假設我們 Top

50 候選語句為["沒有一張信用卡", "只有一張信用卡", "只有一張信用地" , … , "

沒有比較一用卡", "我有一張信用卡"],先各別將這些語句做斷詞與詞性記,則會

變成

[[沒有(Cbb), 一(Neu), 張(Nf), 信用卡(Na)],

[只有(Cbb), 一(Neu), 張(Nf), 信用卡(Na)],

[只有(Cbb), 一(Neu), 張(Nf), 信用(Na), 他(Nh)],

…,

[沒有(D), 比較(VC), 一(D), 用(VC), 卡(Na)],

[我(Nh), 有(V_2), 一(Neu), 張(Nf), 信用卡(Na)]]。

從這個例子來說,可發現是序列長度為 4 和 5,所以我們就去 POST Structure

Dictionary 去找對應的長度的詞性結構與詞性標記完的候選句子去做比對,如 :

15
[沒有(Cbb), 一(Neu), 張(Nf), 信用卡(Na)]、

[只有(Cbb), 一(Neu), 張(Nf), 信用卡(Na)]

的詞性結構序列皆為[Cbb, Neu, Nf, Na]的組合,則放入另一個專門存新的候選語

句的 list,從第一個句子比對到最後一個句子,收集好正確的語句先做暫存。

圖4. 詞性結構比較架構圖

16
圖5. 詞性結構比較流程圖

3.4.3 新增語句及語句詞性結構
使用者透過語音辨識系統,在 APP 畫面會顯示 Top10 的候選語句提供選擇,

若在 APP 顯示 Top 10 的候選語句畫面中找不到使用者想表達的句子,則可以選

取 Top 10 中最接近使用者想表達的句子透過打字的方式去做修正或直接在輸入

列輸入正確語句,系統會將這句新增的語句新增至語料庫同時也會新增語句的詞

性結構,如圖 6 所示。首先,使用者透過 APP 新增語句,接著透過 Restful API

回傳給 Server,Server 端會自動增加語料庫與更新 HDFS 中上下文字詞出現的頻

率。除此之外,Server 同時還會自動更新語句詞性結構,將語句做斷詞以及詞性

標記,取出詞性結構後去計算出詞性結構的長度,到對應長度下的詞性結構表新

增資料。

17
圖6. 新增語句及語句詞性結構流程圖

3.5 基於 BERT MLM 的 Transfer Learning 方法


本節會介紹我們將中研院的 BERT 繁體中文語言模型當作 Pre-trained 模型,

藉由 Transfer Learning 的方法,把模型做 Fine Tune 完後訓練出 TL-BML model。

首先會先介紹 TL-BML model 的架構,接著是原始 BERT 的架構與其 Input 的相

容模式,再來是介紹為何要使用 Transfer Learning 以及其好處,最後是我們如何

將 Pre-trained 模型去做 Fine Tune。

3.5.1 TL-BML model


在 Pre-trained BERT 中,其中一個訓練過程的任務是 MLM(Masked Language

Model)[7],也就是把一句話中部份的詞透過 BERT 中特殊的 Token "[MASK]"去

遮蔽,透過前後文去猜測[MASK]有可能的字詞是什麼,而本文參考[7, 18]將 Pre-

trained BERT model 藉由 Transfer Learning 中 Fine Tune 的方式去訓練我們的模

型,並將 MLM 的部分拿來使用,本文稱為 Transfer Learning approach for BERT-

based Masked Language model,以下簡稱 TL-BML model。

圖 7 為 TL-BML 模型架構圖,最下面為一個句子,𝑊1 ~ 𝑊5 為一句話中的

18
詞。在圖中假設𝑊4 為被遮蔽,用[MASK]所取代,接著會進到 Encoder 去做編碼

轉換成電腦看得懂的 Vector。接著,進到下一層分類層(Classification Layer),這

層是由全連接層(Fully Connected Layer)、激勵函數(Gaussian Error Linear Units,

GELU) (式 1) 與正規化 Normalize 所組成,最後透過 Softmax 函數 (式 2) 去計

算被遮蔽詞的機率。我們用實際的例子來描述 TL-BML model 作動流程,假設有

個句子的正確答案為「我想上廁所」,若"煩"這個字詞被遮蔽則會變為 ["我想

[MASK]廁所"],則 TL-BML model 就會由 (式 3) 計算出被遮蔽的字詞可能的結

果,則結果可能為 : [MASK] = 上(0.75), 去(0.55), 要(0.14)… 。其中,猜[MASK]

的結果為"上(0.75) "表示說被遮蔽的字根據上下文的關係有 75%的可能答案是"

上";猜[MASK]的結果為"去(0.55) "表示說被遮蔽的字根據上下文的關係有 55%

的可能答案是"去",以此類推。

𝐺𝐸𝐿𝑈(𝑥) = 𝑥 × 𝑃(𝑋 <= 𝑥) = 𝑥 × 𝜙(𝑥), 𝑥 ∼ 𝑁(0,1)

≅ 0.5𝑥 (1 + tanh (√2/𝜋(𝑥 + 0.044715𝑥 3 ))) (1)

𝑧
𝑒 𝑗
𝜎(𝐳)𝑗 = ∑𝐾 𝑧𝑘 for 𝑗 = 1, … , 𝐾 (2)
𝑘=1 𝑒

𝑃(𝑋 (𝑡+1) ∣ 𝑋 (𝑡) , … , 𝑋 (1) )

其中 𝑋 (𝑡+1) 可以為任何字在 𝑊 = {𝑤1 , … , 𝑤𝑛 } 中 (3)

19
圖7. TL-BML model 架構圖

3.5.2 BERT
BERT[7]是基於 Google[16]中的 Transformer 架構基礎之上所提出來的模型,

其架構為 Transformer5中的 Encoder,如圖 8 所示。首先,Input 為一對字詞,這

些字詞送進模型之後會先經過 Embedding,讓 Input 轉換成向量,接著會先與

Positional Encoding 去做相加這個動作。Positional Encoding 是使用三角函數 Sin

與 Cos 去進行位置編碼[7,16],其好處是因 Sin 與 Cos 函數這兩個函數可表示兩

向量間的關係,並且不受限於長度限制,能表現不同詞語間的相對位置。此外,

Sin 與 Cos 函數的上下界於[0, 1],函數循環週期穩定。

𝑃𝐸(𝑝𝑜𝑠,2𝑖) = sin(𝑝𝑜𝑠/100002𝑖/𝑑model ) (4)

5
https://medium.com/ching-i/transformer-attention-is-all-you-need-c7967f38af14

20
𝑃𝐸(𝑝𝑜𝑠,2𝑖+1) = cos(𝑝𝑜𝑠/100002𝑖/𝑑model ) (5)

Input Embedding 與 Positional Encoding 相加完之後下一層進到兩個子層,分

別為 Multi-Head Attention、Feed Forward。首先,會先進到 Multi-Head Attention,

這層的計算先從 Self-Attention Mechanism[16]介紹起。Self-Attention Mechanism

(式 6)有三個參數,分別為 Q(Query) : 當下的詞向量、K(Key) : 序列中所有的詞

向量與 V(Value) : 實際的序列內容。從式(6)可得知,Q 與 K 先做內積,接著除

以sqrt(𝑑𝑘 ),其中𝑑𝑘 為 Q, K 之維度,其目的為避免在做 Softmax 計算時內積值過

大。再回到 Multi-Head Attention,如式(7)所示,W 為各自的權重,R 為實數空

間,𝑑𝑚𝑜𝑑𝑒𝑙 為模型的內部向量的維度,其計算與 Self-Attention Mechanism 相同,

只是把 Q, K, V 拆成多個低維度向量,接著做上述提到的計算後再把這些 head 輸

出再串接起來做線性運算,其好處是可以讓各個 head(Q, K, V)更關注在不同的資

訊。

𝑄𝐾𝑇
Attention(𝑄, 𝐾, 𝑉) = softmax ( )𝑉 (6)
√𝑑𝑘

MultiHead(𝑄, 𝐾, 𝑉) = Concat ( head 1 , … , head ℎ )𝑊 𝑂 (7)

𝑄 𝑄
這裡的 head 𝑖 = 𝐴𝑡𝑡𝑒𝑛𝑡𝑖𝑜𝑛(𝑄𝑊𝑖 , 𝐾𝑊𝑖𝐾 , 𝑉𝑊𝑖𝑉 ),而 𝑊𝑖 ∈ 𝑅 𝑑𝑚𝑜𝑑𝑒𝑙 ×𝑑𝑘 ,

𝑊𝑖𝑘 ∈ 𝑅 𝑑𝑚𝑜𝑑𝑒𝑙 ×𝑑𝑘 , 𝑊𝑖𝑉 ∈ 𝑅 𝑑𝑚𝑜𝑑𝑒𝑙 ×𝑑𝑣 , 𝑊 𝑂 ∈ 𝑅ℎ𝑑𝑣 ×𝑑𝑚𝑜𝑑𝑒𝑙

經過 Multi-Head Attention 之後,會進到 Add & Norm layer,將前一層的輸出

Sublayer 與輸入相加(式 8),我們稱 Residual Connection,再做 Layer Normalization。

最後進到 Feed Forward layer,做線性運算(式 9),其中 W 為權重,而 b 為 Bias

21
之後送入 ReLU(Rectified Linear Unit, ReLU)(式 10),再做一次 Add & Norm 輸

出。

LayerNorm(x + Sublayer(x)) (8)

FFN(x) = max(0, x𝑊1 + 𝑏1 )𝑊2 + 𝑏2 (9)

f(x) = max(0, 𝑥) (10)

圖8. BERT 原始架構圖

介紹完 BERT 的模型架構後,接著介紹 BERT 模型所需的三個輸入。在訓練

BERT 的時候,模型無法直接讀取文本文字,所以必須先轉換符合 BERT 的格式。

22
模型所需的三個不同嵌入 :

(1) Token Embeddings : 做 Word Embedding,BERT 的一開始嵌入,將詞轉

換成向量,能粗略的表現詞的特徵。

(2) Segment Embeddings : 目的為輸入時方便分辨不同的句向量,只要分辨

Token 就能知道是屬於哪個句子。

(3) Position Embeddings : 標記序列順序的相對位置,因為 BERT 會同時輸

入向量去做平行計算,並非像傳統 RNN 是按照順序送入輸入,其目的是

為了得知序列的前後順序,需要去做位置標記。

圖 9 為上述的示意圖,假設在一開始的 Input 中有兩句話分別為「今天天氣

,先經過斷詞前處理會形成[[CLS],"今天", "天氣", "很熱


很熱」與「我想要吃冰」

", [SEP], "我", "想要", "吃", "冰"]],其中[CLS]在 BERT 中是一個特別的 Token 表

示為句子的開頭,而[SEP]這個 Token 代表換下一個句子。Input 送進模型之後,

先 做 Token Embedding , 將 詞 嵌 入 成 向 量 讓 機 器 看 得 懂 ; 接 著 是 Segment

Embedding,藉由[CLS]與[SEP]的表示可得知兩段不同的序列,在圖中分為 A, B

段;最後是 Position Embedding,標記序列的順序,在圖中因為是長度為 9 的序

列,所以從[CLS]開始是 0、"今天"是 1,以此類推至"冰"是 8。本文在後續的章

節會介紹在 Fine Tuning BERT pre-trained model 時所需的三個輸入會再去做對應

介紹。

23
圖9. BERT Input Representation

3.5.3 Transfer Learning


在本文目前遇到的問題是吶語症患者比較少數,資料蒐集較不易。因此,我

們希望有個通用的模型,我本文以 Pre-trained 模型為基礎,用 Transfer Learning

的技術訓練一個適合我們的模型。在[18]中提到,Transfer Learning 是將已訓練好

的模型與參數,轉移到另一個新模型上,這使得我們不必很辛苦的從頭到尾去訓

練一個新模型。在 Transfer Learning6中有不同的方法,分別為 Based on instance

or said sample、Based on features 與 Based on model。在 Based on instance or said

sample 這個方法中意指的是透過權重的分配,可以從源域(Source Domain)轉移到

目標域(Target Domain),若 Source Domain 中有一個樣本和 Target Domain 中某個

樣本非常相似,則可以調大此樣本的權重。在 Based on features 意指的是將 Source

Domain 與 Target Domain 的特徵轉換到相同的空間,假設兩個 Domain 上的特徵

有很大的差異,那我們可以將兩個 Domain 的特徵映射到相同的空間,在相同空

間之下會比較容易在這兩個 Domain 研究相關的特徵和性質。最後是 Based on

6
https://medium.com/%E6%88%91%E5%B0%B1%E5%95%8F%E4%B8%80%E5%8F%A5-
%E6%80%8E%E9%BA%BC%E5%AF%AB/transfer-learning-
%E8%BD%89%E7%A7%BB%E5%AD%B8%E7%BF%92-4538e6e2ffe4

24
model,這個方法比較單純一些,就是讓 Source Domain 與 Target Domain 彼此間

的參數共享,假設一個已經訓練好且效果不錯的模型我們稱 Pre-trained model,

將這個 Pre-trained model 加入自己的少量資料,再修改一些參數,把模型拿去做

訓練,而本文也正是使用此方法。

Transfer Learning 的相關定義如下:

(1) Source Domain : 已學習到的 Domain。

(2) Target Domain : 欲進行訓練的 Domain。

(3) Task : 由目標函數與學習成果所組成,其意義代表最後的學習結果。

Transfer Learning 之中,有兩個 Domain,分別為 Source Domain 與 Target Domain。

在 Source Domain 裡會有 Function 稱𝐹𝑆 ,其主要的功能是用來完成𝑇𝑠 的任務,而

Target Domain 也同時存在一個 Function 稱𝐹𝑡 ,一樣必須依賴這個 Function 去完

成𝑇𝑡 。在本文中,我們就是透過 Source Domain 以及𝑇𝑠 的學習結果去做 Transfer

Learning,幫助 Target Domain 中的𝐹𝑡 去完成𝑇𝑡 ,也就是 Source Domain 中的參數

為大量文本資料所訓練出來的 BERT based ML model 參數,Transfer 到我們自己

的資料與模型,解決資料不足,無法訓練好的模型。

圖10. Transfer Learning 架構圖

25
3.5.4 Fine Tuning BERT Pre-trained Model
由於本文的資料收集不易,但希望能有個好的模型在語句判斷時能有好的修

正結果,因此我們藉由 Fine Tune 的優勢 :

(1) 快速的開發 : 不必從頭開始訓練模型,只需透過由相似的資料中訓

練完效果不錯的模型基礎之上,加入我們的資料以及微調的方式,

在少量的 Epochs 的訓練,就能快速開發屬於我們的模型。

(2) 少量的資料也能訓練出好模型 : Pre-trained model 也跟其他深度學

習模型一樣,需透過大量資料訓練,模型從 0 開始從頭訓練。若資

料不足的話,很難使得模型更加精緻。藉由 Transfer Learning 的方

式,只需在 Pre-trained model 之上的權重,加入少量的資料再進行

Fine Tune,就能使得我們訓練出不錯的模型。

在[19]中,基於 Pre-trained BERT 做 Transfer Learning,把 BERT 模型去做微

調(Fine Tune),在有限的資料下有明顯提高代詞解析的成效。在[20]使用 SciBERT

模型(BERT 模型的變形)作為 Pre-trained model,透過 Transfer Learning 的方法調

整了模型轉換成適合自己的模型,在詞性標記與關鍵句的語義分析比傳統 BERT

效果更好。本文參考[19,20]的相關方法,決定使用 Transfer Learning 將中研院公

布在 Hugging Face7上的 BERT 繁體中文語言模型作為 Pre-trained model,將我們

吶語症患者曾經講過的語句歷史資料轉換成 BERT 相容的模式與參數的調整去

做 Fine Tune,成為適合我們的模型,如圖 11 所示。

在上個小節有提到 Transfer Learning 有分 Source Domain 與 Target Domain,

在本文中,我們 Source Domain 中的 Source Data 為中研院透過中央社與中文維

基百科這兩個大量的中文文本資料,而 Target Domain 中的 Target Data 是我們自

己蒐集到吶語症患者說過的語句資料(1300 句)。做 Fine Tune 之前,我們必須將

資料先做前處理,符合 BERT 的相容模式。對應圖 9 在原始的 BERT 架構中,

7
https://huggingface.co/ckiplab/bert-base-chinese

26
Token Embedding 目的是要做 Word Embedding 也就是將詞轉換成向量,那在這

裡我們對應到的是 Token Tensors,每個 Token 的 Index vector,用於對應 Token

Embeddings。我們將每一個語句去做斷詞,每一句話的詞轉換成 Token Tensor,

這個步驟完成初步的 Word Embedding,每一個詞都看做是向量。

在 3.5.2 節 BERT 的介紹中有提到兩個特殊的 Token,分別為[CLS]與[SEP]。

[CLS]表示語句的開頭,用於標記序列的開頭,在語句的最後面插入[SEP]表示換

下一個句子。Segment Embedding 是用於輸入時分辨不同句向量,對應的 Segment

Token 用 0 和 1 表示,第一句每個詞都是 0,第二句每個詞都是 1。

最後是 Mask Tensor,又叫 Attention Mask,由於 BERT 這類 Sequence to

Sequence 模型,每次將序列送進去訓練時必須要固定長度,所以 Attention Mask

是用來告訴 BERT 哪個字詞為 Real Token,還是 Padding(Padding 為空白字元,

為了確保送進模型時每個輸入序列長度皆相同,在較短的序列中會使用 Padding,

保證在訓練的時候序列的長度一致)。

做完上述步驟的前處理之後,接著是 Fine tune 的部分。表 1 為 Fine tune 時

的 Hyperparameter 調整,這些超參數的調整參考[7, 22]。前處理的設定,將所有

語句文字轉換成 Tokenizer,Special Tokens 為 [CLS]和[SEP],Max Length 為序列

長度調整到 512,因為 BERT 可接受的最大序列長度為 512。Token Padding 等於

Max Length 目的是確保送進模型訓練時長度能一致,訓練的時候比較不會有問

題。最後是將 Attention Mask 設定為 True,用來分辨哪個為 Real Token。接著是

在訓練時的一些調整,本文將 Batch size 設 16[7],因我們的吶語症患者的歷史語

句資料沒有到很多,量也沒有到很大。除了考量到本身的硬體之外,Batch size 設

太大可能使得我們從 Pre-trained model 中載下來的模型權重從開始訓練到結束之

後,真正拿來使用時的模型泛化(Generalization)能力變差。Optimizer 本文參考

AdamW[21] , AdamW 是 由 Adam 加 以 修 改 而 成 , 雖 然 Adam 比 傳 統 的

SGD(Stochastic Gradient Decent)更快速的收斂,也適合用在高維的資料,但其缺

27
點在[21]提到說 L2 正規化8(減少特徵權重之間的差異,使得部分特徵的權重不要

太明顯)在 Adam 中無法效,因此提出 AdamW。AdamW 在權重更新步驟中應用

權重衰減正規化,取代在損失函數(Loss Function)處應用 L2 正規化,且在 BERT

的訓練中進行實驗,實驗結果收斂結果比 Adam 來的好。最後是 Learning Rate 與

Epoch,在[7, 22]中建議在 Fine Tune BERT model Learning Rate 大小不用調整太

大,約 5 × 10−5 即可,所以本文參考調整至10−5,避免過度擬合(Overfitting),

Epochs 設 5,因 Fine Tune 只需少量的 Epochs 去做訓練即可。

在訓練的過程中我們使用 MLM(Masked Language Model)[7]這個任務來去做

訓練,其作用是我們挖空部分的詞透過上下文預測挖空的部分應該填入什麼詞。

在 Token Sequence 中,隨機挑選 15%的字詞進行之遮蔽,以[MASK]這個 Token

去做取代,並訓練模型預測應該填入那些字詞,像是我們生活中做克漏字測驗一

樣。實際模型的運行步驟就是我們 BERT 輸出完的 Output 送進 Classification Layer,

並轉換成相同的維度大小,最後再經由 Softmax 函數去計算哪個字詞機率最高,

將機率最高的那個字詞取代[MASK]。將預測的結果與實際答案去做比對,計算

Cross Entropy (式 11) Loss,更新整個模型的權重。整個 Epochs 的訓練次數跑完

訓練出來的模型即是本文的 TL-BML 模型,此模型用於在整個語句中去猜出詞

性不對的字詞,修正語句。

H = ∑𝐶𝑐=1 ∑𝑛𝑖=1 −𝑦𝑐,𝑖 𝑙𝑜𝑔2 (𝑝𝑐,𝑖 ) (11)

8
https://ithelp.ithome.com.tw/articles/10219648

28
圖11. Transfer Learning from BERT

表 1. Fine Tune BERT model - Hyperparameter

Fine Tune BERT model - Hyperparameter

Tokenizer

Special Tokens Max Length Token Padding Attention Mask

True 512 Max Length True

Training

Batch size Optimizer Epochs Learning Rate

16 Admw 5 10−5

在訓練完 TL-BML 模型之後,本文舉一個實際的例子來看 TL-BML 猜出

[MASK]的範例。如圖 12 所示,在候選語句中假設被遮蔽的結果為"我想要[MASK]

午餐",TL-BML 這個模型會根據[MASK]的上下文,再經由上述所說的使用

Softmax 函數去計算出可能填入詞的機率猜出[MASK]的結果。在圖 12 中,我們

取 Top 3 的結果,可以看到第一個猜完的結果[MASK] = "的",其機率約為 0.532,

所以經由修正過後的句子為"我想要的午餐";第二個猜完的結果[MASK] = "吃",

其機率約為 0.154,修正過後會變為"我想要吃午餐";第三個猜完的結果[MASK]

= "中",其機率約為 0.070,修正過後會變為"我想要中午餐"。在語句判斷中,這

29
些猜出來的結果經由重新修正語句之後,我們將新的語句存進新的候選句中,其

他詳細的做法會在 3.6 中的演算法介紹。

圖12. TL-BML 猜[MASK]範例

3.6 Sentence Checking Algorithm


當使用者講了一個句子,會先經過辨識系統與語句生成產生 Top 50 的候選

語句,其中 Top 50 的候選語句就是我們的 Input。以下要說明 Algorithm 1 Sentence

Checking 這個演算法的流程。生成的 Top 50 候選為 Input,第 1 行是先宣告 CS,

WS, ANS 這三個空 list,首先我們要先對這些語句做前處理,將候選語句做斷詞

與詞性標記,詞性標記的結果用 CS 這個 list 所儲存,𝐶𝑆1,1 , 𝐶𝑆1,2, …, 𝐶𝑆𝑛,𝐿 代表

第 1 句第 1 個詞的詞性、第 1 句第 2 個詞的詞性、…、第 n 句第 L 個詞的詞性。

斷詞的結果則用 WS list 儲存,𝑊𝑆1,1, 𝑊𝑆1,2, …, 𝑊𝑆𝑛,𝐿 表示第 1 句第 1 個詞的斷

詞、第 1 句第 2 個詞的斷詞、…、第 n 句第 L 個詞的斷詞。完成前處理之後,在

第 3 行去統計計算 CS 中的詞性標記完的序列長度,如 : 若統計結果長度為 4, 5

則去 POS Structure List 撈出長度為 4, 5 的詞性結構。第 4 行、第 5 行的兩層迴圈

開始是語句判斷,將所需的詞性結構表與 CS 去做比較,若詞性結構比對結果正

確則把那一句放入新的 ANS 候選語句名單中;若比較結果有錯誤的,將錯誤的

詞性在句中的位置找到 WS 中那句的字詞,將該字詞以[MASK]表示。

再來,我們必須要處理[MASK]的部分,第 11 行、第 12 行開始用 TL-BML

model 去猜出結果。TL-BML model 是一個語言模型,藉由上下文去猜出[MASK]

的結果,在第 13 行中,先去計算整句話的詞性答對率,這裡設的閥值為 0.6,意

30
指錯誤的詞性佔了 40%,我們將這些[MASK]透過 TL-BML 去猜出,將結果存入

ANS 暫時儲存。舉個例子,若某生成的候選語句為"摸(VC) 想要(VE) 吃(VC) 午

餐(Na)",會將「摸(VC)」這個字詞以[MASK]去替換,則變成"[MASK] 想要 吃

午餐",正確率為 0.75,最後藉由 TL-BML model 去猜出[MASK] = "我"的結果,

"我想要吃午餐"這個句子存入 ANS 中。

做完詞性結構與 TL-BML model 去修正之後,兩個方法的結果都暫時存進新

的候選語句名單 ANS 中。最後,在系統的後面我們會多一個判斷式去檢查 ANS

中的語句是否有重複的句子,將語句重複的句子刪除,若刪除完還有很多的候選

語句,則取至多前 15 句當候選語句,回傳至 APP 畫面。

Algorithm 1 Sentence Checking

Input: Length L Top n candidate sentences, TL-BML model, POST Structure List

Output: Top n sentences

1: CS = [𝐶𝑆1,1 , 𝐶𝑆1,2 , 𝐶𝑆1,3 , … , 𝐶𝑆𝑛,𝐿 ], ANS = [𝐴𝑆1 , 𝐴𝑆2 , … , 𝐴𝑆𝑛 ],

WS = [𝑊𝑆1,1 , 𝑊𝑆1,2 , 𝑊𝑆1,3 , … , 𝑊𝑆𝑛,𝐿 ], PSL = []

2: Top n candidate sentences do POST and assign to CS

Top n candidate sentences do WS tagging and assign to WS

3: Statistically calculate the length of the CS and find same length in POST

Structure List assign to PSL

4: for i = 1 to n

5: for j = 1 to L do

6: Compare PSL of the same length and 𝐶𝑆𝑖,𝑗

7: if 𝐶𝑆𝑖 = PSL of the same length

8: Assign sentence to ANS

9: else

31
10: Assign [MASK] in 𝑊𝑆𝑖,𝑗

11: for i = 1 to n

12: for j = 1 to L do

13: if 1 – [Count([MASK] in 𝑊𝑆𝑖 )] / length of 𝑊𝑆𝑖 ≥ 0.6

14: Using TL-BML model to guess [MASK] in 𝑊𝑆𝑖,𝑗 until finish

sentence

15: assign sentence to ANS

32
第四章 實驗結果與評估方法

4.1 實驗環境介紹
系統的實驗環境是沿用[2, 3, 4],作業系統為 Linux,版本為 Ubuntu16.04。

硬體規格 : CPU Intel i7 八核心 3.6GHz,記憶體 32GB,顯示卡 GeForce GTX 1080

Ti,硬碟容量 1TB。軟體編譯程式為 Python 3.5.2。

實驗評估為使用者錄製的語句抽 200 句測試,測試語句中長度最小為 3 個

字,長度最大為 10 個字,其中 3 至 10 個字的語句各別有 25 句,所以總共 200

句。

4.2 Cosine Similarity


本文所使用的語句相似度比較為餘弦相似度(Cosine Similarity),如式子 12 所

示。在自然語言中,無論何種語言在一段話中都可以看做向量表示,因此在數學

的表示下,餘弦相似度的計算表示在多維空間中有兩個 n 維度向量,而兩向量夾

角的餘弦值範圍為[0,1],因餘弦(Cosine)的夾角0°~90°的值範圍為 0~1,意指若

兩向量重合則兩向量取餘弦值等於 1;反之若兩向量正交,則餘弦值等於 0。兩

個非零向量 A, B 之間的餘弦相似度如下:

𝐴∙𝐵 ∑𝑛
𝑖=1 𝐴𝑖 𝐵𝑖
Cosine Similarity = Cos(θ) = = (12)
||𝐴||||𝐵||
√∑𝑛 2 𝑛 2
𝑖=1 𝐴𝑖 √∑𝑖=1 𝐵𝑖

本文以餘弦相似度的評估方法,針對我們的方法加以修正,計算方式如式 13

所示,符號定義如下:

(1) A 為正確答案的句子向量

33
(2) 在候選句 S 中, S = {𝑆𝑖 |∀i → 1 to 10},𝑆1, 𝑆2 , …, 𝑆𝑛 表示為第 1 句候

選句向量、第 2 句候選句向量…第 10 句候選句向量。

1
∑25
𝑖=1[argmax(Cosine Similary(A, S))]𝑖 (13)
25

我們用實際的例子來說明這個評估方法,假設今天使用者說的話是"這邊的

網路訊號不好",而候選語句為["這邊的網路訊號不好", "這家的網路訊號不好",

"左邊的網路訊號不好", "在家的網路訊號不好", "那家的網路訊號不好"],先對每

一個候選語句做斷詞,則會變成["(這邊) (的) (網路) (訊號) (不好)", "(這) (家) (的)

(網路) (訊號) (不好)", "(左邊) (的) (網路) (訊號) (不好)", "(在) (家) (的) (網路) (訊

號) (不好)", "(那) (家) (的) (網路) (訊號) (不好)"],斷完詞之後根據詞頻來填表,

如表 2 所示。

表 2. 語句詞頻範例

Ans 1 2 3 4 5

這邊 1 1 0 0 0 0

的 1 1 1 1 1 1

網路 1 1 1 1 1 1

訊號 1 1 1 1 1 1

不好 1 1 1 1 1 1

這 0 0 1 0 0 0

家 0 0 1 0 1 1

左邊 0 0 0 1 0 0

在 0 0 0 0 1 0

那 0 0 0 0 0 1

34
建完表之後,我們的 Ans = [1,1,1,1,1,0,0,0,0,0],而其他的候選語句為 S1 =

[1,1,1,1,1,0,0,0,0,0], S2 = [0,1,1,1,1,1,1,0,0,0], … , S5=[0,1,1,1,1,0,1,0,0,1],分別計

算 Cosine Similarity 的結果為 S1:1, S2:0.8, S3:0.8, S4:0.63, S5:0.63,因這個例子候

選語句只有 5 句,所以後 5 句的結果就不考慮。最後我們取 Top10 最大值為 1,

所以這個長度為 9 的句子 Cosine Similarity 結果等於 1,剩下的 24 句也是以此方

式去做計算,最後去求 25 句平均作為長度為 9 的平均相似度,而其他長度的語

句以此類推。

表 3 為原始 CKIP 公開的繁體中文 BERT 語言模型與本文 Fine Tune 後的

TM-BML 模型平均語句相似度比較,我們用 200 句測試語句做語句判斷,最後

的結果以 Average Consine Similarity 做語句相似度。在相同的詞性結構比較之下

替換語言模型,在表格中最左邊 L 所代表的為語句的長度,中間的為使用 TL-

BML 模型,最右邊為 CKIP 原始 BERT 的結果。我們可以觀察到雖然平均語句

相似度 Fine Tune 完的結果整體比原始的 CKIP BERT 來的高,但實際的結果在我

們自己的任務上只提升了最多 2%。

表 3. 語句平均相似度比較

L N N-gram word POS Struc. Checking POS Struc. Checking

Sentence Generation +TM-BML +CKIP BERT

Average Similarity Average Similarity Average Similarity

3 25 0.786 0.85 0.844

4 25 0.691 0.76 0.75

5 25 0.73 0.81 0.79

6 25 0.75 0.82 0.8

7 25 0.648 0.708 0.688

35
8 25 0.74 0.771 0.762

9 25 0.771 0.826 0.82

10 25 0.62 0.7 0.694

表 3 為本文方法語句平均相似度,L 為語句的長度,N 為長度為 L 的語句數

量,長度為 3 到 10,各 25 句,所以總共 200 句。實驗結果可以發現,長度為 3

的句子平均相似度較高,其相似度為 0.85,以百分比表示為 85%;而長度為 10

的相似度為 0.7,以百分比表示為 70%,整體的平均都有 70%、80%以上,但結

果顯示不一定語句的長度愈高則準確率愈低,還是要考慮到在組合句子的時候詞

庫是否有相關聯的詞,另外因使用 TL-BML model 是根據上下文的關係去猜字

詞,修正的結果好壞是來自模型本身,這些也與句子長度無關。

接著本文為了要呈現實質上提升的多少百分比,因此定義提升率與平均提升

率。首先先把平均相似度轉換為百分比表示,假設𝑂𝑠 為未使用本文方法的平均相

似度;𝐶𝑠 為使用本文的方法所計算出來的平均相似度,則計算公式如式 14、式 15

所示,其中式 15 中的 n 為句子長度的種類數,本文在這裡取 8。

|𝐶𝑠 − 𝑂𝑠 | (14)

1
∑𝑛𝑖=1 |𝐶𝑠 − 𝑂𝑠 |𝑖 (15)
𝑛

表 4 為使用本文方法與原始語句生成的提升率,在表 3 中 N-gram word Sentence

Generation Average Similarity 與本文方法相比,很明顯的可看出使用本文方法後

的平均語句相似度皆有提升,表 4 中顯示長度 3 至長度 10 的語句整體的提升率,

可以觀察到長度 5 與長度 10 的語句提升率最高,有 8%的提升率,整體平均提升

率約 6.4%。

36
表 4. 本文方法相似度提升率與平均提升率

3 4 5 6 7 8 9 10 Average

6.4% 6.9% 8% 7% 6% 3.1% 5.5% 8% 6.362%

4.3 句子正確性評量
表 5 為句子正確性評量分析表,表 6 為以百分比為單位呈現的結果。表 5、

表 6 是根據表 3 去做進一步分析,這邊的結果為[5]與本文方法合力做出來的成

果。表格中 Wc 表示某個長度之語句的全部候選語句中,對了幾的字,Ws 表示

句子的長度。我們舉一個例子來說明表格的內容例如:

以長度為 10 的語句來說,在 25 句測試當中總共產生 250 句候選語句。在第

二列第一行:[10,10]有 16 個則表示說在長度為 10 的全部候選語句中有 16 個句子

是正確的,第二列第二行: [10,9]有 11 個表示說在長度為 10 的全部候選語句中有

11 個句子是對 9 個字的,表格其他數字以此類推。

我們可以從表 5、表 6 中可發現長度為 10 的正確的比例是最低,在 25 組中,

完全正確的只有 16 組,其正確比例約為 64%,對應到表 1 其實就能發現長度為

10 的平均語句相似度最低,所以在比較一句話中總共對幾個字的正確性評量當

然正確率也會較低。在表 1 中,我們得知長度為 3 的平均相似度是最高的,在表

5 中不難發現完全正確的比例也是最高的,在 25 組測試語句中有 21 句候選句完

全正確,其正確比例約為 84%。我們再進一步觀察到,雖然 3 個字平均相似度

高,正確性評量也比其他的長度語句高,但其實有許多候選語句在構句的時候可

能不完全是用 N-gram 方式組合,在表 6 中可發現在 250 句候選語句中有 51.2%

的比例是完全不正確的,所以最後在 APP 上呈現的各候選語句差異性較大。此

外,進一步分析可得知長度為 3 的文法結構數量較少以及上下文資訊較少,TL-

BML model 在猜的時候有點難猜中,這也會導致出現許多錯字的候選語句。

37
表 5. 句子正確性分析表(25 句/組)

W𝑐 10 9 8 7 6 5 4 3 2 1 0 Total

𝑊𝑆

10 16 11 35 31 36 21 17 19 31 17 16 250

9 --- 22 32 44 42 27 17 28 14 13 11 250

8 --- --- 18 25 33 34 35 35 26 35 19 250

7 --- --- --- 18 31 43 31 33 42 31 21 250

6 --- --- --- --- 18 49 46 49 36 39 13 250

5 --- --- --- --- --- 21 61 55 49 47 17 250

4 --- --- --- --- --- --- 17 57 38 49 89 250

3 --- --- --- --- --- --- --- 23 63 36 128 250

表 6. 句子正確性分析(百分比表示)

W𝑐 10 9 8 7 6 5 4 3 2 1 0

𝑊𝑆

10 6.4 4.4 14 12.4 14.4 8.4 6.8 7.6 12.4 6.8 6.4

9 --- 8.8 12.8 17.6 16.8 10.8 6.8 11.2 5.6 5.2 4.4

8 --- --- 7.2 10 13.2 13.6 14 14 10.4 14 7.6

7 --- --- --- 7.2 12.4 17.2 12.4 13.2 16.8 12.4 8.4

6 --- --- --- --- 7.2 19.6 18.4 19.6 14.4 15.6 5.2

5 --- --- --- --- --- 8.4 24.4 22 19.6 18.8 6.8

4 --- --- --- --- --- --- 6.8 22.8 15.2 19.6 35.6

3 --- --- --- --- --- --- --- 9.2 25.2 14.4 51.2

38
4.4 句子刪除效果評估
句子刪除評量為從 Top 50 的生成候選句中,透過語句判斷演算法篩選出詞

性結構正確的候選句,如表 5 所示。在表 5 中 S 表示第 1 句~第 25 句測試語句,

L 表示語句長度。在表格內的數字 0 表示說無論最後語句判斷刪除了多少候選語

句,在這些候選語句中皆沒有正確答案。這邊我們舉一個例子來說明表格,例如:

[3,1]對應到的數字為 42,這表示長度為 3 的語句在第 1 組測試語句中 Top

50 候選語句被刪除了 42 句,只保留 8 句在新的候選語句名單中;[6,13]對應到

的數字為 38,這表示長度為 6 的語句在第 13 組測試語句中 Top 50 候選語句被

刪除了 38 句,只保留 12 句在新的候選語句名單中,其他表格中對應的數字皆以

此類推。

式 14 為平均句子刪除評量公式,其中S = {𝑠𝑖 |∀i → 1 to 25},S 表示為 1~25

句測試句子,共有 25 句測試語句,長度為 3~10 的語句分別依據式 16 去計算平

均刪除評量。

1
∑25
𝑖=1 𝑠𝑖 (16)
25

我們可以觀察到使用語句判斷演算法,無論句子長度為何,若生成 Top 50 的

候選語句中因是使用 N-Gram Candidate Matrix 的方式組出來,生成的語句許多

無符合詞性結構,在這種情況下就會篩選掉一堆語句,只有少數的句子保留。除

此之外,在其他的情況下我們透過語句判斷演算法,過濾出文法正確的句子與藉

由 TL-BML model 去修正詞性不對的字詞,可以有效的提供比較有邏輯的候選語

句提供給使用者去做選擇,而非 0 的部分就是在候選語句下有正確句子的結果。

表 7 為句子平均刪除表,我們可以觀察到在長度為 3 的語句中,平均刪除

38.92 句,為表格中刪除最多候選句;長度為 10 的語句中,平均刪除 25.6 句,

為表格中刪除最少候選語句。其實不難發現,由於長度為 3 的語句在測試 25 句

中出現 0 的數量較少,自然而然在做平均的結果整體數值會拉高,相反的在長度

39
為 10 的結果中,因為測試的 25 句中出現 0 的數量較多,因此整個 25 句測試完

之後再做平均當然數值會被拉低,計算出來的平均結果較低。

表 7. 句子刪除表

S L 3 4 5 6 7 8 9 10

1 42 0 46 0 0 48 0 41

2 47 46 43 49 39 46 45 0

3 41 0 39 48 49 0 0 0

4 46 42 43 39 46 38 44 40

5 40 39 43 48 0 48 34 38

6 33 44 43 0 49 0 43 38

7 46 0 45 49 39 38 38 0

8 43 35 0 0 0 0 48 42

9 45 43 44 46 43 32 39 0

10 0 42 42 49 38 0 49 0

11 45 33 42 49 0 39 47 38

12 38 42 45 0 0 38 44 38

13 43 0 47 38 36 45 0 0

14 43 35 0 46 46 0 38 45

15 0 43 47 49 38 49 47 45

16 42 0 48 32 44 43 43 38

17 38 49 47 0 0 49 47 38

18 45 44 44 38 0 38 42 47

19 44 0 0 49 38 38 47 38

20 42 43 0 49 49 36 38 0

40
21 47 45 49 0 40 36 38 38

22 41 0 43 42 38 0 38 0

23 30 34 46 0 38 38 49 0

24 46 46 46 45 46 46 47 38

25 46 0 45 38 49 0 38 38

表 8. 句子平均刪除表

3 4 5 6 7 8 9 10

38.92 28.2 37.48 32.12 30.6 29.8 37.72 25.6

4.5 討論

4.5.1 句子正確性評量與句子刪除效果評估
在表 5 中可視為進一步討論在全部候選語句中有多少的候選語句是一字不

差完全正確,哪些在一句話中只錯幾個字或錯誤率較高,表 6 為轉換成以百分比

為單位,更能看出各種長度語句的正確率比例,表 5 與表 6 屬於正確性評量探

討。在表 7 中為經過語句判斷後過濾 Top 50 候選語句不合邏輯的語句,剩下的

語句為新的候選語句,表 8 為表 7 的平均結果,這可視為錯誤性探討。我們將表

5、表 6、表 7 與表 8 一起去做討論可觀察到表 5 完全正確的測試語句數量與表

7 結果為 0 的數量相加等於 25,也就是 25 組測試語句。這其實很好理解,因為

表 5 的測試語句中有某些候選語句跟正確答案去做比較,比較的結果在候選語句

中完全找不到正確的句子,所以在表 6 句子刪除評量那些語句結果就會是 0。除

此之外,我們可發現在表 5,長度為 3 的語句在 25 句測試語句完全正確的數量

41
是最多,但同時完全錯誤率也很高,在表 6 中可觀察到在全部候選語句中完全錯

誤的比例有 51.2%,所以對照表 8 平均刪除的結果其平均值最高。相反的在長度

為 10 的語句中,因在表 5 的統計結果完全正確的數量是最少的,這也同時意味

著在表 7 的結果 0 的出現次數會是最高,將整個結果去做平均,可想而知平均值

一定是最低的。

4.5.2 改善語句準確度
在語句建構中,目前遇到的問題是本身的 2~4gram 的詞庫量還是不夠,無法

更加涵蓋不同的使用情境,此外因為本文的方法與[5]的詞庫共用,在詞性結構庫

中的句子數量也不夠,基於以上我們在做語句生成時遇到的問題是若某個詞因為

沒有在 N-gram 詞庫中,所以會無法組合出來,出來的語句就會有問題。為了提

高整體語句建構的準確度,我們可以額外在網路上透過網路爬蟲爬大量文本資料

進到我們的資料庫,以及若候選句中皆沒有正確的語句,使用者會在 APP 畫面

中會先挑選最相近的句子,然後再透過手機鍵盤打字的方式修正錯誤的字,修正

成正確的句子之後,可以設計上傳功能到我們的 Server 端,同步更新詞庫與文法

結構庫,這樣的好處是避免 N-gram 詞庫與詞性結構庫不同,在做語句判斷時判

斷錯誤。

4.5.3 使用 HSWD 推薦詞


在語句相似度與句子正確性評量中雖然部分的結果可以到 80%左右,但在

有些情況出來的語句結果還是不正確,若想要使得吶語症使用者使用語音辨識系

統更加便利,可以使用[5]的 HSWD(Historical Successive Words Dictionary)作為基

礎設計推薦詞系統。HSWD 為參考預測上下文的語言模型 Skip-Gram 所建構出

來的,HSWD 記錄著某個詞下文的關係與頻率,例如 : 正確答案為"我想要睡覺

",而候選句中辨識出來最接近的語句為"我想要摔倒",使用者選擇這句話後,我

42
們可以把"我想要摔倒"去做斷詞並標上順序,則會變成[我(1)想要(2)摔倒(3)],使

用者發現(3)不是他想要的,就選擇(3),最後回傳給 Sever,系統就會根據 HSWD

的紀錄表查看說"想要"後面最常出現什麼,回傳 Top 3 的詞 1. 吃飯, 2. 睡覺, 3.

喝水,使用者就可以根據他想表達的意思選擇,以這裡舉的例子來說,使用者可

以選擇 3,最後就輸出"我想要睡覺",讓吶語症患者使用上更加便利。

43
第五章 結論與未來展望
在本論文中,我們基於目前語音辨識系統的架構與 N-gram word 的語句建構

方法之下,提出將 Top 50 的生成語句透過語句判斷的方式使得最後的候選語句

能更接近日常對話的語意。首先,本文提出以文本詞性結構比較結合 BERT 語言

模型去做修正,在候選語句中做詞性結構比較,挑選出正確的,此外將詞性結構

不完全對的語句,用[MASK]遮蔽後使用 TL-BML 模型輔助去遮蔽字詞去做修正。

本文參考 Cosine Similarity 語句相似度的方法,修改成平均語句相似度來檢

驗成效。在 CKIP 中的繁體中文 BERT 模型與我們 Fine Tune 完變成 TL-BML 模

型的平均語句相似度中,本文測試的結果雖然相似度分數沒有高很多,但長度為

3 到長度為 10 的語句測試中,整體分數有略高一點,可見在好的模型之下再做

Fine Tune 會比較適合我們的任務。此外,未使用本文方法與使用本文方法經過

比較之後,最後的語句相似度平均提升約 6.36%。在本文各長度測試 25 句中,

在長度為 3、5、6 和 9 的句子與正確語句比較過後都有 80%以上的相似,我們也

進一步討論了語句中句子跟正確句子之間的正確性與候選語句刪除評量。

在之前的研究中,語句建構模組都是以字與字之間的機率與權重找到關聯來

組合語句,或者用 N-gram 詞與詞之間的上下文關係去建構語句,以上都較考慮

到詞性與語意相關的方法,而本文加入詞性結構比較與語言模型去修飾候選語句。

未來可以擴建 N-gram term 的資料庫與詞性結構庫,使資料庫更加全面,讓更多

情境中語句的效果更好。未來的研究方向可以試著使用 Transformer 的架構改善

用 CNN 辨識的聲學模型,使吶語症患者的語音辨識結果好,最後句子的輸出也

會更精準。另外,在 APP 的畫面中,可以在顯示語句的地方加入錯誤詞的推薦

系統,讓使用者遇到候選語句都錯的情況下,找個最相近的句子,推薦可能正確

的字詞給使用者,使用上起來更加便利。

44
參考文獻
[1] Department of Rehabilitation and Assistive Technology, School of Health and

Related Research, University of Sheffield, Sheffield, UK. "Disorders of

communication: dysarthria"

[2] Bo-Yu Lin, "Speech Recognition for People with Dysphasia in Chinese", 國立臺

北大學 106 學年度第二學期碩士論文, Jul. 2018.

[3] Hung-Shing Huang, "Applying Deep Learning to Chinese Sentence Recognition

for Dysphasia", 國立臺北大學 108 學年度第一學期碩士論文, Nov. 2019.

[4] Ting-Shuo Chen, "Applying N-gram to Sentence Construction of Chinese Speech

Recognition for People with Speech Impairment", 國立臺北大學 109 學年度第

一學期碩士論文, Jan. 2021.

[5] 鍾任昇, "以 N-gram Word 為基礎之吶語症中文語句生成", 國立臺北大學 110

學年度第二學期碩士論文, Aug. 2022.

[6] GYu-Fang Tsai, Keh-Jiann Chen, “Reliable and Cost-Effective Pos-Tagging”, The

Association for Computational Linguistics and Chinese Language Processing, Vol.

9, No. 1, February 2004, pp. 83-96

[7] J. De jonckheere, I. Ibarissene, M. Flocteil, R. Logier, “BERT: Pre-training of

Deep Bidirectional Transformers for Language Understanding”, arXiv:1810.0480

5v2 [cs.CL], May. 2019.

[8] 黃慶萱, “修辭學”, 三民書局, 2002.

[9] Wei He1, Haifeng Wang, Yuqing Guo and Ting Liu, "Dependency Based Chinese

Sentence Realization.", 2009, In Proceedings of the Joint Conference of the 47th

Annual Meeting of the ACL and the 4th International Joint Conference on Natural

Language Processing of the AFNLP, pages 809–816, Suntec, Singapore.

45
Association for Computational Linguistics.

[10] Peter F. Brown, Vincent J. Della Pietra, Peter V. deSouza, Jenifer C. Lai and

Robert L. Mercer. "Class-based n-gram models of natural language."

Computational linguistics, 18(4), 467-480, 1992.

[11] Lalit R. Bahl, Member, Peter F. Brown, Peter V. De Souza and Robert L. Mercer.

"A tree-based statistical language model for natural language speech recognition."

IEEE Transactions on Acoustics, Speech, and Signal Processing 37.7, 1001-1008,

1989.

[12] Zhiheng Huang, Wei Xu, Kai Yu, "Bidirectional LSTM-CRF Models for Sequence

Tagging." 2015, arXiv preprint arXiv:1508.01991.

[13] Sunanda Das, Sajal Basak Partha and Kazi Nasim Imtiaz Hasan, "Sentence

Generation using LSTM Based Deep Learning.", 2020 IEEE Region 10

Symposium(TENSYMP), 5-7 June 2020, Dhaka, Bangladesh.

[14] Yuandong Luan and Shaofu Lin, "Research on Text Classification Based on CNN

and LSTM.", 2019 IEEE International Conference on Artificial Intelligence and

Computer Applications (ICAICA), 2019, pp. 352-355, doi:

10.1109/ICAICA.2019.8873454.

[15] Haixia Liu, "Sentiment Analysis of Citations Using Word2vec.",

arXiv:1704.00177v1 [cs.CL] 1 Apr 2017.

[16] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszoreit, Llion Jones,

AidanN. Gomez, Lukasz Kaiser and Illia Polosukhin, "Attention is all you need."

arXiv:1706.03762v5 [cs.CL] 6 Dec 2017.

[17] 中研院中文詞知識小組, "中央研究院平衡語料庫的內容與說明(修訂版) ",

Aug. 1998.

[18] Sinno Jialin Pan and Qiang Yang, "A Survey on Transfer Learning.", IEEE

Transactions on Knowledge And Data Engineering, vol. 22, No. 10, October 2010.

46
[19] Xingce Bao and Qianqian Qiao, "Transfer Learning from Pre-trained BERT for

Pronoun Resolution.", 2019, Gender Bias in Natural Language Processing, pages

82–88, Florence, Italy. Association for Computational Linguistics.

[20] Seo Yeon Park and Cornelia Caragea, "Scientific Keyphrase Identification and

Classification by Pre-Trained Language Models Intermediate Task Transfer

Learning.", 2020, In Proceedings of the 28th International Conference on

Computational Linguistics, pages 5409–5419, Barcelona, Spain (Online).

International Committee on Computational Linguistics.

[21] Ilya Loshchilov and Frank Hutter, "Decoupled Weight Decay Regularization.",

arXiv:1711.05101v3 [cs.LG] 4 Jan 2019

[22] Chi Sun, Xipeng Qiu, Yige Xu and Xuanjing Huang, "How to Fine-Tune BERT

for Text Classification?", arXiv:1905.05583v3 [cs.CL] 5 Feb 2020

47
附錄
附錄A 中研院詞性標記表9

9
https://ckip.iis.sinica.edu.tw/

48
附錄B 詞性標記表

長度為 2 結構 長度為 3 結構

49
長度為 4 結構

50
長度為 5 結構

51
長度為 6 結構

52
長度為 7 結構 長度為 8 結構

53
長度為 9 結構 長度為 10 結構

54
著作權聲明

論文題目: 以 BERT 及文本詞性結構為基礎之語句判斷


論文頁數: 54 頁
系所組別:資訊工程學系
研究生 :蔡承哲
指導教授:張玉山
畢業年月:111 年 8 月
本論文著作權為蔡承哲所有,並受中華民國著作權法保護。

55

You might also like