[語料庫模型] 03-語料讀取&資料格式轉換
今天的主題是介紹如何讀取 CSV (之前從各個網站爬下來的問答集),並將資料轉成後面製作語料庫模型要用的格式。
先複習一下之前爬下來的格式好了,待會我們要做的是以 Q (問題)來製作模型

readwriter
我將 CSV 整理成 4 種格式
完整程式碼: https://gitlab.com/graduate_lab415/nlp/-/blob/master/readwriter.py
- get_field("Q"): 可以得到- docs、- docs_category用來製作模型。
- to_dict(): 可以得到- all_data、- all_data_category用來回傳完整問答組合給 API。
四種格式
- docs: 全部的- Q- 1 
 2
 3
 4- [ 
 "如何申請⻑期照顧服務及流程為何?",
 "申請長照服務有什麼條件?"
 ]
- docs_category: 依- category分類的- Q- 1 
 2
 3
 4
 5
 6
 7
 8
 9- { 
 "1":[
 "如何申請⻑期照顧服務及流程為何?",
 "申請長照服務有什麼條件?"
 ],
 "2":[
 ...
 ]
 }
- all_data: 完整的問答組合- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11- [ 
 {
 'id':'10',
 'Q':'護理之家和老人養護所和老人安養院有何分別?'
 'A':'台灣照顧老人的老人福利機構一般來說分成三個等級:1.安養院:只能照顧生活可以完全自理的長者,亦即是健康的老人家。2.養護所:可以照顧有鼻胃管、尿管或者完全臥床的患者。 唯,不能收有氣切之患者。(年齡限制:須滿60歲以上)3.護理之家:從最重症【鼻胃管、尿管、氣切】到最輕微【只是安養的長者】都能給予全方位的生活及護理照護。(年齡無限制)',
 'url':'https://www.royalnursinghome.com.tw/%e8%ad%b7%e7%90%86%e4%b9%8b%e5%ae%b6/'
 },
 {
 ...
 }
 ]
- all_data_category: 依- category分類的問答組合- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18- { 
 "1":[
 {
 'id':'10',
 'Q':'護理之家和老人養護所和老人安養院有何分別?'
 'A':'台灣照顧老人的老人福利機構一般來說分成三個等級:1.安養院:只能照顧生活可以完全自理的長者,亦即是健康的老人家。2.養護所:可以照顧有鼻胃管、尿管或者完全臥床的患者。 唯,不能收有氣切之患者。(年齡限制:須滿60歲以上)3.護理之家:從最重症【鼻胃管、尿管、氣切】到最輕微【只是安養的長者】都能給予全方位的生活及護理照護。(年齡無限制)',
 'url':'https://www.royalnursinghome.com.tw/%e8%ad%b7%e7%90%86%e4%b9%8b%e5%ae%b6/'
 },
 {
 ...
 }
 ],
 "2":[
 {
 ...
 }
 ]
 }
main
介紹完資料整理的部分,我們回到主程式吧~
完整程式碼: https://gitlab.com/graduate_lab415/nlp/-/blob/master/main.py
首先我們要確認用來製作模型的資料來源,當 CUT_METHOD 是 ckip 或 jieba 時,就從 CSV 中讀取資料;若是 test 則會使用下方的測試英文句子當來源。
來源預設是全部的問句或問答組合(docs、all_data),若是有輸入分類的編號,則會把相應的資料(docs_category[q_category]、all_data_category[q_category])賦值給docs、all_data,作為新的資料來源。
| 1 | """ | 
結語
接下來的幾天我們會繼續以這段程式碼延伸,斷詞、加 Label 等前置作業,到後面 TF、IDF、TF-IDF 的建置,一段段講解程式。