精华内容
下载资源
问答
  • PyTorch自然语言处理

    2021-09-04 17:57:21
    特点 展示如何使用基于 Python 的深度学习库 PyTorch 应用...学习构建自然语言处理生产系统的设计模式 内容 介绍 监督学习范式 观察和目标编码 计算图 PyTorch 基础知识 自然语言处理 语料库、令牌和类型 Uni

    特点

    • 展示如何使用基于 Python 的深度学习库 PyTorch 应用这些方法
    • 演示如何使用 PyTorch 构建应用程序
    • 探索计算图和监督学习范式
    • 掌握 PyTorch 优化张量操作库的基础知识
    • 概述传统的 NLP 概念和方法
    • 学习构建神经网络所涉及的基本思想
    • 使用嵌入来表示单词、句子、文档和其他特征
    • 探索序列预测并生成序列到序列模型
    • 学习构建自然语言处理生产系统的设计模式

    内容

    • 介绍
      • 监督学习范式
      • 观察和目标编码
      • 计算图
      • PyTorch 基础知识
    • 自然语言处理
      • 语料库、令牌和类型
      • Unigrams, Bigrams, Trigrams, …, N-grams
      • 引理和词干
      • 对句子和文件进行分类
      • 分类词:POS 标记
      • 分类跨度:分块和命名实体识别
      • 句子结构
      • 词义和语义
    • 神经网络的基础组件
      • 感知器:最简单的神经网络
      • 激活函数
      • 损失函数
      • 深入了解监督训练
      • 辅助训练概念
      • 示例:对餐厅评论的情绪进行分类
    • 自然语言处理的前馈网络
      • 多层感知器
      • 示例:使用 MLP 进行姓氏分类
      • 卷积神经网络
      • 示例:使用 CNN 对姓氏进行分类
      • CNN 中的其他主题
    • 嵌入单词和类型
      • 介绍
      • 示例:学习词嵌入的连续袋
      • 示例:使用预训练嵌入进行文档分类的迁移学习
    • 序列建模
      • 循环神经网络简介
      • 示例:使用字符 RNN 对姓氏国籍进行分类
    • 中间序列建模
      • Vanilla RNN(或 Elman RNN)的问题
      • 门控是普通 RNN 挑战的解
      • 示例:用于生成姓氏的字符 RNN
    • 高级序列建模
      • 序列到序列模型、编码器-解码器模型和条件生成
      • 从序列中捕获更多:双向循环模型
      • 从序列中捕获更多:注意力
      • 评估序列生成模型
      • 示例:神经机器翻译
    • 经典、前沿和后续步骤

    详情参阅http://viadean.com/pytorch_linguist.html

    展开全文
  • PyTorch 自然语言处理.pdf
  • 【《PyTorch自然语言处理》随书代码】’Code and data accompanying 《Natural Language Processing with PyTorch: Build Intelligent Language Applications Using Deep Learning》 published by O'Reilly Media' ...
  • 随着对于深度学习研究的逐渐深入,在自然...本课程拟就深度学习在自然语言处理领域的应用,从基础开始,使用PyTorch作为模型构建工具,做一个深入浅出的介绍,希望对于学员在自然语言处理领域的研究和应用有所启发。
  • PyTorch自然语言处理(NLP)的基本实用程序 PyTorch-NLP,或torchnlp ,是PyTorch NLP的基本实用程序库。 torchnlp扩展了PyTorch,为您提供基本的文本数据处理功能。 标志由,由企业赞助 安装 :paw_prints: 确保您...
  • PyTorch自然语言处理入门 英伟达(NVIDIA)资深深度学习架构工程师...

    扫码下载「CSDN程序员学院APP」,1000+技术好课免费看

    APP订阅课程,领取优惠,最少立减5元 ↓↓↓

    订阅后:请点击此处观看视频课程

     

    视频教程-PyTorch自然语言处理入门-强化学习

    学习有效期:永久观看

    学习时长:183分钟

    学习计划:4天

    难度:

     

    口碑讲师带队学习,让你的问题不过夜」

    讲师姓名:张校捷

    架构师

    讲师介绍:英伟达(NVIDIA)资深深度学习架构工程师,负责基于CUDA的深度学习框架的优化。目前主要使用的技术栈是作为深度学习框架后端的C/C++/CUDA,以及深度学习框架前端的Python,对主流的深度学习框架如PyTorch和TensorFlow比较熟悉,并对其在计算机视觉(CV)和自然语言处理(NLP)方面的具体应用有一定了解。

    ☛点击立即跟老师学习☚

     

    「你将学到什么?」

    随着对于深度学习研究的逐渐深入,在自然语言处理领域,出现了很多深度学习的模型,这些模型相比于传统的机器学习方法,在准确率等指标上面有了很大的提高。本课程拟就深度学习在自然语言处理领域的应用,从基础开始,使用PyTorch作为模型构建工具,做一个深入浅出的介绍,希望对于学员在自然语言处理领域的研究和应用有所启发。

     

    「课程学习目录」

    第1章:PyTorch框架简介
    1.机器学习基础概念介绍
    2.深度学习基础概念介绍
    3.PyTorch使用介绍
    4.PyTorch应用实例
    第2章:自然语言处理简介
    1.自然语言处理的基本概念
    2.自然语言处理特征提取
    3.RNN,LSTM,GRU介绍
    4.自然语言处理模型概述
    第3章:使用PyTorch构建自然语言处理模型
    1.word2vec构建词向量
    2.RNN构建语言模型
    3.Seq2seq构建翻译模型
    4.Transformer模型简介

     

    7项超值权益,保障学习质量」

    • 大咖讲解

    技术专家系统讲解传授编程思路与实战。

    • 答疑服务

    专属社群随时沟通与讲师答疑,扫清学习障碍,自学编程不再难。

    • 课程资料+课件

    超实用资料,覆盖核心知识,关键编程技能,方便练习巩固。(部分讲师考虑到版权问题,暂未上传附件,敬请谅解)

    • 常用开发实战

    企业常见开发实战案例,带你掌握Python在工作中的不同运用场景。

    • 大牛技术大会视频

    2019Python开发者大会视频免费观看,送你一个近距离感受互联网大佬的机会。

    • APP+PC随时随地学习

    满足不同场景,开发编程语言系统学习需求,不受空间、地域限制。

     

    「什么样的技术人适合学习?」

    • 想进入互联网技术行业,但是面对多门编程语言不知如何选择,0基础的你
    • 掌握开发、编程技术单一、冷门,迫切希望能够转型的你
    • 想进入大厂,但是编程经验不够丰富,没有竞争力,程序员找工作难。

     

    「悉心打造精品好课,4天学到大牛3年项目经验」

    【完善的技术体系】

    技术成长循序渐进,帮助用户轻松掌握

    掌握强化学习知识,扎实编码能力

    【清晰的课程脉络】

    浓缩大牛多年经验,全方位构建出系统化的技术知识脉络,同时注重实战操作。

    【仿佛在大厂实习般的课程设计】

    课程内容全面提升技术能力,系统学习大厂技术方法论,可复用在日后工作中。

     

    「你可以收获什么?」

    1.了解机器学习和深度学习的一些基础概念

    2.了解自然语言处理的基础概念

    3.了解深度学习如何应用于自然语言处理

    4.掌握PyTorch的简单使用方法

     

    展开全文
  • PyTorch 自然语言处理(Natural Language Processing with PyTorch 中文版) GitHub地址:https://github.com/apachecn/nlp-pytorch-zh 网站地址:https://nlp-pt.apachecn.org/ 译者:Yif Du 协议:CC BY-NC-...

    PyTorch 自然语言处理(Natural Language Processing with PyTorch 中文版)

    GitHub地址:https://github.com/apachecn/nlp-pytorch-zh

    网站地址:https://nlp-pt.apachecn.org/

    译者:Yif Du

    协议:CC BY-NC-ND 4.0

    欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。

    本书旨在为新人提供自然语言处理(NLP)和深度学习,以涵盖这两个领域的重要主题。这两个主题领域都呈指数级增长。对于一本介绍深度学习和强调实施的NLP的书,本书占据了重要的中间地带。在写这本书时,我们不得不对哪些材料遗漏做出艰难的,有时甚至是不舒服的选择。对于初学者,我们希望本书能够为基础知识提供强有力的基础,并可以瞥见可能的内容。特别是机器学习和深度学习是一种经验学科,而不是智力科学。我们希望每章中慷慨的端到端代码示例邀请您参与这一经历。当我们开始编写本书时,我们从PyTorch 0.2开始。每个PyTorch更新从0.2到0.4修改了示例。 PyTorch 1.0将于本书出版时发布。本书中的代码示例符合PyTorch 0.4,它应该与即将发布的PyTorch 1.0版本一样工作.1关于本书风格的注释。我们在大多数地方都故意避免使用数学;并不是因为深度学习数学特别困难(事实并非如此),而是因为它在许多情况下分散了本书主要目标的注意力——增强初学者的能力。在许多情况下,无论是在代码还是文本方面,我们都有类似的动机,我们倾向于对简洁性进行阐述。高级读者和有经验的程序员可以找到方法来收紧代码等等,但我们的选择是尽可能明确,以便覆盖我们想要达到的大多数受众。

    目录

    精品推荐

    Pytorch 中文文档&中文教程

    深度学习必学

    1. 反向传递https://www.cnblogs.com/charlotte77/p/5629865.html
    2. CNN原理http://www.cnblogs.com/charlotte77/p/7759802.html
    3. RNN原理https://blog.csdn.net/qq_39422642/article/details/78676567
    4. LSTM原理https://blog.csdn.net/weixin_42111770/article/details/80900575

    自然语言处理

    关于转载

    • 禁止商业化,符合协议规范,备注地址来源,不需要发邮件给我们申请【如果觉得有帮助,欢迎各位踊跃收藏和转载】
     
    展开全文
  • pyTorch自然语言处理简单例子

    千次阅读 2018-01-29 00:00:00
    最近在学pyTorch的实际应用例子。这次说个简单的例子:给定一句话,判断是什么语言。这个例子是比如给定一句话:Give it to me判断是 ENGLISHme gusta comer en la cafeteria判断是 SPANISH就是这么简单的例子。来看...

    正文共5225个字,预计阅读时间12分钟。


    最近在学pyTorch的实际应用例子。这次说个简单的例子:给定一句话,判断是什么语言。这个例子是比如给定一句话:


    Give it to me

    判断是  ENGLISH


    me gusta comer en la cafeteria

    判断是  SPANISH


    就是这么简单的例子。

    来看怎么实现:
    准备数据 格式  [(语句,类型),...]
    data是train的时候用的语句,test_data是test的时候用的语句


    data = [ ("me gusta comer en la cafeteria".split(), "SPANISH"),         ("Give it to me".split(), "ENGLISH"),         ("No creo que sea una buena idea".split(), "SPANISH"),         ("No it is not a good idea to get lost at sea".split(), "ENGLISH") ] test_data = [("Yo creo que si".split(), "SPANISH"),              ("it is lost on me".split(), "ENGLISH")]


    因为文本计算机室识别不出来的,他们只认识01串,也就是数字。所以我们得把文本映射到数字上。


    word_to_ix = {}for sent, _ in data + test_data:    f

    or word in sent:      

     if word not in word_to_ix: word_to_ix[word] = len(word_to_ix) print(word_to_ix)


    输出word_to_ix (意思是word to index)是:


    {'me': 0, 'gusta': 1, 'comer': 2, 'en': 3, 'la': 4, 'cafeteria': 5, 'Give': 6, 'it': 7, 'to': 8, 'No': 9, 'creo': 10, 'que': 11, 'sea': 12, 'una': 13, 'buena': 14, 'idea': 15, 'is': 16, 'not': 17, 'a': 18, 'good': 19, 'get': 20, 'lost': 21, 'at': 22, 'Yo': 23, 'si': 24, 'on': 25}


    这里先提前设置下接下来要用到的参数


    VOCAB_SIZE = len(word_to_ix) NUM_LABELS = 2#只有两类 ENGLISH  SPANISH


    固定模板

    def init(self, num_labels, vocab_size):初始化,就是输入和输出的大小。这里我们要输入是一个句子,句子最大就是拥有所有字典的词,这里也就是vocab_size(下面再说怎么将一句话根据字典转换成一个数字序列的),输出就是分类,这里分为2类,即num_labels。这里我们用的是线性分类 ,即nn.Linear()。


    def forward(self, bow_vec):bow_vec是一个句子的数字化序列,经过self.linear()得到一个线性结果(也就是预测结果),之后对这个结果进行softmax(这里用log_softmax是因为下面的损失函数用的是NLLLoss() 即负对数似然损失,需要log以下)


    class BoWClassifier(nn.Module):

    #nn.Module 这是继承torch的神经网络模板    

    def __init__(self, num_labels, vocab_size):       

     super(BoWClassifier, self).__init__()        

    self.linear = nn.Linear(vocab_size, num_labels)    

    def forward(self, bow_vec):    

       return F.log_softmax(self.linear(bow_vec))

    def make_bow_vector(sentence, word_to_ix)


    大概能看懂什么意思吧。就是把一个句子sentence通过word_to_ix转换成数字化序列.比如  sentence=我 是 一只 小 小 鸟   word_to_id={你:0,我:1,他:2,不:3,是:4,大:5,小:6,猪:7,鸟:8,,} make_bow_vector之后的结果是[0,1,0,0,1,0,2,0,1]
    view()就是改变下向量维数。这里是讲len(word_to_ix)1->1len(word_to_ix)


    def make_bow_vector(sentence, word_to_ix):    vec = torch.zeros(len(word_to_ix))    for word in sentence:        vec[word_to_ix[word]] += 1    return vec.view(1, -1)


    这个就不用说了吧  一样。(如果想知道torch.LongTensor啥意思的话。可以看看。Torch中,Tensor主要有ByteTensor(无符号char),CharTensor(有符号),ShortTensor(shorts), IntTensor(ints), LongTensor(longs), FloatTensor(floats), DoubleTensor(doubles),默认存放为double类型,如果需要特别指出,通过torch.setdefaulttensortype()方法进行设定。例如torch.setdefaulttensortype(‘torch.FloatTensor’)。 )


    def make_target(label, label_to_ix):    return torch.LongTensor([label_to_ix[label]])


    这里再介绍下model.parameters()这个函数。他的返回结果是model里的所有参数。这里我们用的是线性函数,所以就是f(x)=Ax+b中的A和b(x即输入的数据),这些参数在之后的反馈和更新参数需要的。


    model = BoWClassifier(NUM_LABELS, VOCAB_SIZE)

    for param in model.parameters():    

    print("param:", param)


    可以看出A是2len(vocab_size),b是21


    param: Parameter containing:Columns 0 to 9 0.0786  0.1596  0.1259  0.0054  0.0558 -0.0911 -0.1804 -0.1526 -0.0287 -0.1086-0.0651 -0.1096 -0.1807 -0.1907 -0.0727 -0.0179  0.1530 -0.0910  0.1943 -0.1148Columns 10 to 19 0.0452 -0.0786  0.1776  0.0425  0.1194 -0.1330 -0.1877 -0.0412 -0.0269 -0.1572-0.0361  0.1909  0.1558  0.1309  0.1461 -0.0822  0.1078 -0.1354 -0.1877  0.0184Columns 20 to 25 0.1818 -0.1401  0.1118  0.1002  0.1438  0.0790 0.1812 -0.1414 -0.1876  0.1569  0.0804 -0.1897

    [torch.FloatTensor of size 2x26]param: Parameter containing: 0.1859 0.1245[torch.FloatTensor of size 2]


    我们再看看model的def forward(self, bow_vec):怎么用。这里就想下面的代码一样,直接在mode()填一个参数即可,就调用forward函数。


    sample = data[0] bow_vector = make_bow_vector(sample[0], word_to_ix) log_probs = model(autograd.Variable(bow_vector))

    print("log_probs", log_probs)


    输出是:(就是log_softmax后的值)


    log_probs Variable containing:-0.6160 -0.7768[torch.FloatTensor of size 1x2]


    我们这里看看在test上的预测


    label_to_ix = { "SPANISH": 0, "ENGLISH": 1 }

    for instance, label in test_data:    

    bow_vec = autograd.Variable(make_bow_vector(instance, word_to_ix))    

    log_probs = model(bow_vec)    

    print log_probsprint next(model.parameters())[:,word_to_ix["creo"]]


    结果是


    Variable containing:

    -0.5431 -0.8698

    [torch.FloatTensor of size 1x2]

    Variable containing:

    -0.7405 -0.6480

    [torch.FloatTensor of size 1x2]

    Variable containing:

    -0.0467 0.1065

    [torch.FloatTensor of size 2]


    下面就该进行重要的部分了。循环训练和更新参数
    这里我们用的损失函数是nn.NLLLoss()负对数似然损失
    优化依然用的最常见的optim.SGD() 梯度下降法
    一般训练5-30次最终优化基本不再变化


    每一步过程:
    a.首先都要model.zero_grad(),因为接下来要极端梯度,得清零,以防问题
    b.将数据向量化(也可以说是数字序列化,转成计算机能看懂的形式)
    c.得到预测值
    d.求损失loss_function
    e.求梯度loss.backward()
    f.更新参数optimizer.step()


    loss_function = nn.NLLLoss() optimizer = optim.SGD(model.parameters(), lr=0.1)for epoch in range(100):    for instance, label in data:        model.zero_grad()        bow_vec = autograd.Variable(make_bow_vector(instance, word_to_ix))        target = autograd.Variable(make_target(label, label_to_ix))        log_probs = model(bow_vec)        loss = loss_function(log_probs, target)        loss.backward()        optimizer.step()


    在测试集上测试


    for instance, label in test_data:    

    bow_vec = autograd.Variable(make_bow_vector(instance, word_to_ix))    

    log_probs = model(bow_vec)  

     print log_probs


    我们在结果上很容易看到第一个例子预测是SPANISH最大,第二个是ENGLISH最大。成功了。


    Variable containing:-0.0842 -2.5161[torch.FloatTensor of size 1x2]Variable containing:-2.4886 -0.0867[torch.FloatTensor of size 1x2]


    原文链接:https://www.jianshu.com/p/7b2d9e6e3633


    查阅更为简洁方便的分类文章以及最新的课程、产品信息,请移步至全新呈现的“LeadAI学院官网”:

    www.leadai.org


    请关注人工智能LeadAI公众号,查看更多专业文章

    大家都在看

    LSTM模型在问答系统中的应用

    基于TensorFlow的神经网络解决用户流失概览问题

    最全常见算法工程师面试题目整理(一)

    最全常见算法工程师面试题目整理(二)

    TensorFlow从1到2 | 第三章 深度学习革命的开端:卷积神经网络

    装饰器 | Python高级编程

    今天不如来复习下Python基础


    展开全文
  • 本书旨在为新人提供自然语言处理(NLP)和深度学习,以涵盖这两个领域的重要主题。这两个主题领域都呈指数级增长。对于一本介绍深度学习和强调实施的NLP的书,本书占据了重要的中间地带。在写这本书时,我们不得不对...
  • Pooling作为最简单的层其实也可以作为句子分类任务。Pooling有很多种,max_Pooling,avg_Pooling,min_Pooling等。...深度学习自然语言处理 公众号,就是下方啦!跟随小博主,每天进步一丢丢!哈哈!
  • nlp = spacy.load('en') pos = nlp(u'Mary slapped the green witch') for token in pos: print('{}->{}'.format(token,token.pos_))
  • 我之前并没有接触过NLP相关的知识,正好好久又没用pytorch感觉有点陌生,正好利用这个机会温习一下。这里先附上pytorch自带的教程链接,大家可以作为NLP的入门读物。这里我也就不想翻译了,CSDN上直接翻译过来的博文...
  • 任务描述:pytorch实现简单的神经网络语言模型NNLM 1、数据 sentences = [‘i like dog’, ‘i love coffee’, ‘i hate milk’] 2、目标 当输入[‘i’, ‘like’], [‘i’, ‘love’], [‘i’, ‘hate’]时,分别...
  • 在训练NLP模型时,我们要做的第一件事是对数据集进行预处理。torchtext提供了一系列非常方便的API供用户...本文主要介绍如何使用torchtext处理csv格式的数据。首先我们会介绍用到的类,然后给出示例代码进行说明。 ...
  • 来源 | Natural Language Processing with PyTorch作者 |Rao,McMahan译者 | Liangchu校对 | gongyouliu编辑 |...
  • def make_batch(data): input_batch, target_batch = [], [] for seq in seq_data: inp = [word_dict[c] for c in seq[:-1]] // 'm', 'a' , 'k' is input target = word_dict[seq[-1]] // 'e' is target ...
  • class TextRNN(nn.Module): def __init__(self): super().__init__() self.rnn = nn.RNN(input_size=n_class, hidden_size=n_hidden) self.W = nn.Parameter(torch.randn(n_hidden, n_class).type(dtype)) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,402
精华内容 4,960
关键字:

pytorch自然语言处理