download:用 React.js+Egg.js 造轮子 全栈开发旅游电商应用
1. 为啥要有预处置?
NLP(Natural Language Processing)指的是自然言语处置,就是研讨计算机理解人类言语的一项技术。
要研讨言语处置,那么首先得有言语文本。之前讲过应用固定格式的文本中止序列化处置。
在序列化之前,如何把这些文本按照一定的格式处置好,也是一项基础的工作,这一步叫数据的预处置。
2. 文本存储的几种载体
普通直接可读的文本数据会存储在这么几种文件里:
- 数据库:sqlite、mysql……
- 表格文件:csv、excel……
- 纯文本文件:txt、json……
下面我们就挨个来讲一下,如何读写这些文件。
2.1 数据库
数据库存储文本信息,有很多优势:
拿sqlite数据库举例子,看一下如何中止数据的读取。
下面有一个数据库文件,大小为8KB。
数据库里面有一张称号叫"ci"的表,数据结构和内容如下:
表里面存储了25条数据,是25篇宋词,每条数据包含序号(value)、词牌名(rhythmic)、作者(author)、内容(content)。
假定,我们要运用每首词的内容作为锻炼集,那么我们该如何组织数据呢?# 导入sqlite的支持
import sqlite3
# 保管每首词的内容
str_array = []
# 指定文件位置(同级目录data下的data.db文件)树立衔接
conn = sqlite3.connect('./data/data.db')
# 执行查询语句,只获取author, content两个字段,获得游标(内含结果)
cursor = conn.execute("SELECT author, content from ci;")
# 循环结果
for row in cursor:
# 获取结果(0 author, 1 content)中索引为1的数据
ci = row[1]
# 参与内容列表
str_array.append(ci)
# 关闭操作
cursor.close()
conn.close()
# 打印结果
print(str_array)
复制代码 最终打印结果如下:[
'出砒霜,价钱可。\r\n赢得拨灰兼弄火。\r\n畅杀我。',
'丞相有才裨造化,圣皇宽诏养疏顽。\r\n赢取十年闲。',
'归。\r\n十万人家儿样啼。\r\n公归去,何日是来时。',
'归。\r\n数得宣麻拜相时。\r\n秋前後,公衮更莱衣。',
'百尺长藤垂到地,千株乔木密参天。\r\n只在郡城边。',
'巍峨万丈与天高。\r\n物轻人意重,千里送鹅毛。\r\n\r\n'
……
]
复制代码 其中\r\n是回车换行。我们看看巍峨万丈与天高。\r\n物轻人意重,千里送鹅毛。\r\n\r\n在文本框的展示,能够辅佐你更好天文解。
延伸学问:sqlite3的写入
数据的写入很简单,和数据读取类似。也是先树立衔接,然后执行sql语句,这里多一个commit提交,最后断开衔接。
下面举例说明,连续插入2条数据。# 导入sqlite的支持
import sqlite3
# %% 数据表数据的写入
conn = sqlite3.connect('./data/data.db')
for t in[(9998,"称号1","作者1","正文1"),(9999,"称号2","作者2","正文2")]:
conn.execute("insert into ci values (?,?,?,?)", t)
conn.commit()
conn.close()
复制代码 2.2 表格文档
相比于数据库,表格类文档(csv、excel)也是一种很好的文本存储方式。
它双击就能翻开,可以直接操作内容,也能应用自带的工具做一些数据处置。
下面有一个csv文件,里面有很多行,每一行是一首宋词,前三列分别是:词牌名、作者、内容。
假定,我们要运用每首词的内容作为锻炼集,那么我们该如何组织数据呢?import csv
# 树立存储内容的数组
str_array = []
# 构建阅读器,指定文件位置(同级目录data下的data.csv文件),指定编码格式
csv_reader = csv.reader(open("./data/data.csv",encoding="gbk"))
# 循环每一行
for row in csv_reader:
# 取出索引为2的列(第3列),存入数组
str_array.append(row[2])
# 打印数据
print(str_array)
复制代码 最终打印结果如下:[
'出砒霜,价钱可。\r\n赢得拨灰兼弄火。\r\n畅杀我。',
'丞相有才裨造化,圣皇宽诏养疏顽。\r\n赢取十年闲。',
'归。\r\n十万人家儿样啼。\r\n公归去,何日是来时。',
'归。\r\n数得宣麻拜相时。\r\n秋前後,公衮更莱衣。',
'百尺长藤垂到地,千株乔木密参天。\r\n只在郡城边。',
'巍峨万丈与天高。\r\n物轻人意重,千里送鹅毛。\r\n\r\n'
……
]
复制代码 这样,这个数组数据就可以运用了。
延伸学问:csv的写入
数据的写入和数据读取类似。先构建一个写入器 ,写入数据,最后需求关闭翻开的文件。
下面举例说明,新建一个csv文件,然后插入1条数据。import csv
# 以写入的方式翻开(新建)一个文件,指定编码
f_csv = open('./data/data2.csv','w',encoding='gbk', newline='')
# 获取这个文件的写入器
csv_writer = csv.writer(f_csv)
# 写入一行数据
csv_writer.writerow(['第一列','第二列','第三列'])
# 关闭文件
f_csv.close()
复制代码 代码执行后,会在同级的data目录下新建一个data2.csv文件,然后写入一行3列的数据。
2.3 文本文档
文本文档(txt)是最轻量级的一种文本存储方式。
它不像数据库或者表格文件那样有关联关系,它只能罗列一段段文本,它也无法承载太多的数据,普通上万行文本就会招致它读取困难。
但是,它也是有优势的。那就是——运用便当。
翻开文件往里面输入字符就可以了。
由于没有行列条数的概念,普通文本文档要存储数据集,都是以特殊字符作为区分,例如回车换行符,一行就是一条数据。
下面有一段文本,我们看看如何读取它。
|