经典网站模板下载,接外贸单的平台有哪些,钣金外包加工网,wordpress 搜索媒体库为了简单直观的理解模型训练#xff0c;我这里搜集了两个简单的实现文本情感分类的例子#xff0c;第一个例子基于朴素贝叶斯分类器#xff0c;第二个例子基于逻辑回归#xff0c;通过这两个例子#xff0c;掌握词袋模型#xff08;Bag of Words#xff09;实现文本情感… 为了简单直观的理解模型训练我这里搜集了两个简单的实现文本情感分类的例子第一个例子基于朴素贝叶斯分类器第二个例子基于逻辑回归通过这两个例子掌握词袋模型Bag of Words实现文本情感分类的基本原理加深对机器学习的理解。
示例一
一、任务目标
使用词袋模型BoW将文本转化为数值向量训练一个情感分类模型判断句子是“积极”还是“消极”。
二、示例数据集
假设我们有以下4条标注好的训练数据
1. 这个电影太棒了 → 积极 2. 剧情糟糕浪费时间。 → 消极 3. 演员演技非常好推荐 → 积极 4. 特效差不建议观看。 → 消极
三、实现原理
词袋模型的核心思想 将文本看作一个“装满单词的袋子”忽略词序和语法只统计每个单词出现的次数。
四、实现步骤
1. 文本预处理 分词将句子拆分为单词中文需分词工具英文按空格拆分。 去除停用词过滤无意义的词如“的”、“了”、“”。 统一小写英文需统一为小写中文无需此步骤。
1. [电影, 太棒] 2. [剧情, 糟糕, 浪费, 时间] 3. [演员, 演技, 非常, 好, 推荐] 4. [特效, 差, 建议, 观看]
2. 构建词袋词汇表
收集所有训练数据中的唯一单词构建词汇表
词汇表 [电影, 太棒, 剧情, 糟糕, 浪费, 时间, 演员, 演技, 非常, 好, 推荐, 特效, 差, 建议, 观看]
3. 文本向量化
将每个句子转换为一个向量表示词汇表中每个单词的出现次数。
示例向量化结果
1. 电影太棒 → [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 2. 剧情糟糕浪费时间 → [0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0] 3. 演员演技非常好推荐 → [0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0] 4. 特效差建议观看 → [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1]
4. 训练分类模型
使用朴素贝叶斯分类器适合文本分类进行训练 5. 使用模型预测新句子
示例输入特效很棒但演员差
步骤 预处理分词 → [特效, 很棒, 演员, 差] 向量化根据词汇表生成向量
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0] 词汇表中特效位置11演员位置6差位置12其他词未出现 3.预测 五、通俗解释 词袋模型像把句子里的单词倒进一个袋子只数每个单词出现的次数不管顺序。 训练过程模型通过统计哪些词常出现在“积极”句哪些词常出现在“消极”句学习判断规律。 预测过程新句子被拆解为单词后模型根据学到的规律计算属于“积极”或“消极”的概率。
六、完整代码示例Python
from sklearn.feature_extraction.text import CountVectorizer from sklearn.naive_bayes import MultinomialNB
# 训练数据 sentences [ 这个电影太棒了, 剧情糟糕浪费时间。, 演员演技非常好推荐, 特效差不建议观看。 ] labels [1, 0, 1, 0] # 1积极0消极
# 1. 文本向量化自动处理分词和停用词需中文分词工具此处简化手动处理 # 手动定义词袋向量实际应使用CountVectorizer X_train [ [1,1,0,0,0,0,0,0,0,0,0,0,0,0,0], # 电影太棒 [0,0,1,1,1,1,0,0,0,0,0,0,0,0,0], # 剧情糟糕浪费时间 [0,0,0,0,0,0,1,1,1,1,1,0,0,0,0], # 演员演技非常好推荐 [0,0,0,0,0,0,0,0,0,0,0,1,1,1,1] # 特效差建议观看 ]
# 2. 训练模型 model MultinomialNB() model.fit(X_train, labels)
# 3. 预测新句子 new_sentence 特效很棒但演员差 # 手动向量化实际需自动分词和映射 new_vector [0,0,0,0,0,0,0,0,0,0,0,1,1,0,0] # 特效、演员、差 prediction model.predict([new_vector]) print(预测结果:, 积极 if prediction[0] 1 else 消极) # 输出消极 七、总结 词袋模型优点简单易实现适合小规模数据。 缺点忽略词序和语义如“好不”和“不好”会被视为相同。 进阶方向TF-IDF、N-gram、词嵌入Word2Vec等更复杂的文本表示方法。
示例二
词袋模型BoW是一种将文本转化为数值表示的常见方法用于文本分类任务。首先我们从一组文本中提取词汇例如句子“我喜欢读书”和“我讨厌读书”得到词汇表“我”、“喜欢”、“读书”、“讨厌”。接着将每个句子转化为向量每个维度对应一个词表示该词在句子中是否出现或出现的频率。接下来我们可以使用逻辑回归等分类器训练模型最后用训练好的模型来预测新文本的情感。
一、基本原理
词袋模型的思想 词袋模型将文本看作一个“词袋”忽略单词之间的顺序只关注每个单词出现的频率。这样每篇文本就可以表示为一个向量向量的每个维度对应一个词汇表中的词其值为该词在文本中出现的次数或经过其他处理后的权重如TF-IDF。
情感分类任务 在情感分类任务中我们希望根据文本的内容判断其情感倾向例如正面或负面。利用词袋模型将文本转化为数值特征后可以用常见的监督学习算法如逻辑回归、朴素贝叶斯、支持向量机等进行分类。
二、具体例子
假设我们有下面两个简单的训练文本每个文本都有标注的情感标签
文本1我 喜欢 读书 —— 正面情感文本2我 讨厌 读书 —— 负面情感
1. 构建词汇表
首先从训练数据中提取所有出现的词语。对于这两个文本提取到的词汇有
我喜欢讨厌读书
因此我们可以构建词汇表Vocabulary为
Vocabulary{我,喜欢,讨厌,读书}
2. 文本向量化
接下来将每个文本转换为向量每个向量的维度对应词汇表中的一个词值为该词出现的次数。 文本1我 喜欢 读书 “我”出现1次“喜欢”出现1次“讨厌”出现0次“读书”出现1次 得到向量 v1[1, 1, 0, 1] 文本2我 讨厌 读书 “我”出现1次“喜欢”出现0次“讨厌”出现1次“读书”出现1次 得到向量 v2[1, 0, 1, 1]
这些向量就是文本的数值化表示它们捕获了文本中各单词的出现情况。
3. 训练分类模型
利用上述向量作为输入特征并结合相应的情感标签例如正面情感标记为1负面情感标记为0我们可以训练一个简单的分类模型。这里以逻辑回归为例
训练步骤 准备数据 将训练样本构建成特征矩阵 X 和标签向量 y 其中第一行对应“我 喜欢 读书”正面第二行对应“我 讨厌 读书”负面。 模型建立 逻辑回归模型假设预测概率为 其中w 是权重向量b 是偏置项。 训练过程 采用梯度下降等优化方法调整 w 和 b 使得模型在训练数据上损失函数例如交叉熵损失最小。 模型评估 利用训练数据或独立的验证集计算模型的预测准确率调整超参数以获得更好的效果。
4. 模型使用
假设训练完成后我们得到了最优参数 w^* 和 b^*。
如何使用训练好的模型 新文本的向量化 对于一个新文本如“我 喜欢 电影”首先根据之前的词汇表进行向量化 假设词汇表仍为 {我,喜欢,讨厌,读书}“我”出现1次“喜欢”出现1次“讨厌”出现0次“读书”出现0次因此向量为注意新文本中的“电影”不在词汇表中因此在简单词袋模型中会被忽略这也是词袋模型的一个局限。 预测 将新文本的向量 vnew 代入逻辑回归模型计算 然后通过 sigmoid 函数转换为概率 如果该概率大于某个阈值例如0.5则模型预测文本为正面情感否则预测为负面情感。
总结 原理 词袋模型将文本转换为不考虑词序的词频向量通过这些向量来捕捉文本的内容信息。 过程 构建词汇表将文本向量化利用标注数据训练分类模型例如逻辑回归评估和调整模型 使用 训练好的模型可用于对新文本进行向量化和情感预测进而进行分类任务。
这种方法虽然简单但能有效展示如何从原始文本到数值表示再到利用机器学习模型进行情感分类的全过程。