当前位置:   article > 正文

自然语言处理——基于预训练模型的方法——第3章 基础工具集与常用数据集_自然语言处理基于预训练模型的方法pdf

自然语言处理基于预训练模型的方法pdf

《自然语言处理——基于预训练模型的方法》——车万翔、郭江、崔一鸣

自然语言处理——基于预训练模型的方法——第3章 基础工具集与常用数据集

3.1 NLTK工具集

NLTK(Natural Language Toolkit)是一个 Python 模块,提供了多种语料库(Corpora)和词典(Lexicon)资源

pip install nltk==3.5
  • 1
3.1.1 常用语料库和词典资源
  • 停用词

    在进行自然语言处理时,有一些词对于表达语言的含义并不重要,如英文中的冠词“a”“the”,介词“of”“to”等。

    from nltk.corpus import stopwords
    print(stopwords.words("english"))
    
    • 1
    • 2
  • 常用语料库

  • 未标注语料库

    from nltk.corpus import gutenberg
    print(gutenberg.raw("austen-emma.txt"))
    
    • 1
    • 2

    古腾堡语料库中奥斯汀所著的小说Emma原文。

  • 人工标注语料库

    人工标注的关于某项任务的结果。

    句子极性语料库

    from nltk.corpus import sentence_polarity
    
    • 1
  • 常用词典

    • WordNet

      是普林斯顿大学构建的英文语义词典(也称作辞典,Thesaurus),其主要特色是定义了同义词集合(Synset),每个同义词集合由具有相同意义的词义组成。

      from nltk.corpus import wordnet
      syns = wordnet.synsets("bank")
      print(syns[0].name())
      
      • 1
      • 2
      • 3
    • SentiWordNet

      基于WordNet标注的词语情感倾向性词典。

      from nltk.corpus import sentiwordnet
      print(sentiwordnet.senti_synset("good.a.01"))
      
      • 1
      • 2
3.1.2 常用自然语言处理工具集
  • 分句

    通常一个句子能够表达完整的语义信息,因此在进行更深入的自然语言处理之前,往往需要将较长的文档切分成若干句子,这一过程被称为分句。

    from nltk.corpus import gutenberg
    from nltk.tokenize import sent_tokenize
    text = gutenberg.raw("austen-emma.txt")
    sentences = sent_tokenize(text)
    
    print(sentences[100])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 标记解析

一个句子是由若干标记(Token)按顺序构成的,其中标记既可以是一个词,也可以是标点符号等,这些标记是自然语言处理最基本的输入单元。将句子分割为标记的过程叫作标记解析(Tokenization)。

from nltk.tokenize import word_tokenize
print(word_tokenize(sentences[100]))
  • 1
  • 2
  • 词性标注

    词性是词语所承担的语法功能类别,如名词、动词和形容词等,因此词性也被称为词类。

    from nltk import pos_tag
    from nltk.tokenize import word_tokenize
    print(pos_tag(word_tokenize("They sat by the fire.")))
    
    • 1
    • 2
    • 3

    词性标记查询

    print(nltk.help.upenn_tagset())
    
    • 1
  • 其他工具

    命名实体识别、组块分析、句法分析

    斯坦福大学 → CoreNLP、spaCy

3.2 LTP工具集

语言技术平台(Language Technology Platform,LTP)[2]是哈尔滨工业大学社会计算与信息检索研究中心(HIT-SCIR)历时多年研发的一整套高效、高精度的中文自然语言处理开源基础技术平台。

3.2.1 中文分词

由于中文词语之间没有空格进行分割,而自然语言处理中通常以词为最小的处理单位,因此需要对中文进行分词处理。

from ltp import LTP
ltp = LTP()

segment , hidden = ltp.seg(["南京市长江大桥。"])
print(segment)
  • 1
  • 2
  • 3
  • 4
  • 5
3.2.2 其他中文自然语言处理功能

除了分词功能,LTP还提供了分句、词性标注、命名实体识别、依存句法分析和语义角色标注等功能。

LTP官方文档:http://ir.hit.edu.cn/demo/ltp/LTP%CA%B9%D3%C3%CE%C4%B5%B5v1.4.pdf

3.3 pytorch基础

PyTorch是一个基于张量(Tensor)的数学运算工具包,提供了两个高级功能

  1. 具有强大的GPU(图形处理单元,也叫显卡)加速的张量计算功能
  2. 能够自动进行微分计算,从而可以使用基于梯度的方法对模型参数进行优化。

优点:

  • 框架简洁
  • 入门简单,容易上手
  • 支持动态神经网络构建
  • 与Python语言无缝结合
  • 调试方便
3.3.1 张量的基本概念

就是多维数组

当维度小于或等于2时,张量又有一些更熟悉的名字,例如,2维张量又被称为矩阵(Matrix),1维张量又被称为向量(Vector),而0维张量又被称为标量(Scalar),其实就是一个数值。

创建GPU张量

import torch
a = torch.rand(2,3,device="cuda")
  • 1
  • 2
3.3.2 张量的基本运算
  • 加减乘除四则混合运算
  • 向量点积 torch.dot
  • 矩阵相乘
  • 三角函数
  • 数学函数
  • 张量操作
    • 聚合操作
      • 求平均
      • 求和
      • 最大值
      • 最小值
    • 拼接
    • 比较
    • 随机采样和序列化
3.3.3 自动微分

可自动计算一个函数关于一个变量在某一取值下的导数。
在这里插入图片描述

3.3.4 调整张量形状
  • view

    view函数的参数用于设置新的张量形状,因此需要保证张量总的元素个数不变。

    进行view操作的张量要求是连续的(Contiguous),可以调用is_conuous函数判断一个张量是否为连续的。如果张量非连续,则需要先调用contiguous函数将其变为连续的,才能调用view函数。

  • reshape

    直接对非连续张量进行形状调整。

  • transpose

    (转置)函数用于交换张量中的两个维度,参数分别为相应的维。只能同时交换两个维度,若要交换更多的维度,需要多次调用该函数。

  • permute

    需要提供全部的维度信息作为参数,即使有些维度无需交换也要提供。

    x = torch.tensor([[[1,2,3],[4,5,6]]])
    print(x,x.shape)
    x = x.permute(2,0,1)
    print(x,x.shape)
    
    • 1
    • 2
    • 3
    • 4
3.3.5 广播机制

有些情况下,即使两个张量的形状不同,也可以通过广播机制(Broadcasting Mechanism)执行按元素计算。

3.3.6 索引与切片

PyTorch中也可以对张量进行索引和切片操作,规则也与Python语言基本一致,即索引值是从0开始的,切片[m:n]的范围是从m开始,至n的前一个元素结束。

3.3.7 降维与升维

升维,就是通过调用torch.unsqueeze(input,dim,out=None)函数,对输入张量的dim位置插入维度1,并返回一个新的张量。与索引相同,dim的值也可以为负数。

降维恰好相反,使用torch.squeeze(input,dim=None,out=None)函数,在不指定dim时,张量中形状为1的所有维都将被除去。

3.4 大规模预训练数据

为了训练效果更好的预训练模型,高质量、大规模的预训练数据是必不可少的。

3.4.1 维基百科数据

维基百科(Wikipedia)是一部用不同语言写成的网络百科全书,由吉米·威尔士与拉里·桑格两人合作创建,于2001年1月13日在互联网上推出网站服务,并在2001年1月15日正式展开网络百科全书的项目。

3.4.2 原始数据的获取

在这里插入图片描述

3.4.3 语料处理方法
  • 纯文本语料抽取

    WikiExtractor是一款基于Python的工具包,专门用于处理维基百科的快照。

    python -m wikiextractor.WikiExtractor zhwiki-latests.xml.bz2
    
    • 1

    这个方法感觉不行了,可以使用Gensim + wiki_process处理

  • 中文繁简体转换

    opencc进行繁体转简体操作

  • 数据清洗

使用数据清洗脚本wikidata_cleaning.py

在这里插入图片描述

3.4.4 Common Crawl数据

Common Crawl包含了超过7年的网络爬虫数据集,包含原始网页数据、元数据提取和文本提取。

3.5 更多数据集

近期,HuggingFace公司发布了更大规模的语料库集合——HuggingFaceDatasets,与其他自然语言处理数据集相比,具有如下的特点:

  • 数据集数目多
  • 兼容性好
  • 数据读取效率高
  • 丰富的评价方法

…(img-xlNHSYDO-1657189698281)]

3.4.4 Common Crawl数据

Common Crawl包含了超过7年的网络爬虫数据集,包含原始网页数据、元数据提取和文本提取。

3.5 更多数据集

近期,HuggingFace公司发布了更大规模的语料库集合——HuggingFaceDatasets,与其他自然语言处理数据集相比,具有如下的特点:

  • 数据集数目多
  • 兼容性好
  • 数据读取效率高
  • 丰富的评价方法
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/180795?site
推荐阅读
相关标签
  

闽ICP备14008679号