赞
踩
NLTK(Natural Language Toolkit)是一个 Python 模块,提供了多种语料库(Corpora)和词典(Lexicon)资源
pip install nltk==3.5
停用词
在进行自然语言处理时,有一些词对于表达语言的含义并不重要,如英文中的冠词“a”“the”,介词“of”“to”等。
from nltk.corpus import stopwords
print(stopwords.words("english"))
常用语料库
未标注语料库
from nltk.corpus import gutenberg
print(gutenberg.raw("austen-emma.txt"))
古腾堡语料库中奥斯汀所著的小说Emma原文。
人工标注语料库
人工标注的关于某项任务的结果。
句子极性语料库
from nltk.corpus import sentence_polarity
常用词典
WordNet
是普林斯顿大学构建的英文语义词典(也称作辞典,Thesaurus),其主要特色是定义了同义词集合(Synset),每个同义词集合由具有相同意义的词义组成。
from nltk.corpus import wordnet
syns = wordnet.synsets("bank")
print(syns[0].name())
SentiWordNet
基于WordNet标注的词语情感倾向性词典。
from nltk.corpus import sentiwordnet
print(sentiwordnet.senti_synset("good.a.01"))
分句
通常一个句子能够表达完整的语义信息,因此在进行更深入的自然语言处理之前,往往需要将较长的文档切分成若干句子,这一过程被称为分句。
from nltk.corpus import gutenberg
from nltk.tokenize import sent_tokenize
text = gutenberg.raw("austen-emma.txt")
sentences = sent_tokenize(text)
print(sentences[100])
标记解析
一个句子是由若干标记(Token)按顺序构成的,其中标记既可以是一个词,也可以是标点符号等,这些标记是自然语言处理最基本的输入单元。将句子分割为标记的过程叫作标记解析(Tokenization)。
from nltk.tokenize import word_tokenize
print(word_tokenize(sentences[100]))
词性标注
词性是词语所承担的语法功能类别,如名词、动词和形容词等,因此词性也被称为词类。
from nltk import pos_tag
from nltk.tokenize import word_tokenize
print(pos_tag(word_tokenize("They sat by the fire.")))
词性标记查询
print(nltk.help.upenn_tagset())
其他工具
命名实体识别、组块分析、句法分析
斯坦福大学 → CoreNLP、spaCy
语言技术平台(Language Technology Platform,LTP)[2]是哈尔滨工业大学社会计算与信息检索研究中心(HIT-SCIR)历时多年研发的一整套高效、高精度的中文自然语言处理开源基础技术平台。
由于中文词语之间没有空格进行分割,而自然语言处理中通常以词为最小的处理单位,因此需要对中文进行分词处理。
from ltp import LTP
ltp = LTP()
segment , hidden = ltp.seg(["南京市长江大桥。"])
print(segment)
除了分词功能,LTP还提供了分句、词性标注、命名实体识别、依存句法分析和语义角色标注等功能。
LTP官方文档:http://ir.hit.edu.cn/demo/ltp/LTP%CA%B9%D3%C3%CE%C4%B5%B5v1.4.pdf
PyTorch是一个基于张量(Tensor)的数学运算工具包,提供了两个高级功能
优点:
就是多维数组
当维度小于或等于2时,张量又有一些更熟悉的名字,例如,2维张量又被称为矩阵(Matrix),1维张量又被称为向量(Vector),而0维张量又被称为标量(Scalar),其实就是一个数值。
创建GPU张量
import torch
a = torch.rand(2,3,device="cuda")
可自动计算一个函数关于一个变量在某一取值下的导数。
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)
有些情况下,即使两个张量的形状不同,也可以通过广播机制(Broadcasting Mechanism)执行按元素计算。
PyTorch中也可以对张量进行索引和切片操作,规则也与Python语言基本一致,即索引值是从0开始的,切片[m:n]的范围是从m开始,至n的前一个元素结束。
升维,就是通过调用torch.unsqueeze(input,dim,out=None)函数,对输入张量的dim位置插入维度1,并返回一个新的张量。与索引相同,dim的值也可以为负数。
降维恰好相反,使用torch.squeeze(input,dim=None,out=None)函数,在不指定dim时,张量中形状为1的所有维都将被除去。
为了训练效果更好的预训练模型,高质量、大规模的预训练数据是必不可少的。
维基百科(Wikipedia)是一部用不同语言写成的网络百科全书,由吉米·威尔士与拉里·桑格两人合作创建,于2001年1月13日在互联网上推出网站服务,并在2001年1月15日正式展开网络百科全书的项目。
纯文本语料抽取
WikiExtractor是一款基于Python的工具包,专门用于处理维基百科的快照。
python -m wikiextractor.WikiExtractor zhwiki-latests.xml.bz2
这个方法感觉不行了,可以使用Gensim + wiki_process处理
中文繁简体转换
opencc进行繁体转简体操作
数据清洗
使用数据清洗脚本wikidata_cleaning.py
Common Crawl包含了超过7年的网络爬虫数据集,包含原始网页数据、元数据提取和文本提取。
近期,HuggingFace公司发布了更大规模的语料库集合——HuggingFaceDatasets,与其他自然语言处理数据集相比,具有如下的特点:
…(img-xlNHSYDO-1657189698281)]
Common Crawl包含了超过7年的网络爬虫数据集,包含原始网页数据、元数据提取和文本提取。
近期,HuggingFace公司发布了更大规模的语料库集合——HuggingFaceDatasets,与其他自然语言处理数据集相比,具有如下的特点:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。