[簡介]
使用 BERT 進行句子問題回答、提取固定特徵向量、句子語意分析。
[操作步驟及說明]
BERT APP 分成三部分,SQuAD2.0 進行句子問題訓練及回答、ELMo 提取固定特徵向量及 MRPC 句子語意分析。
1. SQuAD2.0
進行微調的檔案為 data/SQuAD2.0/train-v2.0.json,按下 1. Fine_Tuning 會對 data/SQuAD2.0/train-v2.0.json 進行訓練。
按下訓練後會在 impossible example 那一行停等一陣子,屬正常現象。
訓練後,可以選擇訓練模型進行句子問題回答,問句檔案來自於 data/SQuAD2.0/dev-v2.0.json,輸出的答案在 data/output/SQuAD2.0/nbest_predictions.json,如果該問句沒有答案,則會記錄該問句的閾值在 data/output/SQuAD2.0/null_odds.json。
選擇 model file 時,會讀取 model.ckpt-XXX.data-00000-of-00001、model.ckpt-XXX.index、model.ckpt-XXX.meta 三個檔案,請勿刪除副檔名 data 及 .index 檔案。
nbest_predictions.json 橘色線的位置對應的是來源檔 data/SQuAD2.0/dev-v2.0.json 問句的 id,[] 內是問句的回答。
如果需要調整推論回答的閾值,可執行 "3. Evaluate" ,根據執行結果中 best_f1_thresh 的值來調整 null_score_diff_threshold 的閾值。
2. ELMo
按下 "Extract Fixed Feature" ,對 input file data/glue-data/ELMo/input.txt 進行提取固定特徵向量,提取結果儲存在 data/output/ELMo/output.json 中。
3. MRPC
按下 "1. Fine_Tuning" 後,對 data/glue-data/MRPC 資料夾內的檔案進行訓練。
訓練後,確認好模型檔案,即可按下 "2.Inference" 對 "data/glue-data/MRPC/test.tsv" 檔進行句子語意分析,判斷兩個句子屬於同一意思的機率。
補充:
result_test.tsv 說明:
test.tsv 的綠線為句子 1,藍線為句子 2, 進行分析後,在 result_test.tsv 的橘線位置,前者數字(0.29910564)表示兩個句子為不同意思的機率,後者數字(0.70089436)表示兩個句子為同一意思的機率。