机器学习-词向量转换实战 从零构建中文情感分析系统文本预处理、词向量与分类实战本文将完整演示一个中文情感分析系统的构建流程涵盖数据预处理、中文分词、停用词过滤、词向量转换、模型训练与评估等核心环节。二、数据预处理让计算机“看懂”中文2.1 原始数据读取首先我们需要准备两类数据好评和差评的评论文本每行一条评论。使用 Pandas 读取数据import pandas as pd cp_content pd.read_table(差评.txt, encodinggbk) yzpj_content pd.read_table(优质评价.txt, encodinggbk)2.2 中文分词jieba的核心作用与英文不同中文文本是连续的字符序列没有天然的空格分隔。要让计算机理解中文第一步就是分词——把连续的文本敲碎变成一块块有意义的积木。jieba是目前最流行的 Python 中文分词库之一对初学者非常友好。使用jieba.lcut()可以对每条评论进行精准分词import jieba cp_segments [] contents cp_content.content.values.tolist() for content in contents: results jieba.lcut(content) if len(results) 1: # 过滤无效短评论 cp_segments.append(results)分词的质量直接影响后续所有环节的效果——分词错误会在后续的处理链条中被不断放大。2.3 停用词过滤去除“噪音”中文中有大量无实际意义的词如“的”、“了”、“是”、“在”等。这些词在文本中频繁出现但信息量极低如果不加处理会干扰模型学习真正有意义的特征。停用词过滤的核心代码如下pythonstopwords pd.read_csv(StopwordsCN.txt, encodingutf8, enginepython) def drop_stopwords(contents, stopwords): segments_clean [] for content in contents: line_clean [word for word in content if word not in stopwords] if line_clean: segments_clean.append(line_clean) return segments_clean常用的中文停用词表包括哈工大停用词表、四川大学停用词表等。三、词向量转换把文字变成数字这是整个流程中最关键的一步。机器学习算法只能处理数值数据因此需要将文本转换为数值向量。3.1 词袋模型Bag of Words词袋模型的核心思想非常朴素不管词在句子里的顺序只统计每个词出现了多少次。它将文本视为一个“装满词的袋子”通过词汇的出现频率来描述文本特征。例如对于“dog cat fish”和“dog cat cat”两条文本词袋模型会统计dog: 1次 / 1次cat: 1次 / 2次fish: 1次 / 0次3.2 CountVectorizer一键向量化CountVectorizer是 scikit-learn 中用于将文本转换为词频矩阵的核心工具。它的工作流程分为三个步骤文本预处理 → 构建词汇表 → 生成词频矩阵。基本用法如下pythonfrom sklearn.feature_extraction.text import CountVectorizer 将分词结果用空格连接成字符串CountVectorizer要求 words [ .join(text) for text in x_train] 初始化向量化器 vec CountVectorizer( max_features4000, # 最多保留4000个特征词 lowercaseFalse, # 中文不需要转小写 ngram_range(1, 3) # 提取1-3个连续词的组合 ) 拟合并转换 x_train_vec vec.fit_transform(words)3.3 关键参数解析max_features控制保留的最大特征数量。设置过大容易过拟合设置过小可能丢失重要信息。ngram_range决定提取词的连续组合范围。(1,2)表示既提取单个词也提取相邻两个词的组合。例如“质量很好”可以拆分为“质量”、“很好”和“质量很好”三个特征能更好地捕捉短语级别的语义。lowercase对中文必须设为False因为中文没有大小写概念。重要提醒CountVectorizer默认按空格分词因此中文文本必须先经过jieba分词并用空格连接成“词1 词2 词3”的格式否则CountVectorizer会把整条句子当作一个词。3.4 输出解读fit_transform()返回的是一个稀疏矩阵只记录非零值以节省存储空间。通过toarray()可以查看完整的词频矩阵——每一行代表一条文本每一列代表一个词汇数值代表该词在文本中的出现次数。print(cv_fit) # 稀疏矩阵 print(cv.get_feature_names_out()) # 所有特征词 print(cv_fit.toarray()) # 完整的词频矩阵四、模型训练与评估完成向量化后就可以使用机器学习模型进行分类了。朴素贝叶斯MultinomialNB是文本分类中常用且高效的算法。from sklearn.naive_bayes import MultinomialNB from sklearn.model_selection import train_test_split from sklearn import metrics 划分训练集和测试集 x_train, x_test, y_train, y_test train_test_split( features, labels, test_size0.2, random_state42 ) 训练模型 classifier MultinomialNB(alpha0.1) classifier.fit(x_train_vec, y_train) 预测与评估 predictions classifier.predict(x_test_vec) print(metrics.classification_report(y_test, predictions))五、完整技术路线总结一个完整的中文情感分析系统通常遵循以下技术路线步骤工具/方法作用中文分词jieba将连续文本切分为词语停用词过滤停用词表去除无意义的高频词文本向量化CountVectorizer / TfidfVectorizer将文本转为数值特征数据平衡SMOTE可选处理类别不平衡问题模型训练朴素贝叶斯 / SVM训练分类器模型评估classification_report评估模型效果六、常见问题与注意事项1. 中文编码问题读取中文文本时必须确保编码正确通常为UTF-8或GBK否则会出现乱码或报错。2. 数据不平衡如果好评和差评数量差距悬殊模型会偏向多数类。可以通过过采样SMOTE或欠采样来处理。3. 特征数量选择max_features并非越大越好。过多的特征会导致维度灾难和过拟合一般建议通过交叉验证来确定最优值。4. 模型过拟合训练集准确率很高但测试集表现差说明模型过拟合了。可以通过增加训练数据、减少特征数量、调整正则化参数等方式改善。七、最后从原始的中文评论文本到可用的情感分类模型核心路径可以概括为文本 → 分词 → 去停用词 → 向量化 → 分类。每一步都有其不可替代的作用——分词决定了语义单元的质量停用词过滤去除了噪音向量化让机器“理解”了文本分类器则完成了最终的判断。CountVectorizer作为scikit-learn中经典的文本特征提取工具以其简单直观、高效实用的特点在文本分类、情感分析等任务中被广泛应用。

相关新闻

最新新闻

AMD GPU运行AI模型实战:绕过CUDA生态的完整指南

AMD GPU运行AI模型实战:绕过CUDA生态的完整指南

1. 先搞清楚这个标题到底在说什么 这个标题“CUDA 20年护城河一个周末崩了,Claude独自跑通AMD新GPU”听起来很夸张,但核心信息点其实很明确: 有人在AMD的GPU上,不依赖NVIDIA的CUDA生态,成功运行了AI模型(比…

2026/8/12 19:03:13
SQL Server 2019元数据查询实战:从sys视图到数据库字典生成

SQL Server 2019元数据查询实战:从sys视图到数据库字典生成

1. 项目概述:从一次“无效对象名”报错说起 那天下午,我正在为一个新接手的项目梳理数据库文档。项目用的是 SQL Server 2019,我需要快速摸清整个实例下有哪些数据库,每个库里有什么表,表结构如何,主键是谁…

2026/8/12 19:03:13
AI Agent架构解析:从LLM大脑到工具执行的全栈实践

AI Agent架构解析:从LLM大脑到工具执行的全栈实践

1. 项目概述:从“工具”到“伙伴”的认知跃迁“AI Agent 组成:像人一样思考的智能体”这个标题,精准地指向了当前人工智能领域最激动人心的范式转变。过去几年,我们习惯了将大语言模型(LLM)当作一个超级智能…

2026/8/12 19:03:13
双人成行It Takes Two免安装下载

双人成行It Takes Two免安装下载

下载链接 游戏介绍 《双人成行》的故事围绕一对经常起争执、互看不顺眼的夫妻科迪与小梅展开。他们被魔咒变成了玩偶,并被困在一个奇幻世界中。在爱情导师哈金博士的指示下,他们不得不一起克服各种挑战,同时修复他们破裂的关系。 常见问题 …

2026/8/12 19:03:13
LangChain实战指南:从模型接入到RAG与Agent开发全解析

LangChain实战指南:从模型接入到RAG与Agent开发全解析

1. 先搞清楚 LangChain 到底能帮你解决什么实际问题 如果你正在接触大模型应用开发,或者想把大模型能力集成到自己的业务系统里,那么 LangChain 是你绕不开的一个框架。它不是一个模型,而是一个“胶水”和“脚手架”,核心价值在于…

2026/8/12 19:03:13
测试工程师效率革命:从Shell脚本到AI Copilot的终端工具链实战

测试工程师效率革命:从Shell脚本到AI Copilot的终端工具链实战

1. 项目概述:为什么测试工程师需要武装自己的终端? 如果你是一名软件测试工程师,每天的工作还停留在点点点、手动执行重复的测试用例、在多个窗口间来回切换查看日志和报告,那么你可能已经陷入了效率的泥潭。我干了十多年测试&…

2026/8/12 18:58:12