《自然语言处理》—— 词向量之CountVectorizer方法实现

news2024/11/15 23:19:31

文章目录

  • 一、什么是词向量,为什么要进行词向量
  • 二、CountVectorizer方法简单介绍
    • 1、基本作用
    • 2、参数详解
  • 三、示例:代码实现

一、什么是词向量,为什么要进行词向量

  • 词向量是一种将单词或短语映射到实数向量空间的技术。
  • 在自然语言处理中,计算机无法直接理解人类语言中的单词或句子,因为它们本质上是离散的符号。词向量的出现解决了这一问题,通过将单词表示为向量,计算机可以对文本进行数学计算,进而执行各种NLP任务。

二、CountVectorizer方法简单介绍

CountVectorizer是scikit-learn库中用于文本特征提取的一个类,它能够将文本数据转换为词频矩阵,是自然语言处理中常用的文本特征提取方法之一。

1、基本作用

CountVectorizer的作用是将文本数据转换为词频矩阵,即将文本中的每个单词转换为一个特征,统计每个单词在文本中出现的次数,并将其存储在矩阵中。这种表示方法有助于机器学习算法对文本数据进行处理和分析。

2、参数详解

  • CountVectorizer提供了多个参数来控制文本向量化的过程,以下是一些常见参数的解释:

    • stop_words:指定停用词列表,这些词将被忽略不计入词袋中。可以是预定义的停用词列表,如’english’,也可以是自定义的停用词列表。
    • max_features:限制词汇表中的最大单词数量,保留出现频率最高的前n个单词。
    • ngram_range:指定要提取的n-gram范围,例如(1, 2)将提取单个词和二元词组。
    • lowercase:是否将文本转换为小写。默认为True。
    • analyzer:指定文本分析方式,可以是’word’(基于单词的n-gram)、‘char’(基于字符的n-gram)或’char_wb’(基于单词边界的字符n-gram)。默认为’word’。
    • max_df和min_df:分别用于过滤掉文档频率太高或太低的单词。文档频率是指单词出现在多少个文档中的比例。
  • 主要方法

    • fit(raw_documents)学习词汇表。该方法通过遍历输入文档(raw_documents)来构建一个词汇表,词汇表中的每个词都会对应一个唯一的索引。但该方法不会返回文档的词频矩阵。
    • transform(raw_documents)将文档集合转换为词频矩阵,但前提是该文档集合中的词汇必须已经包含在之前通过 fit 或 fit_transform 方法学习到的词汇表中。
    • fit_transform(raw_documents)先学习词汇表(如 fit 方法),然后将文档集合转换为词频矩阵。该方法结合了 fit 和 transform 的功能,效率更高。
    • inverse_transform(X):将词频矩阵 X 转换回原始的文本形式。注意,这里的“原始文本”并不是指原始输入文档,而是指由词汇表中的词重新组合成的文本,每个词出现的次数由矩阵中的值决定。
      • X:由 fit_transform 或 transform 方法生成的词频矩阵
    • get_feature_names_out()获取词汇表中的词,即特征名称。在较新版本的 scikit-learn 中,get_feature_names() 方法已被弃用,取而代之的是 get_feature_names_out()。

三、示例:代码实现

# 导入CountVectorizer方法
from sklearn.feature_extraction.text import CountVectorizer

"""
ngram_range(1,2):对词进行组合,文字进行频率的统计。基于整个文本库来进行统计。
max_features:限制词汇表中的最大单词数量,保留出现频率最高的前n个单词。
(1)本例组合方式:两两组合   
['bird', 'cat', 'cat cat', 'cat fish', 'dog', 'dog cat', 'fish', 'fish bird']
(2)如果ngram_range(1,3),则会出现3个词进行组合
['bird','cat','cat cat','cat fish', 'dog', 'dog cat', 'dog cat cat', 'dog cat fish',"fish','fish bird']
"""
# 示例文本数据,其中一共有四条语句
texts = ["dog cat fish", "dog cat cat", "fish bird", "bird"]


# 实例化一个模型
cv = CountVectorizer(max_features=6, ngram_range=(1, 2))  # 统计每句话中每个词出现的频率次数

# 训练此模型
cv_fit = cv.fit_transform(texts)  # 每个词在这篇文章中出现的次数
print("\n左边一列对应每条语句中每个词在全部词库中对应的索引值")
print("\n右边代表每个词在全部词库中出现的次数")
print(cv_fit)

# 打印出模型的全部词库
print("\n词之间的排列顺序是按照26个英文字母的排序进行的")
print(cv.get_feature_names_out())

# 打印出每个语句的词向量
print("\n每一行代表一条语句")
print(cv_fit.toarray())
  • 结果如下:
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2093173.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Loki Unable to fetch labels from Loki (no org id)

应该是多租户相关导致的 参考文档: 参考文档cMulti-tenancy | Grafana Loki documentationDescribes how Loki implements multi-tenancy to isolate tenant data and queries.https://grafana.com/docs/loki/latest/operations/multi-tenancy/ https://github.com/grafana…

中国招标投标平台JS逆向:DES加密与Python纯算还原

中国招标投标平台JS逆向:DES加密与Python纯算还原 目录 🔐 JS DES解密🧮 Python版本的纯算实现 🔐 JS DES解密 在中国招标投标公共服务平台的分析过程中,发现了数据加密采用了DES算法。DES(数据加密标准&…

JS运行机制及事件循环机制

进程:独立运行,拥有资源空间的应用程序 线程:CPU调度的最小单位 浏览器: 多进程 浏览器有哪些进程? Browser进程,也是主进程 负责各个页面的管理 创建 销毁前进后退等网络资源下载 插件进程:比如Chrome的…

多线程+连接池+代理 运行一段时间线程阻塞,如何解决??

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

【CSP:202012-2】期末预测之最佳阈值(Java)

题目链接 202012-2 期末预测之最佳阈值 题目描述 求解思路 前缀和 根据题意我们可以得知: θ θ θ 值为 a[i].y 时的预测正确的次数等于 a[i].y 前面有多少个 result 0 以及后面有多少个result 1。定义Score类用来存储y和result,其中sum0表示a[1]…

苹果macOS 15.1 Beta 3发布 允许用户将App Store应用下载到外置硬盘

8 月 29 日消息,苹果今日向 Mac 电脑用户推送了 macOS 15.1 开发者预览版 Beta 3 更新(内部版本号:24B5035e),本次更新距离上次发布 Beta / RC 间隔 16 天。 苹果公司在发布 iOS / iPadOS 18.1 Beta 3 更新之外&#x…

redis的共享session应用

项目背景: 该项目背景就是黑马的黑马点评项目。 一:基于Session实现验证码登录流程 基本的登录流程我们做了很多了。这个是短信登录流程 其实和普通的登录流程就多了一个生成验证码,并将验证码保存在session中,并且呢&#xf…

20240831 每日AI必读资讯

Runway 突然删除清空了 HuggingFace 上的所有内容!原因不明... - 之前的项目也无法访问了,比如 Stable Diffusion v1.5也被删了 🔗https://huggingface.co/runwayml/stable-diffusion-v1-5 🔗GitHub 也空了:https:…

ue Rotate to face BB entry转向不对

可能原因: 角色模型没有到正向。 错误: 正确:

C语言:ASCII码表和字符操作

目录 目录 1. 引言 2. ASCII码表 2.1 控制字符 2.2 可显示字符 3. 例子 3.1 相关函数 3.2 打印能够显示的 ASCII码 3.3 字母大小写转换 3.4 数字转数字字符 1. 引言 因为计算机只是认识 0 和 1组成的一串串的二进制数字,为了将人类认识的文…

【时间盒子】-【1.序言】高效人士都在用的时间管理方法。我是如何通过鸿蒙元服务APP实现?

一、介绍 【时间盒子】系列内容将帮助开发者学习如何构建一个全新的HarmonyOS元服务应用,学习使用DevEco Studio创建新项目、使用预览器预览页面、使用真机调试APP、自定义弹窗、使用系统提醒能力(闹钟)、使用首选项数据持久化、熟悉ArkUI页…

Centos 下载和 VM 虚拟机安装

1. Centos 下载 阿里云下载地址 centos-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿里云 2. VM 中创建 Centos 虚拟机 2.1 先打开 VM 虚拟机,点击首页的创建新的虚拟机 2.2 选择自定义,然后点击下一步。 2.3 这里默认就好,继续选择下一…

PE文件结构详解(非常详细)

最近在参考OpenShell为任务栏设置图片背景时,发现里面使用了IAT Hook,这一块没有接触过,去查资料的时候发现IAT Hook需要对PE文件结构有一定的了解,索性将PE文件结构的资料找出来,系统学习一下。 PE文件结构 Portable…

C++基础(1)——入门知识

目录 1.C版本更新 2.C参考⽂档: 3.C书籍推荐 4.C的第⼀个程序 5.命名空间 5.1namespace的价值 5.2namespace的定义 5.3 命名空间使⽤ 6.C输⼊&输出 7.缺省参数 8.函数重载 9.引⽤ 9.1引⽤的概念和定义 9.2引⽤的特性 9.3引⽤的使用 9.4const引⽤…

YOLOv5独家改进:一种高效移动应用的卷积加性自注意Vision Transformer

💡💡💡本文独家改进:高效移动应用的卷积加性自注意Vision Transformer,构建了一个新颖且高效实现方式——卷积加性相似度函数,并提出了一种名为卷积加性标记混合器(CATM) 的简化方法来降低计算开销 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/cat…

opencv/c++的一些简单的操作(入门)

目录 读取图片 读取视频 读取摄像头 图像处理 腐蚀 膨胀 调整图像大小 裁剪和缩放 绘制 绘制矩形 绘制圆形 绘制线条 透视变换 颜色检测 轮廓查找 人脸检测 检测人脸 检测嘴巴 可适当调整参数 读取图片 读取路径widows使用vis sto一定是\斜杠 #include <o…

LoRA 和 DoRA 代码笔记

Improving LoRA: Implementing Weight-Decomposed Low-Rank Adaptation (DoRA) from Scratch LoRA LoRA初始化时&#xff0c;A使用正态分布&#xff0c;B使用0. class LoRALayer(nn.Module):def __init__(self, in_dim, out_dim, rank, alpha):super().__init__()std_dev 1…

第L1周:机器学习-数据预处理

第L1周&#xff1a;机器学习-数据预处理 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 学习要点&#xff1a; **** 学习如何处理缺损数据尝试进行Label编码使用train_test_split进行数据划分学习特征标准化…

EXO项目StandardNode;max_generate_tokens;buffered_token_output;is_finished;

目录 StandardNode max_generate_tokens buffered_token_output 构造函数参数 类属性 总结 is_finished max_generate_tokens self.buffered_token_output StandardNode _process_tensor result是一个np.ndarray ,result.size == 1是什么意思 StandardNode max_g…

【Python机器学习】NLP词频背后的含义——反馈及改进

之前学习的LSA方法都没有考虑文档之间的相似度信息&#xff0c;创建的主题对一组通用规则来说是最优的。在这些特征&#xff08;主题&#xff09;提取模型的无监督学习中&#xff0c;没有任何关于主题向量之间应该多么接近的数据。我们也不允许任何关于主题向量在哪里结束或者它…