文本数据抽取与分类:词袋法与TF-IDF算法详解及实战案例

embedded/2024/12/23 9:20:34/

文本数据抽取与分类:词袋法与TF-IDF算法详解及实战案例

文本数据特征提取是自然语言处理(NLP)中的重要步骤,它决定了后续机器学习模型的表现。本文将介绍两种常用的文本特征提取方法——词袋法(Bag of Words)和TF-IDF(Term Frequency-Inverse Document Frequency),并通过实战案例展示如何应用这些方法进行文本分类

一、词袋法(Bag of Words)原理及应用

1.1 词袋法原理

词袋法是一种简单有效的文本表示方法,它将文档中的词语看作无序集合。词袋模型会忽略词序和语法结构,关注的是词语的出现频率。其主要步骤如下:

  • 1.构建词汇表:从所有文档中提取唯一的词语,形成词汇表。
  • 2.生成特征向量:每个文档基于词汇表生成一个特征向量,向量元素表示词语在该文档中的出现次数。
    例如,给定以下文本:

corpus = [
‘This is the first document.’,
‘This is the second second document.’,
‘And the third one.’,
‘Is this the first document?’
]

词袋模型首先构建如下词汇表:

[‘and’, ‘document’, ‘first’, ‘is’, ‘one’, ‘second’, ‘the’, ‘third’, ‘this’]

然后,每个文档生成一个词频向量,向量的每个元素对应词汇表中的词语在该文档中的出现次数。

1.2 词袋法的优缺点

优点:

  • 实现简单,计算速度快。
  • 适用于短文本或词语之间没有复杂语义关系的场景。

缺点:

  • 忽略了词序和语法结构,导致语义信息丢失。
  • 对于高频但无意义的词(如停用词),它们在模型中占据较大权重。
  • 无法捕捉词语之间的上下文信息。

1.3 词袋法应用案例

以下代码展示了如何使用 CountVectorizer 实现词袋法,并生成词频矩阵:

from sklearn.feature_extraction.text import CountVectorizer
import pandas as pd# 创建文本数据集
corpus = ['This is the first document.','This is the second second document.','And the third one.','Is this the first document?'
]# 初始化 CountVectorizer
vec = CountVectorizer()
X = vec.fit_transform(corpus)# 获取特征名称(词汇表)
print(vec.get_feature_names_out())# 输出词频矩阵
print(X.toarray(</

http://www.ppmy.cn/embedded/97339.html

相关文章

CSS小玩意儿:文字适配背景

一&#xff0c;效果 二&#xff0c;代码 1&#xff0c;搭个框架 添加一张背景图片&#xff0c;在图片中显示一行文字。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" conte…

重磅!RISC-V+OpenHarmony平板电脑发布

仟江水商业电讯&#xff08;8月18日 北京 委托发布&#xff09;RISC-V作为历史上全球发展速度最快、创新最为活跃的开放指令架构&#xff0c;正在不断拓展高性能计算领域的边界。OpenHarmony是由开放原子开源基金会孵化并运营的开源项目&#xff0c;已成为发展速度最快的智能终…

怿星科技与您相约——2024 Testing Expo

汽车测试及质量监控博览会(中国)Testing Expo China-Automotive 怿星科技展位路线 届时欢迎莅临2057号展台&#xff01;

C++第三十八弹---一万六千字使用红黑树封装set和map

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1、set/map基本结构 2、红黑树基本结构改造 3、红黑树的迭代器 4、set的模拟实现 5、map的模拟实现 6、完整代码 1、set/map基本结构 在封装…

EmguCV学习笔记 VB.Net 4.2 二值化

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 教程VB.net版本请访问&#xff1a;EmguCV学习笔记 VB.Net 目录-CSDN博客 教程C#版本请访问&#xff1a;EmguCV学习笔记 C# 目录-CSD…

OpenCV图像滤波(17)计算图像梯度函数Sobel()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 Sobel()函数用于计算图像的一阶、二阶、三阶或混合导数。它使用扩展的Sobel算子来执行这一任务。 在所有情况下&#xff0c;除了一种情况之外&am…

和小米比起来希喂宠物空气净化器怎么样?

有宠物用哪个牌子空气净化机比较好呢&#xff1f;有宠物的家庭除异味、除毛、除菌需求比不养宠的更大&#xff0c;所以有宠物的家庭选空气净化器时一定要着重看这几点。 最近&#xff0c;我发现身边的朋友们都开始重视起家居空气质量&#xff0c;特别是有了宠物之后&#xff0…

AvaloniaChat—从源码构建指南

AvaloniaChat介绍 一个使用大型语言模型进行翻译的简单应用。 我自己的主要使用场景 在看英文文献的过程中&#xff0c;比较喜欢对照着翻译看&#xff0c;因此希望一边是英文一边是中文&#xff0c;虽然某些软件已经自带了翻译功能&#xff0c;但还是喜欢大语言模型的翻译&…