秦皇岛网站制作价格,重庆网站制作建设,最新国际新闻事件,徐州百度seo排名优化文本预处理及其作用#xff1a;
文本语料在输送给模型前一般需要一系列的预处理工作#xff0c;才能符合模型输入的要求#xff0c;如#xff1a;将文本转化成模型需要的张量#xff0c;规范张量的尺寸等#xff0c;而且科学的文本预处理环节还将有效指导模型超参数的选…文本预处理及其作用
文本语料在输送给模型前一般需要一系列的预处理工作才能符合模型输入的要求如将文本转化成模型需要的张量规范张量的尺寸等而且科学的文本预处理环节还将有效指导模型超参数的选择提升模型的评估指标。
文本预处理中包含的主要环节 文本处理的基本方法
分词
分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。我们知道在英文的行文中单词之间是以空格作为自然分界符的而中文只是字、句和段能通过明显的分界符来简单划界唯独词没有一个形式上的分界符 分词过程就是找到这样分界符的过程。
中文jieba
精确模式
jieba.cut(content,cut_allTrue)#返回对象
jieba.lcut(content,cut_allTrue)#返回list
全模式分词
jieba.cut(content,cut_allTrue)#返回对象
jieba.lcut(content,cut_allTrue)#返回list
搜索引擎模式
jieba.cut_for_search(content)#返回对象
jieba.lcut_for_search(content)#返回list 使用用户自定义词典
添加自定义词典后jieba能够准确识别词典中出现的词汇提升整体的识别准确率。
词典格式每一行分三部分词语、词频可省略、词性可省略用空格隔开顺序不可颠倒 词典样式如下具体词性含义请参照附录jieba词性对照表将该词典存为userdict.txt方便之后加载使用
云计算导论 5 n
导入设定的词典
jieba.load_userdict(userdict.txt)
英文或中文hanlp
#中文分词
content文本语料在输送给模型前一般需要一系列的预处理工作才能符合模型输入的要求。
tokenizerhanlp.load(CTB6_CONVSEG)
tokenizer(content)#英文分词
tokenizer hanlp.pipelines.tok_ctb6_convseg()
content The cat is on the mat.
tokenizer(content)英文nltk
import nltknltk.download(punkt) # 下载必要的数据content The cat is on the mat.
tokens nltk.word_tokenize(content)
print(tokens)文本张量表示方法
将一段文本使用张量进行表示其中一般将词汇为表示成向量称作词向量再由各个词向量按顺序组成矩阵形成文本表示。将文本表示成张量矩阵形式能够使语言文本可以作为计算机处理程序的输入接下来一系列的解析工作。
one-hot编码
又称独热编码将每个词表示成具有n个元素的向量这个词向量中只有一个元素是1其他元素都是0不同词汇元素为0的位置不同其中n的大小是整个语料中不同词汇的总数。
制作映射器
import joblib
from keras.preprocessing.text import Tokenizervocab [云计算导论, 软件开发与重构, 企业应用开发, 人工智能导论, 用户体验设计]# Instantiate the Tokenizer
tokenizer Tokenizer(num_wordsNone, char_levelFalse)
tokenizer.fit_on_texts(vocab)for vocab_word in vocab:zero_list [0] * len(vocab)token_index tokenizer.texts_to_sequences([vocab_word])[0][0] - 1zero_list[token_index] 1print(vocab_word, zero_list)保存映射器
tokenizer_path./Tokenizer
joblib.dump(tokenizer,tokenizer_path)
使用映射器
tjoblib.load(tokenizer.pkl)
tokenxxx
token_indext.texts_to_sequences([token])[0][0]-1
zero_list[0]*len(vocab)
zero_list[token_index]1
Word2vec
一种流行的将词汇表示成向量的无监督训练方法该过程将构建神经网络模型将网络参数作为词汇的向量表示它包含CBOW和skipgram两种训练模式
CBOW学习过程
给定一段用于训练的文本语料再选定某段长度窗口作为研究对象使用上下文词汇预测目标词汇。
CBOW的详情和实现
skipgram实现过程
给定一段用于训练的文本语料 再选定某段长度窗口作为研究对象使用目标词汇预测上下文词汇。
skipgram的详情和实现
代码实现
import fasttext# 用无监督方法训练参数来自data/fil9
modelfasttext.train_unsupervised(data/fil9)# 查看某个词的词向量
model.get_word_vector(computer)模型超参数设定
参数一数据集。
参数二训练模式skpgram和cbow。
参数三dim默认为一百随数据集增大而增大
参数四epoch循环参数默认为5。
参数五lr学习率【0.011】默认0.05。
参数六thread线程数默认为12一般和cpu核数相同。modelfasttext.train_unsupervised(data/fil9,cbow,lr0.1,epoch25,dim100,thread48)# 检验评估
model.get_nearest_neighbors(computer)# 保存模型
model.save_model(data/fil9.bin)# 加载模型
model fasttext.load_model(data/fil9.bin)
Word Embedding
狭义的word embedding是指在神经网络中加入的embedding层对整个网络进行训练的同时产生的embedding矩阵embedding层的参数这个embedding矩阵就是训练过程中所有输入词汇的向量表示组成的矩阵。
import torch
import json
from torch.utils.tensorboard import SummaryWriterwriter SummaryWriter()
embeddedtorch.randn(100,50)
metalist(map(lambda x:x.strip(),fileinput.Fileinput(./data/meta.txt)))
writer.add_embedding(embedded,metadatameta)
writer.close()
文本语料的数据分析
标签数量分布
句子长度分布
词频统计与关键词词云
文本特征处理
添加n-gram特征
文本长度规范
数据增强方法
回译数据增强法
回译数据增强目前是文本数据增强方面效果较好的增强方法一般基于google翻译接口将文本数据翻译成另外一种语言一般选择小语种之后再翻译回原语言 即可认为得到与与原语料同标签的新语料新语料加入到原数据集中即可认为是对原数据集数据增强
操作简便获得新语料质量高。 回译数据增强存在的问题
在短文本回译过程中新语料与原语料可能存在很高的重复率并不能有效增大样本的特征空间
高重复率解决办法
进行连续的多语言翻译如中文韩文-日语英文中文根据经验最多只采用3次连续翻译更多的翻译次数将产生效率低下语义失真等问题。
代码实现谷歌翻译
from googletrans import Translatorp_sample1酒店设施非常不错
p_sample2这家价格很便宜
n_sample1拖鞋都发霉了太差了
n_sample2电视不好用没有看到足球translatorTranslator()
translationstranslator.translate([p_sample1,p_sample2,n_sample1,n_sample2],destko)ko_reslist(map(lambda x:x.text,translations))
print(ko_res)translationstranslator.translate([p_sample1,p_sample2,n_sample1,n_sample2],destzh-cn)
cn_reslist(map(lambda x:x.text,translations))
print(cn_res)