Day 15 - [语料库模型] 03-语料读取&资料格式转换

今天的主题是介绍如何读取 CSV (之前从各个网站爬下来的问答集),并将资料转成後面制作语料库模型要用的格式。

先复习一下之前爬下来的格式好了,待会我们要做的是以 Q (问题)来制作模型

csv_excel

readwriter

我将 CSV 整理成 4 种格式
完整程序码: https://gitlab.com/graduate_lab415/nlp/-/blob/master/readwriter.py

  • get_field("Q"): 可以得到 docsdocs_category 用来制作模型。
  • to_dict(): 可以得到 all_dataall_data_category 用来回传完整问答组合给 API。

四种格式

  1. docs: 全部的 Q
    [
        "如何申请⻑期照顾服务及流程为何?",
        "申请长照服务有什麽条件?"
    ]
    
  2. docs_category: 依 category 分类的 Q
    {
        "1":[
            "如何申请⻑期照顾服务及流程为何?",
            "申请长照服务有什麽条件?"
        ],
        "2":[
            ...
        ]
    }
    
  3. all_data: 完整的问答组合
    [
        {
            '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/'
        },
        {
            ...
        }
    ]
    
  4. all_data_category: 依 category 分类的问答组合
    {
        "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_METHODckipjieba 时,就从 CSV 中读取资料;若是 test 则会使用下方的测试英文句子当来源。
来源预设是全部的问句或问答组合(docsall_data),若是有输入分类的编号,则会把相应的资料(docs_category[q_category]all_data_category[q_category])赋值给docsall_data,作为新的资料来源。

"""
CUT_METHOD = test | ckip | jieba
"""
CUT_METHOD = 'ckip'


"""Source"""
q_category = sys.argv[2]
if CUT_METHOD in ["ckip", "jieba"]:
    docs, docs_category = CsvReader().get_field("Q")
    all_data, all_data_category = CsvReader().to_dict()

    """group qa by category and write json to file"""
    if q_category in ['1', '2', '3', '4', '5']:
        docs = docs_category[q_category]
        all_data = all_data_category[q_category]

else:
    docs = [
        "it is a good day, I like to stay here",
        "I am happy to be here",
        "I am bob",
        "it is sunny today",
        "I have a party today",
        "it is a dog and that is a cat",
        "there are dog and cat on the tree",
        "I study hard this morning",
        "today is a good day",
        "tomorrow will be a good day",
        "I like coffee, I like book and I like apple",
        "I do not like it",
        "I am kitty, I like bob",
        "I do not care who like bob, but I like kitty",
        "It is coffee time, bring your cup",
    ]
    all_data = docs

结语

接下来的几天我们会继续以这段程序码延伸,断词、加 Label 等前置作业,到後面 TF、IDF、TF-IDF 的建置,一段段讲解程序。



<<:  Day29 切版笔记 -订单进度条

>>:  第 14 集:Bootstrap 客制化 Sass 原始码架构

Day29 参加职训(机器学习与资料分析工程师培训班),Tensorflow.keras & Pytorch

上午: Python机器学习套件与资料分析 使用tensorflow.keras 测试不同optim...

[Tableau Public] day 1:想成功就从意志力开始吧~

某天在FB上滑着滑着,看到了iT邦帮忙的铁人赛活动,觉得…!我想要挑战以前未成功的遗憾,甚麽遗憾呢…...

使用Django部署模型

上一篇把Django的开发环境准备好了, 这一篇我们来写程序将模型部署在Django专案并且可以提供...

iOS APP 开发 OC 第二十天,@class 物件互相引用 重现文字狱烧书,苏轼冤狱而死。

tags: OC 30 day 创建一个类 如何创建一个书的class? 首先点击add File的...

[DAY3]SQL新手的懒人笔记

[DAY3]SQL的新手懒人笔记 (大写为内建语法) 21.ORDER BY可用来排序资料,如果是字...