上一篇:《研发LLM模型,如何用数值表示人类自然语言?》
序言:人工智能数据工程师在采集数据时往往会使用不同的工具,因此最终得到的原始数据结构各不相同。市场上已知的数据采集和分析工具所输出的文件格式大致有几种。前面我们介绍了如何从谷歌的TFDS中提取支持的格式数据,今天将为大家讲解两类更常用的数据集文件格式:CSV和JSON结构化数据集。这些数据集的质量和组织方式在很大程度上决定了模型的质量和成功与否。
从CSV文件中读取文本
虽然TFDS有很多优秀的数据集,但它并不是包罗万象的,很多时候你需要自己管理数据的加载。NLP数据最常见的格式之一就是CSV文件。在接下来的几章中,你将使用一个我从开源的文本情感分析数据集改编的Twitter数据CSV文件。你将使用两个不同的数据集,一个用于二元分类,将情感简化为“positive”或“negative”,另一个则使用全范围的情感标签。每个数据集的结构是相同的,所以我只展示二元版本。
Python的csv库使得处理CSV文件变得简单。在这种情况下,数据存储在每行两个值的形式中。第一个值是一个数字(0或1),表示情感是消极还是积极。第二个值是一个包含文本的字符串。
以下代码将读取CSV文件并进行与我们在前一部分中相似的预处理。它会在复合词的标点符号周围添加空格,使用BeautifulSoup去除HTML内容,然后删除所有标点符号字符:
import csv
sentences = []
labels = []
with open('/tmp/binary-emotion.csv', encoding='UTF-8') as csvfile:
reader = csv.reader(csvfile, delimiter=",")
for row in reader:
labels.append(int(row[0]))
sentence = row[1].lower()
sentence = sentence.replace(",", " , ")
sentence = sentence.replace(".", " . ")
sentence = sentence.replace("-", " - ")
sentence = sentence.replace("/", " / ")
soup = BeautifulSoup(sentence)
sentence = soup.get_text()
words = sentence.split()
filtered_sentence = ""
for word in words: