## 古人別名探勘
## 專用模型之開發
專案成果報告: 【先生不知何許人也】組
指導老師:蔡宗翰 教授
---
### 成員
外文二 - 先悅
生傳四 - 心穎
歷史所 - 郁蓁
歷史所 - 星如
語言所 - 翊涵
資工所 - 銘杉
---
## 開發模型動機
身為歷史研究生,最痛苦的就是......蒐集史料!
---
### 開發模型動機
* 舉例說明:
* 目標:想蒐集東晉高僧支遁的所有史料
* 困境:
1. 支遁的史料散見不同書的不同篇章
2. 支遁在史料中可能會以「支道林、支法師、支公」等各種別名出現
---
因此為了提升蒐集資料的效率,希望建立
### 跨文本查找
### 指定中國史人物所有史料的模型
---

---

---
然而時間與資源有限......
### 先從查找古人別名開始!
---
### 模型簡介
---
### 模型簡介
* 功能:輸入歷史人物的本名,可以迅速找出該人物的其他別名
* 舉例說明:
* 輸入(input):請問唐朝的宋之問有哪些別名?
* 輸出(output):延清、少連
---
### 第一次微調資料準備
---
### 準備第一次訓練資料
* 模型已有理解文言文能力
* 透過微調資料讓模型學會古人別名的任務
---
### 第一次訓練資料來源
* 來源:CBDB(哈佛大學中國歷代人物傳記資料庫)
---
### 第一次訓練資料清理
* 把沒用的資料去掉,讓模型更準確地理解和學習。
---
### 第一次試驗
---
### 評估模型表現
**test set(考卷)**
* gold test set:100筆正史中的唐代與明代人物
* silver test set:1000筆唐代與明代人物
**評估方式**
* Precision(精確率):模型寫的答案中有正確答案的比例
* Recall(召回率):標準答案中,有模型寫出的答案的比例
* F1 Score(以上兩者的調和平均數):以上兩者的綜合分數
---
### **第一次模型訓練結果**
| | Precision| Recall | F1 Score |
| -------- | -------- | -------- | -------- |
| gold test set| 0.19 | 0.14 | 0.16 |
| silver test set | 0.03 | 0.01 | 0.01 |
---
### 分析訓練結果
---
### 為什麼會答對?
元稹、王勃、++杜甫++
(出現**次數**較多)
==**古文預訓練資料**== ➔ ==**我們的預訓練資料**==
元稹+微之➔ 25次
王勃+子安➔ 25次
杜甫+子美➔ 22次
杜甫+少陵➔ 12次
杜甫+老杜➔ 5次</br>
**猜測:本名與某別名的組合,可能要出現20次以上**
---
### 為什麼會答錯?
* 人物本名與別名的出現次數不夠多
* test set的人物不在預訓練資料中
* 模型讀太少傳記(有字、號或某某先生、諡號等字句)
---
### 修正方向
提升本名與別名組合出現的次數(20次以上)</br>
</br>
* **調整100筆唐代與明代人物的gold test set**
* 人物及其傳記,有在古文資料中出現
* 唐代:《舊唐書》、《新唐書》
* 明代:《明史.列傳》
* **我們的預訓練資料(宋代人物)加上傳記內容**
* 複製20次
---
### 產製「專業預訓練資料」
---
#### Q : 專業預訓練資料共有 2 萬 7 千筆人名,
#### 如何找出全部的對應傳記?
---
### A : 自己生成傳記
---
### 舊方法:人工創造模板
* 僅調換語序、代名詞
* 缺點:過於呆板
⮕ 模型訓練容易「欠缺擬合」
---
### 新方法:使用 LLM
* 優點:快速生成大量資料
* 任務:下指令給模型,生成人物傳記
---
### 問題
1. LLM 可能會產生幻覺 (生成假的別名)
2. 指令太複雜,生成內容會出現英文
---
### 套用固定格式:別名規則 + 生成傳記
1. 別名規則:本名 + 別名的模板
2. 模板別名順序:字、號、小名、室名...
```
本名:翁承贊;別名:狎鷗翁、文堯、翁十九 ⮕
{"name": "翁承贊", "text": "翁承贊,字狎鷗翁,號文堯,小名翁十九"}
```
---
### 2. Gemini 生成傳記
* 為防幻覺,不可提及別名
* 指令: "請以宋代古文的用字以及筆法,撰寫一篇關於 {name} 的評論式人物傳記。請發揮想像撰寫內容多樣化的傳記。(`全文僅可提及 {name} 這一名稱`,不得包含任何形式的別名或字號。)"
---
### 生成結果

---
### 2 萬 7 千筆資料,
### 總共花了多少時間生成?
---
### 6 個人,4 天
---
### 第二次模型訓練結果
---
問題:CP 次數選擇
模型學習要花多少次
5次、 10次、15次、20次?
---
---
20 次表現最好
---
測試資料
CP 資料20次
| | Precision | Recall | F1 |
| -------- | -------- | -------- | -------- |
| Silver | 0.07 | 0.04 | 0.05 |
| Gold 未經過後處理 | 0.22 | 0.29 | 0.25 |
---
測試資料
CP 資料50次
| | Precision | Recall | F1 |
| -------- | -------- | -------- | -------- |
| Silver | 0.07 | 0.04 | 0.05 |
| Gold 未經過後處理 | 0.17 | 0.26 | 0.20 |
---
### 後處理
使用者:請問宋代的沈世顯有哪些稱呼?
模型回應:沈世顯、光祖、元思、濟仲
答案應該是:沈世顯、光祖
模型可能回應出錯誤的內容 (元思、濟仲)
---
### 後處理方式
* 使用CP資料尋找別名與本名是否有共存
* 去掉沒有與原名共存的別名
模型回應:沈世顯、光祖、元思、濟仲
答案應該是:沈世顯、光祖
---
### 經過後處理可以使 precision 提高
第二次模型_gold_CP20次_測試集 :
| | Precision| Recall | F1 |
| -------- | -------- | -------- | -------- |
| 原始結果 | 0.22 | 0.29 | 0.25 |
| 經過後處理 | 0.61 | 0.29 | 0.39 |
---
### 未來展望
---
### 未來展望
1. 訓練資料改以真實的史料為主,合成的資料為輔,並且增加樣式的多元性。
3. 持續訓練與測試,逐步改善模型、提升準確度。
5. 結合史料查找功能,利用輸出的別名查找人物的所有史料。
---
{"title":"數位人文專題應用與實作 簡報","description":"–","contributors":"[{\"id\":\"184e2acb-59eb-470e-8210-d1bd98ba69f9\",\"add\":1299,\"del\":434},{\"id\":\"9a258137-69fe-4c31-babb-5e79d9329ded\",\"add\":1031,\"del\":391},{\"id\":\"9d088c45-c1ea-47e2-a251-1cce1764d2e9\",\"add\":554,\"del\":190},{\"id\":\"c6dfd45c-0459-4352-9729-504decf2681d\",\"add\":1403,\"del\":1302},{\"id\":\"379842b8-8125-4913-8511-2b0c98f3f5f2\",\"add\":1252,\"del\":656},{\"id\":\"46b6b284-1b2e-4dce-8254-3af823f34fb8\",\"add\":1197,\"del\":305}]"}