第四章 中文幽默對話系統建置與評估
第二節 檢索比對生成模組
檢索比對生成模組負責將使用者輸入查詢的關鍵字比對笑話,依照相似程度,
回覆使用者與查詢關鍵字相似度最高的笑話。若使用者查詢相同關鍵字或點選再 來一個笑話,則會搭配對話紀錄檔依序回覆下一則次相關的笑話,直到語料庫中 沒有次相關的笑話為止。為記錄破冰機器人與使用者的對話以利後續分析,此模 組會在輸出笑話後依照Radziwill and Benton(2017)所統整出對話系統品質屬性,
直接詢問使用者輸出的笑話是否有在情境中達到破冰效果並回饋使用者自己認 為這則笑話的好笑程度。
使用者輸入的關鍵字可以是與情境有關的語句或是詞彙,例如「跨年的笑話」
或是「跨年」。為求對話系統功能性中的即時解決問題,本研究使用向量空間模
型(Vector Space Model,VSM)資訊檢索技術,並於第一次實驗後新增 Word2Vec 詞向量進行查詢擴展(query expansion),以提升檢索的成效。
向量空間模型是經典常用的資訊檢索方法(Salton,1989)。其將語料中每份 文件的重要詞彙(有主題意義的詞彙),都視為向量中的一個維度,而詞彙在文 件中的出現次數(Term Frequency, TF)以及在整個語料中出現篇數的倒數(Inverse Document Frequency, IDF)的乘積(TFxIDF),作為該維度的權重。如此 n 篇文 件的語料庫若共有m 個詞彙,就形成一個 m x n 的矩陣,其中每一行向量對應到 每一篇文件,而每一列向量則對應到每一個重要詞彙。依向量餘弦公式(Cosine), 可計算任意兩文件或是兩詞彙的相似度(曾元顯et al.,2020)。
另一種VSM 的表示法,則跟語料無關,單純以「獨熱編碼」(one-hot encoding)
表示。2013 年 Mikolov et al.(2013)發展出 Word2Vec 的詞嵌入(word embedding)
技術,就是從高維度的整數向量,以各種嵌入語意的方式降維成低維度的實數向 量。
透過下載截至2019 年 8 月 20 日的中文維基百科文章,處理後共 7.91 GB 純文字 檔與gensim 工具訓練出 2,238,637 個詞彙的詞嵌入向量(Word Embedding Vectors), 依此來擴展使用者查詢詞找不到笑話的情況。如查詢「紅茶」,依照經驗法則決 定透過Word2Vec 找出「紅茶」的前 10 個近似詞,可以得到以下的 10 個相似詞 及其詞向量:
>>> print(model.wv.most_similar('紅茶', topn=10))
[('烏龍茶', 0.7259955406188965), ('奶茶', 0.6932611465454102), ('珍珠奶茶', 0.6661516427993774), ('綠茶', 0.6420326828956604), ('牛乳', 0.640976071357727), ('清酒', 0.6371012926101685), ('羊羹', 0.6370382308959961), ('豆奶', 0.6361131072044373), ('醬汁', 0.6340006589889526), ('辣醬', 0.6339839100837708)]
而網路上也有許多已預訓練的模型,使用國立中央大學自然語言處理實驗室 預訓練的中文相似詞搜尋再次進行比較:GloVe(2014)、fastText(2015)、ELMo
(2018)、BERT(2018),一樣以「紅茶」為例,各相似詞的相關度如表 4-3 所 示。
資料來源:研究者自行整理
使用預訓練模型的前10 個近似詞再依此查詢笑話語料庫,其查詢相關度皆 未超過門檻0.3(依經驗法則設定)。故本研究決定使用自行訓練的 Word2Vec 模型,除擴展查詢效果好外,資料也較為透明。
小明小明,師大 0
小明小明,生活 0
小明小明,寄 0
小明小明,怡臻 1
小明小明,黃色 1
小明小明,幹你娘 not in vocabulary
小明小明,演唱會 0
小明小明,籃球 0
小明小明,電視 0
小明小明,電扇 0
小明小明,毛豆 0
小明小明,天皇 0
小明小明,雞排 1
小明小明,松鼠 1
小明小明,米妮 1
小明小明,海綿寶寶 not in vocabulary 小明小明,工具人 not in vocabulary
總計笑話數 14
關鍵字 12
資料來源:研究者自行整理