文本预处理-学习笔记
文本处理的基本方法POS全称为Part-of-Speech Tagging词性标注给每个词标出词性如名词、动词、形容词、介词代码importjieba.possegaspsegdefdemo01():text清晨我轻快地走过花园惊喜地看见一只蝴蝶正轻轻落在刚绽放的、粉嫩的月季上。datapseg.lcut(text)print(data)# [pair(清晨, t), pair(, x), pair(我, r), pair(轻快地, z), pair(走过, v), pair(花园, n), pair(, x), pair(惊喜, a), pair(地, uv), pair(看见, v), pair(一只, m), pair(蝴蝶, n), pair(正, d), pair(轻轻, d), pair(落, v), pair(在, p), pair(刚, t), pair(绽放, v), pair(的, uj), pair(、, x), pair(粉嫩, z), pair(的, uj), pair(月季, t), pair(上, f), pair(。, x)]if__name____main__:demo01()NER全称为Named Entity Recognition命名实体识别找出文本中的实体片段并分类如人名、地名、机构、时间代码# NER代码defdemo02():sentence李四在上海复旦大学工作老家是成都。entities{PER:[],# 人名 nrLOC:[],# 地名 nsORG:[]# 机构 nt}wordspseg.cut(sentence)forword,flaginwords:ifflagnr:entities[PER].append(word)elifflagns:entities[LOC].append(word)elifflagnt:entities[ORG].append(word)print(提取实体结果)print(人名PER,entities[PER])# 人名PER [李四]print(地名LOC,entities[LOC])# 地名LOC [成都]print(机构ORG,entities[ORG])# 机构ORG [上海复旦大学]文本张量的表示方法文本张量表示简单说就是把文本这种离散符号转换成神经网络能处理的数值张量。one-hotOne-hot 是文本张量表示里最基础、最直观的一种编码方式。它的核心思想是用一个长度为“类别总数”的向量表示一个离散符号只有对应位置是 1其余全是 0。代码fromtensorflow.keras.preprocessing.textimportTokenizer# 定义映射关系defdemo01():words{张三,李四,王五,赵七}# 把原始文本变成数字序列my_tokenizerTokenizer()my_tokenizer.fit_on_texts(words)print(my_tokenizer.word_index)# {王五: 1, 赵七: 2, 张三: 3, 李四: 4}# 创建热编码格式word_data[[0for_inrange(len(words))]for_inrange(len(words))]# 设置关系forword,indexinmy_tokenizer.word_index.items():word_data[index-1][index-1]1print(word_data)# [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]word2vecWord2Vec 基于一个语言学假设一个词的含义由它经常出现的上下文决定。如果两个词经常出现在相似上下文里它们语义就相似。两种模型结构Word2Vec 有两种训练方式模型输入输出特点CBOW上下文词中心词速度快适合大数据低频词效果一般Skip-gram中心词上下文词慢一些但低频词效果更好这里使用FastTextFastText的两种用途├── 1. 词向量无监督学习│ 输入大量文本│ 输出每个词的向量│ 用途语义相似度、作为其他模型的输入│└── 2. 文本分类监督学习← 更常用输入带标签的文本输出分类模型用途情感分析、垃圾邮件识别、主题分类代码defdemo03():modelfasttext.train_unsupervised(input./data/train.txt,# 训练语料文件路径要求每行一个句子词与词之间用空格分隔modelcbow,# 模型类型cbow连续词袋训练快或 skipgram跳元模型对低频词更好dim200,# 词向量维度常用 100~300维度越高表达越丰富但需要更多数据支撑epoch10,# 训练轮数遍历语料的次数语料小可适当增大如 50~200lr0.1,# 学习率控制参数更新的步长常用 0.01~0.5太大易震荡太小收敛慢thread10,# 训练使用的线程数通常设为 CPU 核心数可加速训练# minCount1 # 最低词频出现次数低于此值的词会被忽略小语料设为 1 以保留所有词)print(model.get_nearest_neighbors(算法))# [(0.9714049100875854, /s), (0.9571112990379333, 代码), (0.9564718008041382, 可视化), (0.9547079205513, 程序), (0.9532721042633057, 神经网络), (0.9507055878639221, 函数), (0.9494422078132629, 语法), (0.9493951797485352, 模型), (0.947942852973938, 工程师), (0.94638991355896, 变量)]fasttext的train_unsupervised 和 train_supervised区别对比项train_unsupervisedtrain_supervised目标学习词向量文本分类训练方式无监督无需标签监督学习需要标签输入数据纯文本__label__标签 文本输出词向量模型分类器类比学词典学判断规则word embedding词嵌入词嵌入Word Embedding 是把离散的词映射成低维、稠密、实数向量的技术。比如“猫” → [0.21, -0.45, 0.78, …]“狗” → [0.19, -0.40, 0.75, …]“汽车” → [-0.62, 0.11, -0.33, …]语义相近的词向量距离通常更近。这样模型就能计算词与词之间的相似性、类比关系等。代码importjiebafromtorch.nnimportEmbeddingfromtensorflow.keras.preprocessing.textimportTokenizerdefdemo01():sentence1落日把云染成温柔的橘色慢慢沉向远处的山峦。sentence2晚风轻轻拂过肩头带走一整天积攒的疲惫。sentences[sentence1,sentence2]# 定义存放分词后的句子word_list[]forsentenceinsentences:word_list.append(jieba.lcut(sentence))# 创建分词器对象my_tokenizerTokenizer()my_tokenizer.fit_on_texts(word_list)print(my_tokenizer.word_index)# {的: 1, : 2, 。: 3, 落日: 4, 把: 5, 云: 6, 染成: 7, 温柔: 8, 橘色: 9, 慢慢: 10, 沉向: 11, 远处: 12, 山峦: 13, 晚风: 14, 轻轻: 15, 拂过: 16, 肩头: 17, 带走: 18, 一整天: 19, 积攒: 20, 疲惫: 21}# num_embeddings为词的个数embedding_dim为词的维度embedEmbedding(num_embeddingslen(my_tokenizer.word_index),embedding_dim10)# 打印权重信息print(embed.weight.data)# tensor([[ 1.1679, 0.1797, -0.3278, 0.1557, -1.1617, -0.3695, -0.2397, 0.4324,# -0.0251, 1.2945],# [-0.3152, -0.3238, -0.3492, 2.1662, -0.5189, -0.4208, -1.2255, -0.1755,# -0.7416, -0.3744],# [-1.7704, 0.5371, 0.5128, 0.8491, 2.4467, -0.0088, 1.3106, -1.2560,# 0.5274, 0.4673],# ...后面还有18条文本语料数据分析文本语料数据分析是指对大量文本新闻、评论、客服记录、论文、社交媒体等进行清洗、统计、建模和可视化从中提取主题、情感、趋势、关系或用于分类/预测1. 语料获取来源爬虫采集、公开数据集、文档txt/csv/pdf、问卷文本、聊天记录、新闻、社交媒体评论。2. 语料预处理原始文本噪音多必须先清洗清洗去除特殊符号、html 标签、多余空格、换行、乱码、无关水印分词中文必备把句子切成词语。例今天天气很好→今天 / 天气 / 很 / 好去停用词删掉无意义词汇的、了、是、就、a/an/the词性标注区分名词 / 动词 / 形容词归一化英文转小写中文繁转简同义词合并过滤过滤太短 / 过长无效句子3. 基础描述统计描述性分析用来直观了解语料整体特征总文档数、总字符数、总词数平均每篇文本长度、最长 / 最短文本词频统计高频词、词云词汇量不重复单词数量、词频分布Zipf 定律句子数量、平均句子长度4. 进阶文本挖掘任务分析类型作用典型场景关键词提取找出文本核心词汇新闻摘要、评论关键词情感分-析判断文本正负向情绪用户评论打分、舆情分析主题建模自动划分文本隐藏主题论坛帖子分类、论文聚类LDA文本分类给文本打标签垃圾信息识别、工单分类文本聚类自动把相似文本分组用户反馈归类命名实体识别 NER提取人名、地名、机构、时间事件抽取词向量 / 语义分析计算词语相似度语义检索、同义词挖掘依存句法分析分析句子语法结构观点抽取文本特征处理n-gram 特征n-gram是文本里常用的滑动窗口子序列特征把一段文本句子 / 词序列 / 字符序列用长度为 n 的窗口依次滑动截取得到连续的子片段这些子片段就叫 n-gram用来做特征。(n_gram 1)unigram一元单个单元(n_gram 2)bigram二元连续 2 个单元(n_gram 3)trigram三元连续 3 个单元单元可以是字符char n-gram也可以是词语word n-gram代码n_gram2# 文本里常用的滑动窗口 连续的子片段defcreate_gram(input_text):data[input_text[i:]foriinrange(n_gram)]zippedzip(*data)returnlist(set(zipped))举例word n-gram句子我爱人工智能分词结果我爱人工智能unigram我、爱、人工、智能bigram我爱、爱人工、人工智能trigram我爱人工、爱人工智能计算两个文本相似度思路分别提取两个文本的 n-gram 集合常用两种算法Jaccard 相似度简单、余弦相似度TF-IDFn-gram效果更好设文本 A、文本 Bn 一般取 2 或 3bigram/trigramJaccard 相似度J(A,B)∣Angram∩Bngram∣∣Angram∪Bngram∣J(A,B)\frac{|A_{ngram}\cap B_{ngram}|}{|A_{ngram}\cup B_{ngram}|}J(A,B)∣Angram​∪Bngram​∣∣Angram​∩Bngram​∣​取值[0,1][0,1][0,1]越接近 1 越相似。其中A和B都是n-gram特征集合importjiebafromcollectionsimportCounterimportmath n_gram2# 文本里常用的滑动窗口 连续的子片段defcreate_gram(input_text):data[input_text[i:]foriinrange(n_gram)]zippedzip(*data)returnlist(set(zipped))# Jaccard 相似度 结果交集/并集defdemo02():str1我爱人工智能str2我爱机器学习set_acreate_gram(jieba.lcut(str1))set_bcreate_gram(jieba.lcut(str2))# 计算交集set_intersectionCounter(set_a)Counter(set_b)set_elementslist(set_intersection.elements())# 计算并集unionlist(set(set_aset_b))# 计算相似度print(len(set_elements)/len(union))# 0.25余弦相似度cos⁡(θ)A⋅B∣∣A∣∣⋅∣∣B∣∣\cos(\theta)\frac{\boldsymbol{A}\cdot\boldsymbol{B}}{||\boldsymbol{A}||\cdot||\boldsymbol{B}||}cos(θ)∣∣A∣∣⋅∣∣B∣∣A⋅B​同样范围[0,1][0,1][0,1]适合文本相似度匹配其中⋅是点积∣∣A∣∣||A||∣∣A∣∣是向量 A 的模长向量长度∣∣B∣∣||B||∣∣B∣∣是向量 B 的模长向量长度importjiebafromcollectionsimportCounterimportmath n_gram2# 文本里常用的滑动窗口 连续的子片段defcreate_gram(input_text):data[input_text[i:]foriinrange(n_gram)]zippedzip(*data)returnlist(set(zipped))# 余弦相似度defdemo03():str1我爱人工智能str2我爱机器学习set_acreate_gram(jieba.lcut(str1))set_bcreate_gram(jieba.lcut(str2))# 并集unionlist(set(set_aset_b))# 创建集合结构A[0for_inrange(len(union))]B[0for_inrange(len(union))]# 处理A和Bforxinrange(len(union)):foryinset_a:ifunion[x]y:A[x]1forxinrange(len(union)):foryinset_b:ifunion[x]y:B[x]1# A [1,0,0,2,0]# B [1, 0, 1, 2, 0]# 计算点积(A集合 * B集合)Csum(map(lambdai:A[i]*B[i],range(len(union))))print(C)# 1# 取A的模modulo_amath.sqrt(sum(map(lambdai:A[i]**2,range(len(union)))))print(modulo_a)# 1.4142135623730951# 取B的模modulo_bmath.sqrt(sum(map(lambdai:B[i]**2,range(len(union)))))print(modulo_b)# 1.7320508075688772# C / (A的模B的模)resultC/(modulo_a*modulo_b)print(result)# 0.40824829046386296补充点积内积向量・向量 → 得到数字矩阵乘积矩阵 × 矩阵 → 得到新矩阵哈达玛积同形状矩阵 / 向量元素逐个相乘得到同形状矩阵文本长度规范长度规范不是统一截断分两种思路截断 / 补齐一般在文本预处理阶段做。fromtensorflow.keras.preprocessingimportsequence# 对文本内容截断补齐长度defdemo01(text):# 参数 说明# sequences 列表的列表每个元素是整数序列# maxlen 统一长度不指定则取最长序列长度# padding pre 或 post在开头还是结尾填充# truncating pre 或 post超长时截断开头还是结尾# value 填充值默认 0.0# dtype 输出类型默认 int32datasequence.pad_sequences(text,maxlen5,paddingpre,truncatingpost)# print(data)returndata# 手动处理defdemo02(text):# 截断数cut_len5data[]# 遍历fortintext:# 小于则填充iflen(t)cut_len:# 向前填充data.append([0for_inrange(cut_len-len(t))]t)else:# 向后截断data.append([t[i]foriinrange(cut_len)])returndataif__name____main__:text[[1,2,3,4,5,6],[7,8]]print(demo01(text))# [[1 2 3 4 5]# [0 0 0 7 8]]print(demo02(text))# [[1, 2, 3, 4, 5], [0, 0, 0, 7, 8]]文本数据增强文本数据增强是在不改变语义/标签的前提下人工扩充训练数据缓解数据少、类别不平衡、过拟合等问题常见方法方法说明适用风险同义词替换替换非关键同义词分类、情感可能改变情感极性随机插入插入无关词分类可能引入噪声随机删除删除低信息词分类可能破坏语义随机交换交换词序分类对语序敏感任务风险大回译中→英→中分类、生成可能改变实体、语气模板生成用模板造句意图识别、问答多样性有限生成式改写T5、BART、LLM 改写通用成本高需过滤对抗增强加扰动生成对抗样本鲁棒性可能标签错误Mixup/插值在表示层混合分类可解释性差知识增强用知识图谱替换实体领域任务依赖知识库

相关新闻

基于密度感知的面向自动驾驶场景的三维点云目标检测算法研究深度学习模型大数据分析项目案例

基于密度感知的面向自动驾驶场景的三维点云目标检测算法研究深度学习模型大数据分析项目案例

自动驾驶技术逐步落地的过程中,激光雷达点云的密度不均匀问题,是影响远距离目标检测精度的实际问题。现有三维点云检测算法大多忽略了点云密度与距离的可预测关系,难以有效提升低密度目标的检测效果。针对这个问题,本研究设计了一…

2026/10/11 1:38:33 阅读更多 →
TinyML开发板硬件选型指南:算力、存储、功耗与部署全解析

TinyML开发板硬件选型指南:算力、存储、功耗与部署全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 1:38:33 阅读更多 →
基于拉普拉斯机制的差分隐私技术的数据匿名化工具python项目实战机器学习实战项目案例

基于拉普拉斯机制的差分隐私技术的数据匿名化工具python项目实战机器学习实战项目案例

1.1 课题背景与意义在当今信息技术快速发展的环境下,数据已成为推动社会进步的重要资源。无论是医疗健康、金融交易还是社交网络,大量数据被收集和分析以支持决策。然而,数据的开放共享与隐私保护之间存在显著矛盾。例如,医疗机构…

2026/10/11 1:38:33 阅读更多 →

最新新闻

基于Hadoop的云盘系统实战:HDFS架构调优与避坑指南

基于Hadoop的云盘系统实战:HDFS架构调优与避坑指南

简介:基于Hadoop的百度云盘系统毕业设计资源,包含完整源代码与配套文档说明,适合计算机相关专业学生用于毕业设计、课程设计、项目初期演示,也适合对大数据存储感兴趣的学习者作为实战样例。压缩包大小约77.11MB,内含2…

2026/10/11 2:28:03 阅读更多 →
ESP32 ModbusTCP从站分片缓存:解决拆包粘包与寄存器快照设计

ESP32 ModbusTCP从站分片缓存:解决拆包粘包与寄存器快照设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 2:28:03 阅读更多 →
C# WinForms自绘漂亮登录窗体:无边框、圆角渐变与交互细节

C# WinForms自绘漂亮登录窗体:无边框、圆角渐变与交互细节

简介:这份C#登录窗体资源是一套可直接参考的WinForms登录界面项目,面向桌面应用入门开发者及需要快速搭建账号登录模块的C#程序员。压缩包共70个文件,大小约550KB;11个.cs源文件配合4个.resx资源描述构成主工程核心,3个…

2026/10/11 2:28:03 阅读更多 →
神经网络驱动的作物自适应灌溉:一份可复现的建模研究指南

神经网络驱动的作物自适应灌溉:一份可复现的建模研究指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 2:28:03 阅读更多 →
Redis 复杂 Hash 结构 BigKey 治理:基于 HSCAN 的平滑迁移与惰性删除(UNLINK)

Redis 复杂 Hash 结构 BigKey 治理:基于 HSCAN 的平滑迁移与惰性删除(UNLINK)

在构建高并发电商平台、千万级知识元数据仓库与分布式状态总线时,Redis 凭借其极为出色的微秒级单线程内存处理能力,几乎成了所有技术架构不可或缺的加速引擎。在 Redis 丰富的数据结构中,Hash(字典) 结构因其天然支持…

2026/10/11 2:28:03 阅读更多 →
计算机安全原理与实践手册:从CIA到主机加固的落地指南

计算机安全原理与实践手册:从CIA到主机加固的落地指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 2:27:03 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →