在进行NLP模型训练的时候,训练数据集经常是被保存在csv文件中,我们训练模型的时候就需要从csv文件中取数据
同时,一些公司的大语言模型的语料来源,往往是通过爬虫等技术从网路上爬取下来的,数据的训练的标签(假如是实体识别的任务)一般都需要进行归一化来满足模型的能效,而业务方面可能有需要对训练的数据进行分析,这时候就需要归一之前的数据,往往这样的情况下,写一个脚本直接得到归一前后的映射表就可以非常方便地完成任务
CSV,全称是 Comma-Separated Values,直译就是逗号分隔值。在 CSV 文件中,每一行代表一个数据记录,每一个数据记录中的单个数据,则由逗号分开(也可使用其他分隔符),这样便形成了一个二维的表格结构。
CSV 格式文本文件是一种广泛应用的纯文本格式,它的特点是:
Pandas 是一个强大的开源数据处理库,常用于数据清洗,数据处理,数据分析等。它内建了很多函数和方法,可以让我们非常方便地对各类数据进行操作。
主要功能包括:
数据串联与合并
Pandas 提供了各种工具(全功能的序列函数,日期范围函数,数据对齐和数据不同结构的合并等),可以快速地将不同结构的数据整合在一起,使我们对数据进行处理。
时间序列:Pandas 提供了简单、强大且高效的功能来执行类似于重采样、设定/获取日期时间偏移量、对时区进行转换的操作。
数据清洗:在将散乱的数据格式化为可以输出的格式之前,需要使用 Pandas 来清洗、转换和加工数据。
数据处理Pandas 省去了大部分数据处理任务需要写大量循环的过程,基于哈希表优秀的设计,这样不仅有提高的性能,也有更高的工作效率。
根据提供的码表数据在脚本里面对应生成归一化前后的映射表
需要的环境库
import pandas as pd
from collections import defaultdict
from tqdm import tqdm
defaultdict是默认字典类型,tqdm是进度显示
data_path = r"你的文件路径"
data = pd.read_csv(data_path)
读取csv文件内容,这里data是Dataframe类型的数据
# 定义处理列表的函数
def word_tolist(wordlist):
if "|" in wordlist:
return wordlist.split("|")
else:
return [wordlist]
从文件里我们看到,wordList字段对应的值用“|”隔开,那我们就以“|”为分割获取列表,如果不存在“|”则直接返回单个数据的列表
dict_list_type = defaultdict(list)
for i,row in tqdm(data.iterrows()):
key = row["key"]
wordlist_str = row["wordList"]
wordlist = word_tolist(wordlist_str)
type_word = row["type"]
# print(key)
dict_list_type[type_word].append({key:wordlist})
print(dict_list_type)
iterrows()返回的是csv文件中每一行的序号以及对应的字典数据,大家可以在循环里打印出来就可以有直观的感受
print(row)
这里返回的dict_list_type字典的结构是嵌入列表字典,最外层的主键是类型type,对应的值是一个列表数据,列表里面的每个元素又是一个字典类型,对应这个type所对应的各个归一化后的key作为主键,值为归一化之前的列表数据,打印出来显示为
获取到这个映射表后,就能方便地得到归一化前后的对应数据(对应的csv文件以绑定到资源当中)
欢迎大家讨论交流~