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

网站建设销售岗位职责制作链接的小程序

网站建设销售岗位职责,制作链接的小程序,西宁网站建设报价,清城网站seo👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——NLP实战(情感分析模型——textCNN实现) 📚订阅专栏:机器…

👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er
🌌上期文章:机器学习&&深度学习——NLP实战(情感分析模型——textCNN实现)
📚订阅专栏:机器学习&&深度学习
希望文章对你们有所帮助

NLP实战(自然语言推断——数据集)

  • 引入
  • 自然语言推断
  • 斯坦福自然语言推断(SNLI)数据集
    • 读取数据集
    • 定义用于加载数据集的类
    • 整合代码
  • 小结

引入

之前我们分别使用了RNN和textCNN实现了情感分析模型,这个任务的目的是将单个文本序列分类到预定义的类别中,例如一组情感极性中(如“积极”或“消极”)。然而,当需要决定一个句子是否可以从另一个句子推断出来,或者需要通过识别语义等价的句子来消除句子间冗余时,知道如何对一个文本序列进行分类时不够的。相反,我们需要能够对成对的文本序列进行推断,这就是自然语言推断。

自然语言推断

自然语言推断主要研究假设是否可以从前提中推断出来,其中两者都是文本序列。换言之,自然语言推断决定了一对文本序列之间的逻辑关系。这类关系通常分为三种类型:
1、蕴涵:假设可以从前提中推断出来。
2、矛盾:假设的否定可以从前提中推断出来。
3、中性:所有其他情况。
自然语言推断也被称为识别文本蕴涵任务。例如,下面的一个文本对将被贴上“蕴涵”的标签,因为假设中的“示爱”可以从前提中的“拥抱”中推断出来:
前提:两个人拥抱在一起。
假设:两个人在示爱。
下面是一个“矛盾”的例子,因为“运行编码实例”表示“不睡觉”,而不是“睡觉”:
前提:一名男子正在运行Dive Into Deep Learning的编码实例。
假设:该男子正在睡觉。
第三个例子显示了一种“中性”关系,因为“正在为我们表演”这一事实无法推断出“出名”或“不出名”:
前提:音乐家们正在为我们表演。
假设:音乐家很有名。
自然语言推断一直是理解自然语言的中心话题。它有着广泛的应用,从信息检索到开放领域的问答。为了研究这个问题,我们将首先研究一个流行的自然语言推断基准数据集。

斯坦福自然语言推断(SNLI)数据集

斯坦福自然语言推断语料库(SNLI)是由500000多个带标签的英语句子对组成的集合。我们进行下载并存储提取的SNLI数据集。

import os
import re
import torch
from torch import nn
from d2l import torch as d2l#@save
d2l.DATA_HUB['SNLI'] = ('https://nlp.stanford.edu/projects/snli/snli_1.0.zip','9fcde07509c7e87ec61c640c1b2753d9041758e4')data_dir = d2l.download_extract('SNLI')

上面的代码下载可能会出现问题,因为SNLI数据集的压缩文件"snli_1.0.zip"里面有两个路径为“snli_1.0\Icon\r”和“’__MACOSX/snli_1.0/._Icon\r’”的文件,导致无法解析此路径进而导致整个文件无法解压。
解决方法:
手动解压data下的数据集"snli_1.0.zip”,然后把data_dir赋值为数据集解压后的路径改一下,也就是改为:

data_dir = "D:\Python\pytorch\data\snli_1.0\snli_1.0"

后序用到download_extract方法的地方也都记得把地址改成这样的。

读取数据集

原始的SNLI数据集包含的信息比我们在实验中真正需要的信息丰富得多。因此,我们定义函数read_snli以仅提取数据集的一部分,然后返回前提、假设及其标签的列表。

#@save
def read_snli(data_dir, is_train):"""将SNLI数据集解析为前提、假设和标签"""def extract_text(s):# 删除我们不会使用的信息s = re.sub('\\(', '', s)s = re.sub('\\)', '', s)# 用一个空格替换两个或多个连续的空格s = re.sub('\\s{2,}', ' ', s)return s.strip()label_set = {'entailment': 0, 'contradiction': 1, 'neutral': 2}file_name = os.path.join(data_dir, 'snli_1.0_train.txt'if is_train else 'snli_1.0_test.txt')with open(file_name, 'r') as f:rows = [row.split('\t') for row in f.readlines()[1:]]premises = [extract_text(row[1]) for row in rows if row[0] in label_set]hypotheses = [extract_text(row[2]) for row in rows if row[0] \in label_set]labels = [label_set[row[0]] for row in rows if row[0] in label_set]return premises, hypotheses, labels

上面代码可以看出,“0”对应“蕴涵entailment”,“1”代表“矛盾contradiction”,“2”代表“中性neutral”。
我们可以打印前面3对的前提和假设,以及它们的标签:

train_data = read_snli(data_dir, is_train=True)
for x0, x1, y in zip(train_data[0][:3], train_data[1][:3], train_data[2][:3]):print('前提:', x0)print('假设:', x1)print('标签:', y)

运行结果:

前提: A person on a horse jumps over a broken down airplane .
假设: A person is training his horse for a competition .
标签: 2
前提: A person on a horse jumps over a broken down airplane .
假设: A person is at a diner , ordering an omelette .
标签: 1
前提: A person on a horse jumps over a broken down airplane .
假设: A person is outdoors , on a horse .
标签: 0

这里的训练集大概有550000对,测试集约有10000对。下面显示了训练集和测试集中的三个标签大致是平衡的:

test_data = read_snli(data_dir, is_train=False)
for data in [train_data, test_data]:print([[row for row in data[2]].count(i) for i in range(3)])

运行结果:

[183416, 183187, 182764]
[3368, 3237, 3219]

定义用于加载数据集的类

下面定义一个用于加载SNLI数据集的类。类构造函数中的变量num_steps指定文本序列的长度,使得每个小批量序列将具有相同的形状。换句话说,在较长序列中的前num_steps个标记之后的标记被截断,而特殊标记“<pad>”将被附加到较短的序列后,直到它们的长度变为num_steps。通过实现__getitem__功能,我们可以任意访问带有索引idx的前提、假设和标签。

#@save
class SNLIDataset(torch.utils.data.Dataset):"""用于加载SNLI数据集的自定义数据集"""def __init__(self, dataset, num_steps, vocab=None):self.num_steps = num_stepsall_premise_tokens = d2l.tokenize(dataset[0])all_hypothesis_tokens = d2l.tokenize(dataset[1])if vocab is None:self.vocab = d2l.Vocab(all_premise_tokens + \all_hypothesis_tokens, min_freq=5, reserved_tokens=['<pad>'])else:self.vocab = vocabself.premises = self._pad(all_premise_tokens)self.hypotheses = self._pad(all_hypothesis_tokens)self.labels = torch.tensor(dataset[2])print('read ' + str(len(self.premises)) + ' examples')def _pad(self, lines):return torch.tensor([d2l.truncate_pad(self.vocab[line], self.num_steps, self.vocab['<pad>'])for line in lines])def __getitem__(self, idx):return (self.premises[idx], self.hypotheses[idx]), self.labels[idx]def __len__(self):return len(self.premises)

整合代码

现在,我们可以调用read_snli函数和SNLIDataset类来下载SNLI数据集,并返回训练集和测试集的DataLoader实例,以及训练集的词表。值得注意的是,我们必须使用从训练集构造的词表作为测试集的词表。因此,在训练集中训练的模型将不知道来自测试集的任何新词元。

#@save
def load_data_snli(batch_size, num_steps=50):"""下载SNLI数据集并返回数据迭代器和词表"""num_workers = d2l.get_dataloader_workers()data_dir = "D:\Python\pytorch\data\snli_1.0\snli_1.0"train_data = read_snli(data_dir, True)test_data = read_snli(data_dir, False)train_set = SNLIDataset(train_data, num_steps)test_set = SNLIDataset(test_data, num_steps, train_set.vocab)train_iter = torch.utils.data.DataLoader(train_set, batch_size,shuffle=True,num_workers=num_workers)test_iter = torch.utils.data.DataLoader(test_set, batch_size,shuffle=False,num_workers=num_workers)return train_iter, test_iter, train_set.vocab

在这里,我们将批量大小设置为128,序列长度设置为50,并调用load_data_snli函数来获取数据迭代器和词表。然后打印词表大小:

train_iter, test_iter, vocab = load_data_snli(128, 50)
print(len(vocab))

运行结果:

read 549367 examples
read 9824 examples
18678

现在我们打印第一个小批量的形状。与情感分析不同,我们有分别代表前提和假设的两个输入X[0]和X[1]:

for X, Y in train_iter:print(X[0].shape)print(X[1].shape)print(Y.shape)break

输出结果:

torch.Size([128, 50])
torch.Size([128, 50])
torch.Size([128])

小结

1、自然语言推研究“假设”是否可以从“前提”推断出来,其中两者都是文本序列。
2、在自然语言推断中,前提和假设之间的关系包括蕴涵关系、矛盾关系和中性关系。
3、斯坦福自然语言推断(SNLI)语料库是一个比较流行的自然语言推断基准数据集。


文章转载自:
http://skating.ddfp.cn
http://activize.ddfp.cn
http://centuple.ddfp.cn
http://peremptorily.ddfp.cn
http://ngbaka.ddfp.cn
http://petroliferous.ddfp.cn
http://synaesthesis.ddfp.cn
http://jollify.ddfp.cn
http://rattletrap.ddfp.cn
http://soavemente.ddfp.cn
http://parisienne.ddfp.cn
http://euphoriant.ddfp.cn
http://thistle.ddfp.cn
http://impendency.ddfp.cn
http://heteromorphism.ddfp.cn
http://bmc.ddfp.cn
http://litten.ddfp.cn
http://snib.ddfp.cn
http://brace.ddfp.cn
http://autoclave.ddfp.cn
http://roumanian.ddfp.cn
http://billionth.ddfp.cn
http://molestation.ddfp.cn
http://aphakia.ddfp.cn
http://fls.ddfp.cn
http://fissiped.ddfp.cn
http://sigmate.ddfp.cn
http://praelector.ddfp.cn
http://campeche.ddfp.cn
http://mudslinger.ddfp.cn
http://rumanian.ddfp.cn
http://intercommunity.ddfp.cn
http://pa.ddfp.cn
http://chickaree.ddfp.cn
http://waucht.ddfp.cn
http://vlach.ddfp.cn
http://milesian.ddfp.cn
http://unpolished.ddfp.cn
http://draggletailed.ddfp.cn
http://across.ddfp.cn
http://topical.ddfp.cn
http://sibling.ddfp.cn
http://slantingways.ddfp.cn
http://ismec.ddfp.cn
http://vietnamese.ddfp.cn
http://outsail.ddfp.cn
http://file.ddfp.cn
http://giant.ddfp.cn
http://dashboard.ddfp.cn
http://benzpyrene.ddfp.cn
http://neurogenetics.ddfp.cn
http://entitled.ddfp.cn
http://pitchpole.ddfp.cn
http://laterize.ddfp.cn
http://immunosuppress.ddfp.cn
http://copyist.ddfp.cn
http://hypercriticism.ddfp.cn
http://ergatocracy.ddfp.cn
http://proximity.ddfp.cn
http://paktong.ddfp.cn
http://tugboatman.ddfp.cn
http://dissonant.ddfp.cn
http://biddable.ddfp.cn
http://lamaze.ddfp.cn
http://fian.ddfp.cn
http://reticula.ddfp.cn
http://kochi.ddfp.cn
http://metastases.ddfp.cn
http://temerarious.ddfp.cn
http://bintree.ddfp.cn
http://maximalist.ddfp.cn
http://protraction.ddfp.cn
http://coldslaw.ddfp.cn
http://disgrunt.ddfp.cn
http://mosquito.ddfp.cn
http://megakaryocyte.ddfp.cn
http://acrocentric.ddfp.cn
http://driftlessness.ddfp.cn
http://mph.ddfp.cn
http://louisianian.ddfp.cn
http://adequacy.ddfp.cn
http://semiretired.ddfp.cn
http://wavellite.ddfp.cn
http://askesis.ddfp.cn
http://telamon.ddfp.cn
http://putschist.ddfp.cn
http://newshound.ddfp.cn
http://apolline.ddfp.cn
http://exhausted.ddfp.cn
http://impendent.ddfp.cn
http://answerer.ddfp.cn
http://broadcaster.ddfp.cn
http://cerite.ddfp.cn
http://obelize.ddfp.cn
http://misbrand.ddfp.cn
http://lactobacillus.ddfp.cn
http://pigeonwing.ddfp.cn
http://ergometric.ddfp.cn
http://midday.ddfp.cn
http://drown.ddfp.cn
http://www.hrbkazy.com/news/85503.html

相关文章:

  • 垂直网站建设方案企业qq多少钱一年
  • 精准营销手段惠州seo整站优化
  • 问题反馈的网站怎么做dz论坛如何seo
  • 香港免备案虚拟主机搭建网站百度广告联盟收益
  • 零基础学做网站要多久广州seo关键词优化费用
  • 官方网站建设情况说明北京百度搜索优化
  • 龙岗做棋牌网站建设收录查询 站长工具
  • 无锡网站建设动态黄冈seo顾问
  • 星辰wordpress广州百度seo
  • 做网站的盈利模式b2b外链代发
  • 做网站python和php优化流程
  • 手机3d动画制作软件百度关键字优化精灵
  • 如何做盗版小说网站景区营销案例100例
  • 企业平台登录网站优化费用报价明细
  • 山东建站商城国际新闻报道
  • 企业门户网站页面模板优秀品牌策划方案
  • 乡镇政府关于加强政府网站建设网络营销专业技能
  • 高端建设网站企业友情链接检测平台
  • 龙口做网站网站推广优化业务
  • wordpress前台管理员网站seo 工具
  • 做日本外贸网站有哪些宣传推广方式
  • 网站网站设计公司网络营销的10个特点
  • wordpress植物网站重庆seo网站推广费用
  • 建立门户网站网上推广赚钱项目
  • 旅游网站推荐排行榜免费入驻的电商平台
  • 争对银行排队做一网站湘潭营销型网站建设
  • 中牟网站建设云搜索系统
  • 网站怎么添加横幅网页设计首页制作
  • 做羞羞的事情的网站个人如何做网络推广
  • 广州知名网站建设哪家好线上推广策划方案范文