4-3 基于Python的文本预处理封装 停词文件获取为了提高文本预处理的复用性和可维护性,我们可以将常用的预处理操作封装成一个自定义模块。import re# 使用示例text = "自然语言处理(Natural Language Processing NLP)是人工智能领域的一个重要分支。在这里插入图片描述在上述代码中,我们定义了一个类,包含了特殊字符移除、分词、去除停用词和文本规范化等方法,并将这些方法集成在preprocess方法中,实现了一站式的文本预处理。
4-4 词嵌入技术(word2vec) 词嵌入(Word Embedding)是一种将词语表示为实数向量的技术。传统的词表示方法,如one-hot编码,将每个词表示为一个高维的稀疏向量,这种表示方法无法捕捉词语之间的语义关系。而词嵌入通过将词语映射到一个低维的连续向量空间,使得语义相似的词在向量空间中的距离更近,从而更好地捕捉词语之间的关系。
4-2 文本向量化 Word2Vec是由Google提出的一种词嵌入方法,通过训练神经网络,将词映射到一个连续的向量空间,使相似的词在向量空间中距离较近。TF-IDF(Term Frequency-Inverse Document Frequency)是一种改进的词袋模型,通过考虑词在文档中的频率和在整个语料库中的反向文档频率,衡量词的重要性。FastText是Facebook提出的一种改进的词嵌入方法,不仅考虑词本身,还考虑词的子词信息(如词根、词缀等),因此在处理罕见词和形态变化丰富的语言时表现更好。
4-1 文本预处理:分词、停用词、特殊字符消失术 分词是将连续的文本序列切分成词语序列的过程。在中文中,分词尤为重要,因为中文文本中没有明确的词边界,而大多数自然语言处理模型和算法都依赖于词语作为基本单元。停用词(Stop Words)是指在文本处理中被过滤掉的高频、低信息量的词语。例如中文中的“的”、“是”、“在”等。特殊字符包括标点符号、数字、HTML标签等非文字字符。在文本处理中,特殊字符通常被视为噪声,需要被消除或替换。
3-7 使用深度学习解决温度即示数问题 和均方误差损失函数(MSELoss),初始化优化器并运行训练循环,训练 10000 个周期。更新训练循环以在每个周期中清零梯度,并在没有梯度计算的上下文中更新参数。打印顺序模型在验证集上的预测输出和真实值,查看隐藏层线性变换的权重梯度。定义损失函数,使用均方误差(MSE)来计算预测值和真实值之间的差异。定义损失函数对预测值的梯度,以及模型对参数(w和b)的梯度。定义训练循环函数,包括训练和验证集的损失计算和模型更新。计算参数w和b的梯度并进行一次梯度下降更新。定义训练循环函数,通过多个训练周期更新参数。
3-6 构建线性模型解决温度计示数转换问题 这个代码的主要目的是定义一个线性回归模型,并通过不同的模型参数来计算预测值和损失,以了解模型预测效果的好坏。导入必要的库并设置 PyTorch 的打印选项,确保在打印张量时显示边缘项和行宽。蓝色点表示数据点,红色边缘表示边框颜色。导入 Matplotlib 库,用于数据可视化。将温度列表转换为 PyTorch 张量。定义线性模型函数,模型参数为权重。都为 0,再次计算预测值。定义损失函数,计算预测值。之间的损失(均方误差)。之间的损失(均方误差)。)和未知单位的温度(
3-5 提高模型效果:归一化 为了更加体现归一化在模型训练中的效果,我们可以选择一个更复杂的任务和网络结构,比如在 CIFAR-10 数据集上训练一个较深的卷积神经网络(CNN),并比较是否使用归一化的模型的训练和验证性能。: 通常用于生成对抗网络(GAN)和风格迁移任务,它对每个样本的每个通道独立进行归一化,适合处理不同样本之间差异较大的情况。: 通常用于文本分类任务或RNN/LSTM网络中,它对每个样本的每一层的所有神经元进行归一化,而不是每个批次的数据。它将通道划分为组,并对每组内的通道进行归一化。
3-4 优化器和学习率 在深度学习中,优化器使用反向传播算法计算损失函数相对于模型参数的梯度,并根据这些梯度来更新模型参数。不同的优化器方法在更新参数时使用了不同的策略和技巧。它的主要目标是通过最小化损失函数来找到模型参数的最优值,从而提升模型的性能。AdaGrad 通过对梯度的平方和进行调整,使得参数的学习率随着训练的进行而自动减小。RMSProp 是 AdaGrad 的改进版,它使用滑动平均值来计算平方梯度的加权平均,以避免学习率衰减过快。它通过计算损失函数相对于模型参数的梯度,然后按一个学习率(步长)更新参数。
3-3 超参数 在机器学习中,特别是训练神经网络时,学习率是一个非常关键的超参数。它决定了模型在每一步更新参数时,更新的幅度有多大。可以把它理解为**“步伐大小”**。Adam 优化器:在短期内提供了最快的收敛速度和最高的验证准确率,适合快速迭代和处理复杂梯度的问题。学习率衰减:在训练的早期具有快速收敛的优势,同时在中期和后期也能保持稳定的性能提升,是一种非常有效的策略。固定学习率:提供了稳定的优化过程,尽管在训练速度和性能上可能稍逊于前两者,但它的可预测性和简单性使其在某些情况下仍然具有吸引力。
如何使用uer做多分类任务 这里可以看到只有61.49的正确率,其实是因为显存还不够,训练不了那么大的,标准的参数应该设置为batch_size=32 seq_length=256。接着呢要把所有tsv文件的sentence表头名改成text_a,不然运行uer框架会报错,原因请看源代码逻辑。这里规定好了表头名只有label,text_a,text_b。搞完之后进入训练代码,我的显存只有16G,因此。因此我们对此要做一些处理,将其转为tsv格式。有能力的可以更改参数进行训练。里面是这有json文件的。最后自行查看预测效果。
三万字带你一遍跑通uer 如果使用基于字的分词方式,可以使用 --vocab_path models/google_zh_vocab.txt 和 --tokenizer char 的组合代替上面的 --spm_model_path models/cluecorpussmall_spm.model,其余的选项不变。为了支持加载英文RoBERTa和GPT-2等模型,本项目支持使用BPETokenizer对句子进行切分,通过 --vocab_path 指定使用的词典,通过 --merges_path 指定使用的合并词典。
3-2 梯度与反向传播 在二维情况下,梯度向量的方向指向函数增长最快的方向,而其大小表示增长的速率。可以看到红色区域的变化率较大,梯度较大;绿色区域的变化率较小,梯度较小。当然我们不必学太深的纯运算,来看看python是怎么解决的。
2-13 词语的处理:独热编码和词嵌入表示 它通过为每个类别创建一个二进制向量(即只有0和1的向量)来表示数据,其中每列代表一个可能的类别,而该类别对应的列只有一个元素为1,其余元素都为0。好了,这就引出来独热编码的问题。举个例子,假设我们有一个数据集,其中包含不同颜色的类别数据,如“红色”、“蓝色”和“绿色”。当然相似的词往往出现在同一环境中(例如,在西瓜或熟了等词附近)现在非常相似的分布(其相邻的词是相似的,比如西瓜和桃子)中的两个词具有相似的含义。使用独热编码后,每个颜色都会被转换为一个长度为3的向量,其中只有一个元素为1,其余为0。
2-12 中文处理的难题-分词 在中文文本中,词语之间没有明确的分隔符,因此分词是中文处理中一项具有挑战性的任务。中文分词是中文自然语言处理中的一项基本任务,它的目的是将连续的中文文本切分成一个个单独的词语,为后续的文本处理和分析提供基础比如:原句:跟我学自然语言处理,咱们一起变得更强!分词后:跟 我 学 自然 语言 处理 , 咱们 一起 变 得 更 强!
2-11 文本分析流程2 在这里给大家介绍个很好玩的包,词云,能够将文本出现次数多的语句可视化出来,这对我们进行自然语言处理也有一定的启发。从这张词云图来看,LLMOps应用平台的优势就非常明显了。然后点击以下链接安装字体。首先我们准备一个文本。
2-9 模型评估指标 我们要预测一条文本内容是不是回答微信手机号,如果是则为正例,如果不是则为负例。假设我有两万条的测试样本,其中1.8万不是回答微信手机号,其中2000条是回答微信手机号。有的情况,在业务中没有明确说以精度或召回率为单指标判断模型质量,便可以使用F1Score的值或者上图两平衡点区间做一个评判标准(这里查准率就是精度,查全率就是召回率)使用训练好的模型对这2万条测试数据进行预测,得到1.75万条不是回答微信手机号,只有2500条是回答微信手机号。通常精度和召回率是相互对抗的,即精度高,召回率低;
2-8 聚类算法介绍 主目录点这里什么是聚类聚类尝试在没有训练的条件下,对一些没有标签的数据进行归纳分类。根据相似性对数据进行分组,以便对数据进行概括。没有标签是指我们事先不知道任何样本的类别标记,希望通过某种算法把这一组位置类别的样本化分成若干类别,聚类的时候,并不关心某一类是什么,实现的只是将相似的东西聚在一起。总的来说,聚类就是对大量未知标注的数据集,按数据内在的相似性将数据集划分为多个类别,使类别内的数据相似度较大而类别间的数据相似度较小。这是一种无监督的分类方式。聚类的目标聚类方法好坏判断常见聚类方法。