NLP -《基于PyTorch的自然语言处理》

 
新书《基于PyTorch的自然语言处理》的详细笔记!
主要是对这本书的代码部分的理解和处理,整理了处理方法的过程,这样可以给刚刚步入NLP的学者提供一些帮助。

 
博客的内容是按照文章章节的部分来整理的,大家可以选择部分内容进行学习。

目录

      • 第1章 概述
      • 第2章 自然语言处理
      • 第3章 神经网络基础
      • 第4章 用于自然语言处理的前馈网络
      • 第5章 嵌入单词和类型
      • 第6章 自然语言处理的序列建模
      • 第7章 自然语言处理的中级序列建模
      • 第8章 自然语言处理的高级序列建模
      • 第9章 经典,前沿与下一步发展

 

第1章 概述

这部分主要是介绍了PyTorch中张量的基本概念,张量的类型大小,张量的基本操作,索引,切片和连接。

这里解决习题的代码:

import torch

# 1.随机创建一个二维张量,然后第0维插入1个维度
a = torch.rand(3, 3)
a.unsqueeze(0)
print(a)

# 2.去掉刚刚加入张量上的维度
a.squeeze(0)
print(a)

# 3.在区间[3, 7]中创建一个形状为5*3的随机向量
a = 3 + torch.rand(5, 3)*(7-3)
print(a)

# 4.创建一个具有正态分布(mean = 0, std = 1)值的张量
a = torch.rand(3,3)
a.normal_()
print(a)
print(a.normal_())

# 5.找到torch.Tensor([1,1,1,0,1])中所有非零元素的索引
a = torch.Tensor([1,1,1,0,1])
print(torch.nonzero(a))

# 6.创建一个大小为(31)的随机张量,水平扩展4个副本
a = torch.rand(3,1)
print(a.expand(3, 4))

# 7.返回两个3维矩阵的乘积(a=torch.rand(3,4,5), b=torch.rand(3,5,4))
a = torch.rand(3,4,5)
b = torch.rand(3,5,4)
print(torch.bmm(a,b))

# 8.返回一个3维矩阵和一个2维矩阵的乘积(a=torch.rand(3,4,5), b=torch.rand(5,4))
a = torch.rand(3,4,5)
b = torch.rand(5,4)
print(b.unsqueeze(0).expand(a.size(0), *b.size()))
print(torch.bmm(a, b.unsqueeze(0).expand(a.size(0), *b.size())))

 

第2章 自然语言处理

 
刚开始使用spacy包时,导入“en”.

import spacy
nlp = spacy.load("en")
text = "Mary, don't slap the green witch"
print([str(token) for token in nlp(text.lower())])

会出现以下问题:


OSError: [E050] Can’t find model ‘en’. 
It doesn’t seem to be a shortcut link, a Python package or a valid path to a data directory

 
解决方法一:

参考博客:https://blog.csdn.net/mr_muli/article/details/111592360

from spacy.lang.en import English
# 如下会报错:
#            import spacy
#            spacy_en = spacy.load('en')
#            return lambda s: [tok.text for tok in spacy_en.tokenizer(s)]
# 替换之后:

            from spacy.lang.en import English
            spacy_en = English()
            return lambda s: [tok.text for tok in spacy_en.tokenizer(s)]

 
解决方法二:

参考博客:https://github.com/hamelsmu/Seq2Seq_Tutorial/issues/1
参考博客:https://www.cnblogs.com/zrdm/p/8667131.html(这个是解决方法)
点击en_core_web_sm获得en_core_web_sm-2.2.0.tar

获得en_core_web_sm-2.2.0.tar后:
参考这篇博客:https://www.cnblogs.com/xiaolan-Lin/p/13286885.html
然后执行:

pip install en_core_web_sm-2.2.0.tar.gz

 
最后,代码如下:

import spacy

nlp = spacy.load("en_core_web_sm")
# nlp = spacy.load('en')
text = "Mary, don't slap the green witch"
print([str(token) for token in nlp(text.lower())])

第3章 神经网络基础

 

第4章 用于自然语言处理的前馈网络

 

第5章 嵌入单词和类型

第6章 自然语言处理的序列建模

第7章 自然语言处理的中级序列建模

第8章 自然语言处理的高级序列建模

第9章 经典,前沿与下一步发展

你可能感兴趣的:(算法,NLP,机器学习)