目录
1.常见流程
将文本作为字符串加载到内存中。
将字符串拆分为词元(如单词和字符)。
建立一个词汇表,将拆分的词元映射到数字索引。
将文本转换为数字索引序列,方便模型操作。
整合所有功能
#知识点1:词汇表-->语料、<unk>、pad、bos、eos
1 <unk> :标记 未知词元
2 pad :若两句话长短不一致,补充pad使每一句话长度一致
#知识点2:
#知识点随记
#若是把一个英文的字符串放入列表中,是以char(一个字母一个字母)的形式放进去的
s = 'the time machine by h g wells'
list(s)
['t', 'h', 'e', ' ', 't', 'i', 'm', 'e', ' ', 'm', 'a', 'c', 'h', 'i', 'n', 'e', ' ', 'b', 'y', ' ', 'h', ' ', 'g', ' ', 'w', 'e', 'l', 'l', 's']
#知识点3:
#dict().item() 返回字典的key和value
2.导包
#python自带的两个包
import collections #该库提供了一些集合对象的实现,包括Counter、deque、defaultdict等
import re #正则表达式的模块库
3.定义函数:读取本地的数据集
def read_time_machine():
with open('./article.txt', 'r') as f: #'r'只读模式
lines = f.readlines() #读取每一行数据
#re.sub参数:pattern表示正则表达式; repl:用什么替代;string:对什么文本操作; ^A-Za-z表示除了后面的A-Za-z,都要被替换; +加号表示重复
return [re.sub('[^A-Za-z]+', ' ',line).strip().lower() for line in lines] #不符合正则的用空格表示, strip():去掉空格, lower():把大写字母变成小写
4.定义函数:文本词元化
def tokenize(lines, token='word'): #token='word'相当于设置判断标志
"""将文本行拆分成单词或者字符词元
lines:需要传入的数据
token = 'word' 或者 token = 'char'两种形式
"""
if token == 'word':
#line.split()返回的是一个列表
return [line.split() for line in lines] #split()功能 默认按空格拆分数据
elif token == 'char':
#list(line) 返回的是一个列表
return [list(line) for line in lines] #list(line)将一整行英文文本的字符串放入列表中,会每个字母单独成为一个列表元素
else: #若输入未知词元类型,打印报错提醒
print('错误:未知词元类型:' + token)
#调用函数 #测试使用,无关代码
#总结:英文用token='char'进行词元化的较多,因为字母共有26个,word太多了
tokens = tokenize(lines, token='char') #tokens是一个二维列表
for i in range(11)

最低0.47元/天 解锁文章
4984

被折叠的 条评论
为什么被折叠?



