深圳网站建设最好品牌建设存在的问题
2026/4/18 11:45:14 网站建设 项目流程
深圳网站建设最好,品牌建设存在的问题,网页和网站的关系,集团公司网站建设文本预处理 学习目标 通过本课程的学习#xff0c;学员将理解文本预处理的基本步骤#xff0c;包括将文本加载到内存中、拆分为词元、构建词表将词元映射为数字索引#xff0c;并能够将文本数据转换为词元索引序列以供模型操作。 相关知识点 文本预处理 学习内容 对于…文本预处理学习目标通过本课程的学习学员将理解文本预处理的基本步骤包括将文本加载到内存中、拆分为词元、构建词表将词元映射为数字索引并能够将文本数据转换为词元索引序列以供模型操作。相关知识点文本预处理学习内容对于序列数据处理问题这样的数据存在许多种形式文本是最常见例子之一。例如一篇文章可以被简单地看作一串单词序列甚至是一串字符序列。本课程将解析文本的常见预处理步骤。这些步骤通常包括将文本作为字符串加载到内存中。将字符串拆分为词元如单词和字符。建立一个词表将拆分的词元映射到数字索引。将文本转换为数字索引序列方便模型操作。%pip install d2l import collections import refromd2l import torch as d2l1 文本预处理1.1 读取数据集首先我们从H.G.Well的时光机器中加载文本。这是一个相当小的语料库只有30000多个单词但足够我们小试牛刀而现实中的文档集合可能会包含数十亿个单词。下面的函数将数据集读取到由多条文本行组成的列表中其中每条文本行都是一个字符串。为简单起见我们在这里忽略了标点符号和字母大写。#下载数据集!wget https://model-community-picture.obs.cn-north-4.myhuaweicloud.com/ascend-zone/notebook_datasets/2a455d7c0ea211f085e8fa163edcddae/timemachine.txtdefread_time_machine(file_path):#save将时间机器数据集加载到文本行的列表中withopen(file_path,r)asf:linesf.readlines()return[re.sub([^A-Za-z], ,line).strip().lower()forlineinlines]file_path./timemachine.txtlinesread_time_machine(file_path)print(f# 文本总行数:{len(lines)})print(lines[0])print(lines[10])1.2 词元化和词表1.2.1 词元化下面的tokenize函数将文本行列表lines作为输入列表中的每个元素是一个文本序列如一条文本行。每个文本序列又被拆分成一个词元列表词元token是文本的基本单位。最后返回一个由词元列表组成的列表其中的每个词元都是一个字符串string。def tokenize(lines,tokenword):#save将文本行拆分为单词或字符词元iftoken word:return[line.split() for line in lines]elif token char:return[list(line) for line in lines]else: print(错误未知词元类型token)tokens tokenize(lines)fori in range(11): print(tokens[i])1.2.2 词表词元的类型是字符串而模型需要的输入是数字因此这种类型不方便模型使用。现在让我们构建一个字典通常也叫做词表vocabulary用来将字符串类型的词元映射到从0 00开始的数字索引中。我们先将训练集中的所有文档合并在一起对它们的唯一词元进行统计得到的统计结果称之为语料corpus。然后根据每个唯一词元的出现频率为其分配一个数字索引。很少出现的词元通常被移除这可以降低复杂性。另外语料库中不存在或已删除的任何词元都将映射到一个特定的未知词元“unk”。我们可以选择增加一个列表用于保存那些被保留的词元例如填充词元“pad”序列开始词元“bos”序列结束词元“eos”。classVocab:#save文本词表def __init__(self,tokensNone,min_freq0,reserved_tokensNone):iftokens is None: tokens []ifreserved_tokens is None: reserved_tokens []# 按出现频率排序counter count_corpus(tokens)self._token_freqs sorted(counter.items(),keylambda x: x[1],reverseTrue)# 未知词元的索引为0self.idx_to_token [unk]reserved_tokens self.token_to_idx {token: idxforidx,token in enumerate(self.idx_to_token)}fortoken,freq in self._token_freqs:iffreq min_freq:breakiftoken not in self.token_to_idx: self.idx_to_token.append(token)self.token_to_idx[token] len(self.idx_to_token)-1 def __len__(self):returnlen(self.idx_to_token)def __getitem__(self,tokens):ifnot isinstance(tokens,(list,tuple)):returnself.token_to_idx.get(tokens,self.unk)return[self.__getitem__(token) for token in tokens]def to_tokens(self,indices):ifnot isinstance(indices,(list,tuple)):returnself.idx_to_token[indices]return[self.idx_to_token[index] for index in indices]property def unk(self):# 未知词元的索引为0return0 property def token_freqs(self):returnself._token_freqs def count_corpus(tokens):#save统计词元的频率# 这里的tokens是1D列表或2D列表iflen(tokens) 0 or isinstance(tokens[0],list):# 将词元列表展平成一个列表tokens [token for line in tokens for token in line]returncollections.Counter(tokens)我们首先使用时光机器数据集作为语料库来构建词表然后打印前几个高频词元及其索引。vocabVocab(tokens)print(list(vocab.token_to_idx.items())[:10])out[(unk, 0), (the, 1), (i, 2), (and, 3), (of, 4), (a, 5), (to, 6), (was, 7), (in, 8), (that, 9)]现在我们可以将每一条文本行转换成一个数字索引列表。foriin[0,10]:print(文本:,tokens[i])print(索引:,vocab[tokens[i]])out文本:[the,time,machine,by,h,g,wells]索引:[1,19,50,40,2183,2184,400]文本:[twinkled,and,his,usually,pale,face,was,flushed,and,animated,the]索引:[2186,3,25,1044,362,113,7,1421,3,1045,1]1.3 整合所有功能在使用上述函数时我们将所有功能打包到load_corpus_time_machine函数中该函数返回corpus词元索引列表和vocab时光机器语料库的词表。我们在这里所做的改变是1.本课程使用字符而不是单词实现文本词元化2. 时光机器数据集中的每个文本行不一定是一个句子或一个段落还可能是一个单词因此返回的corpus仅处理为单个列表而不是使用多词元列表构成的一个列表。defload_corpus_time_machine(max_tokens-1):#save返回时光机器数据集的词元索引列表和词表linesread_time_machine(file_path)tokenstokenize(lines,char)vocabVocab(tokens)# 因为时光机器数据集中的每个文本行不一定是一个句子或一个段落# 所以将所有文本行展平到一个列表中corpus[vocab[token]forlineintokensfortokeninline]ifmax_tokens0:corpuscorpus[:max_tokens]returncorpus,vocab file_path./timemachine.txtcorpus,vocabload_corpus_time_machine()len(corpus),len(vocab)out(170580, 28)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询