当前位置: 首页 > news >正文

专业网站建设好不好智能建站服务平台

专业网站建设好不好,智能建站服务平台,乔拓云在线设计网站,做网站需要绑定电脑ip吗我们拿到在拿到一堆语料数据#xff0c;或者是在网络中爬取下来的文本数据如何处理成为模型能够训练的数据呢#xff1f;这里有我们先经过停用词和按字分词的处理之后#xff0c;得到的问答对文本数据#xff0c;input_by_word.txt 和 target_by_word.txt 。其中#xff0…我们拿到在拿到一堆语料数据或者是在网络中爬取下来的文本数据如何处理成为模型能够训练的数据呢这里有我们先经过停用词和按字分词的处理之后得到的问答对文本数据input_by_word.txt 和 target_by_word.txt 。其中input_by_word.txt 里面存放问题如下 target_by_word.txt 里面存放回答如下 对应行组成一个问答对qa_pair。 我们的目的是把一行中文句子转换为对应的一行数字每一个字对应的数字都应该是独一无二的比如[不, 是] 会对应的转换为 [ 6, 4 ]这样的形式。那么我们可以通过构建字典来完成这种映射关系即 {..., 不: 6, 是: 4 ,...}另外我们还需要将模型的输出转换回原本的句子的形式即将 [ 6, 4 ] 转换为 [不, 是] 所以我们还需要实现反转字典即 {... , 6 : 不, 4 : 是 , ...} 。 我们可以把每个字作为一个词元统计这个词元在 input_by_word.txt 和 target_by_word.txt 里出现的频率根据词元的频率排序得到一个词典或者是分别对input_by_word.txt 和 target_by_word.txt 里面词元出现的频率根据频率排序得到 input_by_word.txt 对应的词典 和 target_by_word.txt 对应的词典。另外我们的词典中还包含几个特殊词元应对不同情况的需要如未知词元UNK等。假设我们通过按行遍历的方式拿到了每一行的句子sentence,通过对每一行句子进行处理即目前待处理的数据是这种形式为 list [是, 王, 若, 猫, 的 ] 。 class Wordsequence():PAD_TAG PADPAD 0UNK_TAG UNKUNK 1SOS_TAG SOSSOS 2EOS_TAG EOSEOS 3def __init__(self):self.dict {self.PAD_TAG: self.PAD,self.UNK_TAG: self.UNK,self.SOS_TAG: self.SOS,self.EOS_TAG: self.EOS}self.inverse_dict {} # 反转字典self.count {} # 用于记录词频def fit(self, sentence):词频统计:param sentence: list:return:for word in sentence:self.count[word] self.count.get(word, 0) 1记录完所有词元的出现次数我们着手构建词表可以规定词元的最大频率 max_count 和最小频率 min_count 以及词表最大容量 max_features 通常我们最大词频对最大词频不做限制对小于最小词频的词元不记录在字典统一用 UNK 替代另外还可以按照词频降序排序。下面我们实现了构建词典和反转词典的方法 def build_vocab(self, min_count5, max_countNone, max_featuresNone):构建词典:param min_count: 最小词频:param max_count: 最大词频:param max_features: 最大词元数:return:# 字典在遍历的过程中无法改变temp self.count.copy()for key in temp:cur_count self.count.get(key, 0)if min_count is not None:if cur_count min_count:del self.count[key]if max_count is not None:if cur_count max_count:del self.count[key]if max_features is not None:self.count (sorted(self.count.items(), keylambda x: x[1], reverseTrue)[:max_features])for key in self.count:self.dict[key] len(self.dict)self.inverse_dict zip(self.dict.values(), self.dict.keys()) 我们构建的两个词典分别如下 input {PAD: 0, UNK: 1, SOS: 2, EOS: 3, 呵: 4, 不: 5, 是: 6, 怎: 7, 么: 8, 了: 9, ...} target{PAD: 0, UNK: 1, SOS: 2, EOS: 3, 是: 4, 王: 5, 若: 6, 猫: 7, 的: 8, 。: 9,  ...} 在我们得到了词典之后我们就可以依次把每个句子映射为序列了。 在这里我们把句子转换为序列 def transform(self, sentence, max_len, add_eosFalse):把sentence转化为数值序列当add_eosFalse时sentence长度会是max_len当add_eosTrue时sentence长度会是max_len1:param sentence::param max_len::param add_eos: add_eosTrue使用 -- 也就是说输出长度会是max_len1add_eosFalse中使用 -- 也就是说输出长度会是max_len:return:# 把sentence长度固定为一致if len(sentence) max_len:sentence sentence[:max_len]sentence_len len(sentence) # 提前计算句子长度实现add_eos后句子长度还是一致if add_eos:sentence sentence[self.EOS_TAG]if sentence_len max_len:sentence sentence [self.PAD_TAG]*(max_len-sentence_len)result [self.dict.get(i, self.UNK) for i in sentence] # 若在字典中未出现则用UNK字符替代return result以及将序列反转回句子的形式和整个词典的大小 def inverse_transform(self, indices):把序列转为sentence:param indices: 序列:return: list 不包含有EOS的词元result []for i in indices:if i self.EOS:breakresult.append(self.inverse_dict.get(i, self.UNK_TAG))return resultdef __len__(self):return len(self.dict) # 返回词典大小 至此我们完成了构建词典和序列化句子所需要的函数。并通过 pickle 保存把词典保存为pkl文件在重新加载pkl的时候需要把该类重新导入一下。 def save_ws():ws Wordsequence()for line in open(config.chatbot_input_by_word_path, encodingutf-8).readlines():ws.fit(line.strip().split())ws.build_vocab()print(ws.dict, len(ws))pickle.dump(ws, open(config.chatbot_ws_input_by_word_path, wb))ws Wordsequence()for line in open(config.chatbot_target_by_word_path, encodingutf-8).readlines():ws.fit(line.strip().split())ws.build_vocab()print(ws.dict, len(ws))pickle.dump(ws, open(config.chatbot_ws_target_by_word_path, wb)) 我们现在要将文本数据变成这种形式为 list [是, 王, 若, 猫, 的 ] 。我们在构建 dataset 的时候处理 class ChatbotDataset(Dataset):def __init__(self):self.input_path config.chatbot_input_by_word_pathself.target_path config.chatbot_target_by_word_pathself.input_lines open(self.input_path, encodingutf-8).readlines()self.target_lines open(self.target_path, encodingutf-8).readlines()# 确保文本数据input 和 target数量一致assert len(self.input_lines) len(self.target_lines), input和target长度一致def __getitem__(self, idx):input self.input_lines[idx].strip().split() # 按空格切分为列表target self.target_lines[idx].strip().split()input_length len(input) # input的句子真实长度target_length len(target) # target的句子真实长度return input, target, input_length, target_lengthdef __len__(self):return len(self.input_lines) 然后重写DataLoader的 collate_fn 函数 def collate_fn(batch):重写cllate_fn:param batch: [(input, target, input_length, target_length),(input, target, input_length, target_length),...]:return:# 对input的句子按句子长度降序排序sorted(batch, keylambda x: x[2], reverseTrue)input, target, input_length, target_length zip(*batch)input [config.chatbot_ws_by_word_input.transform(i, max_lenconfig.chatbot_input_max_seq_len) for i in input]target [config.chatbot_ws_by_word_target.transform(i, max_lenconfig.chatbot_target_max_seq_len, add_eosTrue) for i in target]input torch.LongTensor(input)target torch.LongTensor(target)input_length torch.LongTensor(input_length)target_length torch.LongTensor(target_length)return input, target, input_length, target_length train_data_loader DataLoader(ChatbotDataset(),batch_sizeconfig.chatbot_batch_size,shuffleTrue, collate_fncollate_fn) if __name__ __main__:for idx, (input, target, input_length, target_length) in enumerate(train_data_loader):print(idx)print(input, target, input_length, target_length)break 最后我们可以的到序列化后的数据 0 tensor([[ 22, 59, 311, ..., 0, 0, 0],[ 19, 482, 9, ..., 0, 0, 0],[617, 807, 0, ..., 0, 0, 0],...,[670, 671, 17, ..., 0, 0, 0],[ 30, 349, 764, ..., 0, 0, 0],[220, 955, 6, ..., 0, 0, 0]]) tensor([[ 582, 218, 386, ..., 0, 0, 0],[1740, 3, 0, ..., 0, 0, 0],[ 304, 578, 859, ..., 0, 0, 0],...,[1852, 25, 131, ..., 0, 0, 0],[ 70, 265, 23, ..., 0, 0, 0],[ 297, 4, 56, ..., 74, 1362, 3]]) tensor([ 9, 3, 2, 11, 18, 3, 3, 5, 10, 7, 10, 1, 9, 4, 2, 5, 7, 77,45, 2, 15, 2, 3, 12, 11, 4, 5, 4, 45, 3, 12, 2, 5, 9, 7, 13,5, 9, 4, 11, 21, 6, 7, 5, 5, 3, 7, 6, 10, 4, 18, 19, 10, 4,2, 5, 3, 5, 4, 7, 6, 7, 4, 9, 9, 3, 3, 8, 6, 19, 6, 14,3, 10, 7, 4, 5, 5, 2, 5, 5, 11, 2, 7, 9, 6, 6, 18, 8, 4,4, 12, 3, 8, 9, 10, 19, 7, 5, 3, 8, 9, 9, 13, 10, 3, 6, 5,4, 4, 34, 11, 12, 7, 5, 6, 20, 2, 8, 3, 16, 5, 3, 4, 7, 12,6, 4]) tensor([ 4, 1, 6, 10, 3, 12, 15, 2, 5, 4, 11, 3, 6, 6, 8, 7, 4, 7,4, 12, 9, 8, 6, 5, 5, 5, 18, 4, 5, 1, 9, 13, 8, 1, 5, 1,6, 4, 13, 4, 9, 14, 12, 2, 5, 13, 12, 9, 9, 9, 4, 2, 4, 14,4, 4, 9, 6, 6, 5, 5, 2, 7, 6, 10, 14, 6, 10, 4, 7, 6, 7,2, 6, 7, 7, 3, 3, 4, 4, 4, 10, 4, 6, 5, 3, 13, 6, 3, 5,16, 2, 7, 10, 2, 3, 6, 9, 6, 3, 9, 13, 12, 8, 7, 10, 7, 12,4, 8, 2, 3, 7, 5, 4, 14, 2, 6, 4, 1, 5, 9, 14, 2, 3, 4,5, 79])Process finished with exit code 0
http://www.zqtcl.cn/news/467808/

相关文章:

  • 网站标题上的小图标怎么做的霞浦建设局网站
  • 国外那些网站做展厅比较好vp代理商网站管理系统
  • 广州最大网站建设wordpress数字超市
  • 怎么提高网站seo优化关键字排名wordpress媒体库搜索
  • 伊春网站制作怎么做视频网站赚钱吗
  • 前端网站开发邹城住房城乡建设部网站
  • 淘宝u站怎么做网站的网站建设费 科研 类
  • 代点任意广告链接网站怎样做才能让百度搜到网站产品
  • 宿迁网站搭建南宁建设局
  • app官网入口昆明排名优化
  • 新乡网站建设开发wordpress如何添加一个文章列表页
  • 中国3大做外贸的网站seo建站营销
  • 建站免费加盟高台县建设局网站
  • 网站联盟推广江门提供网站制作平台
  • 百度上面如何做网站asp源码下载
  • 婚庆网站的设计意义网站规格
  • 网站收录率嘉兴网站开发公司
  • 优秀的设计网站不备案 没版权 网站
  • 建设 互动 网站 模式网络营销模式不是孤立存在的
  • 怡梦姗网站做么上海21世纪人才网官网登录
  • 家政网站建设方案分析哈尔滨做网站找哪家好
  • 如何建设论坛网站营销宣传策划方案
  • 企业网站推广排名技术网
  • 网站建设网页设计培训学校延边网站建设
  • 自己做网站需要的技术个人简历表格下载
  • 做网站建设小程序ukidc做电影网站
  • 网站内容分析软文范例100字
  • 网站建站策划用vs做网站
  • 如何建自己的网站做农村电子商务的网站有哪些内容
  • 手机销售网站设计怎么推广软件让别人下载