文本预处理 BOW(Bag Of Words,词袋)和 TF-IDF(Term Frequency-Inverse Document Frequency,词频逆文档频率)

2023-11-03

1. BOW 构建过程

• 将文本中的词汇提取出来,组成一个词汇表。
• 每篇文档则使用词汇表中的词来表示,形成一个词频向量。
• 忽略词汇之间的顺序关系,只关心词频信息。

比如:
文本1: The cat sits on the mat.
文本2: The dog plays with a ball.

构建词汇表:[The, cat, dog, sits, on, mat, plays, with, a, ball]

文本1转换为词频向量:[2, 1, 0, 1, 1, 1, 0, 0, 0, 0]
文本2转换为词频向量:[1, 0, 1, 0, 0, 0, 1, 1, 1, 1]

2. BOW 与 TF-IDF 对比

• 词频信息的差异
Bag of Words直接使用词的词频(tf)作为权重,表征语义比较粗糙。
Tf-idf不仅使用词频tf,还考虑了词的逆文档频率idf,能够反映一个词在整个语料中的重要程度,表征语义信息更丰富。
• 向量特征的差异
Bag of Words会生成高维稀疏向量,维度与词汇表大小一致。
Tf-idf可以通过设置配置,生成较低维的密集向量。

3. TF-IDF 构建过程

• 词频:计算每个词在一篇文档中出现的频率,反映词的重要性。设词语t在文档d中出现的次数为tf(t,d)。
• 逆文档频率:计算每个词在整个文档集合中的逆文档频率,来衡量一个词的常见程度。idf(t,D) = log(D / (d+1)) ,其中D是文档总数,d是包含词语t的文档数。
• TF-IDF:将TF和IDF相乘得到TF-IDF的值,度量词语t对文档d的重要性。tf-idf(t,d,D) = tf(t,d) * idf(t,D)
• 分词的向量化表示:对每个文档,统计其中每个分词的TF-IDF值,作为分词向量的特征。

4. TF-IDF 与 BM25 对比

• BM25是TF-IDF的增强版本,通过参数调整可以适应不同任务。
• BM25考虑词频tf和文档长度normalization,而传统TF-IDF只有tf和idf。
• BM25有可调参数k1(用于调节词频(term frequency, tf)的缩放因子,k1的值越大,常见词的词频越被缩减,k1的值越小,不常见词的词频越被放大)和b(用于调节文档长度(document length)的缩放因子,b值越大,长文档对评分的贡献越小,b值越小,长文档对评分的贡献越大),可以优化不同数据集。TF-IDF无可调参数。
• BM25文档长度校正能减轻长文档对词的tf值影响。TF-IDF未考虑文档长度。
• BM25通过词频对词排序,TF-IDF直接用tf-idf值排序。
• BM25适用于短文本的相似度计算,TF-IDF更适用于长文本。
• BM25算法复杂度较高,TF-IDF简单高效。
• BM25效果优于TF-IDF,但TF-IDF也较为常用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

文本预处理 BOW(Bag Of Words,词袋)和 TF-IDF(Term Frequency-Inverse Document Frequency,词频逆文档频率) 的相关文章

  • Elastic Search 相关度计算

    为了搞清楚elastic search背后是如何计算文档搜索时候的相关度 我决定自己做实验去探索 这篇博客讲得还不错 http blog csdn net dm vincent article details 42099063 而博客本身也
  • 【机器学习】TF-IDF以及TfidfVectorizer

    TF IDF定义 TF IDF 全称为 词频一逆文档频率 TF 某一给定词语在该文档中出现的频率 T F w 词语 w
  • [python] 使用scikit-learn工具计算文本TF-IDF值

    在文本聚类 文本分类或者比较两个文档相似程度过程中 可能会涉及到TF IDF值的计算 这里主要讲述基于Python的机器学习模块和开源工具 scikit learn 希望文章对你有所帮助 相关文章如下 python爬虫 Selenium获取
  • 【自然语言处理】BOW和TF-IDF详解

    BOW 和 TF IDF 详解 机器无法处理原始形式的文本数据 我们需要将文本分解成一种易于机器阅读的数字格式 自然语言处理背后的理念 BOW 和 TF IDF 都是帮助我们将文本句子转换为向量的技术 我将用一个流行的例子来解释本文中的 B
  • 如何使用 Spark 创建用于文本分类的 TF-IDF?

    我有一个格式如下的 CSV 文件 product id1 product title1 product id2 product title2 product id3 product title3 product id4 product ti
  • Python tf-idf:更新 tf-idf 矩阵的快速方法

    我有一个包含数千行文本的数据集 我的目标是计算 tfidf 分数 然后计算文档之间的余弦相似度 这就是我按照教程在 Python 中使用 gensim 所做的事情 dictionary corpora Dictionary dat corp
  • TfIdfVectorizer:固定词汇的向量化器如何处理新单词?

    我正在研究约 10 万篇研究论文的语料库 我正在考虑三个领域 纯文本 title abstract 我使用 TfIdfVectorizer 获取明文字段的 TfIdf 表示 并将由此产生的词汇反馈回标题和摘要的矢量化器中 以确保所有三种表示
  • 使用 sklearn 计算两个不同列的单独 tfidf 分数

    我正在尝试计算一组查询和每个查询的一组结果之间的相似性 我想使用 tfidf 分数和余弦相似度来做到这一点 我遇到的问题是我无法弄清楚如何使用两列 在 pandas 数据框中 生成 tfidf 矩阵 我已经连接了两列 它工作得很好 但使用起
  • 加权词嵌入是什么意思?

    In the paper http www aclweb org anthology S17 2100我正在努力实施 它说 在这项工作中 使用三种类型的文本对推文进行建模 表示 第一个是词袋模型 权重为 tf idf 词频 逆文档频率 部分
  • TfidfVectorizer 如何计算测试数据的分数

    在 scikit learn 中TfidfVectorizer允许我们拟合训练数据 然后使用相同的向量化器来转换我们的测试数据 对训练数据进行转换的输出是一个矩阵 表示给定文档的每个单词的 tf idf 分数 然而 拟合向量化器如何计算新输
  • 属性错误:找不到 getfeature_names ;使用 scikit-learn

    from sklearn feature extraction text import CountVectorizer vectorizer CountVectorizer vectorizer vectorizer fit word da
  • Python:计算 Pandas 中两列之间的 tf-idf 余弦相似度时出现 MemoryError

    我正在尝试计算 Pandas 数据框中两列之间的 tf idf 向量余弦相似度 一列包含搜索查询 另一列包含产品标题 余弦相似度值旨在成为搜索引擎 排名机器学习算法的 特征 我在 iPython 笔记本中执行此操作 不幸的是遇到了 Memo
  • 如何使用 Spark Naive Bayes 分类器通过 IDF 进行文本分类?

    我想使用 tf idf 将文本文档转换为特征向量 然后训练朴素贝叶斯算法对它们进行分类 我可以轻松加载没有标签的文本文件 并使用 HashingTF 将其转换为向量 然后使用 IDF 根据单词的重要性对单词进行加权 但如果我这样做 我就会去
  • 使用 TfidfVectorizer scikit-learn 的自定义词汇表时出现问题

    我尝试在 scikit learn 中使用自定义词汇来执行一些聚类任务 但得到了非常奇怪的结果 当不使用自定义词汇表时 程序运行正常 我对集群创建感到满意 不过 我已经确定了一组我想用作自定义词汇表的单词 大约 24 000 个 这些单词存
  • 不同长度的tf-idf文档

    我在网上搜索了有关在文档长度差异很大的情况下标准化 tf 等级的信息 例如 文档长度从 500 字到 2500 字不等 我发现的唯一标准化讨论是将术语频率除以文档的长度 因此导致文档的长度没有任何意义 不过 这种方法对于标准化 tf 如果有
  • 如何保留 Spark HashingTF() 函数输入的键或索引?

    基于 1 4 的 Spark 文档 https spark apache org docs 1 4 0 mllib feature extraction html https spark apache org docs 1 4 0 mlli
  • TFIDF 计算混淆

    我在网上找到了以下计算TFIDF的代码 https github com timtrueman tf idf blob master tf idf py 我在函数 def idf word documentList 中添加了 1 这样我就不
  • scikit-learn 中的 TfidfVectorizer:ValueError:np.nan 是无效文档

    我正在使用 scikit learn 中的 TfidfVectorizer 从文本数据中提取一些特征 我有一个 CSV 文件 其中包含分数 可以是 1 或 1 和评论 文本 我将这些数据提取到 DataFrame 中 以便可以运行 Vect
  • 使用短语构建语料库

    我的文件如下 doc1 very good very bad you are great doc2 very bad good restaurent nice place to visit 我想让我的语料库与 这样我的最后DocumentT
  • pyspark中的稀疏向量RDD

    我一直在使用 mllib 的功能通过 Python Pyspark 实现此处描述的 TF IDF 方法 https spark apache org docs 1 3 0 mllib feature extraction html http

随机推荐

  • 身份认证之多因素身份认证(MFA)

    我们大多数人都同意密码是不安全的身份验证形式这一观点 更糟糕的是 它完全不智能 但这引发了一个问题 如果密码不是解决安全问题的答案 那什么是 目前 答案可能是多因素身份验证 MFA 多因素身份验证增加了一层关键的防御 MFA使用两个或多个因
  • Filter过滤器完成验证代码的封装

    Filter过滤器完成验证代码的封装 filter是什么 1 使用filter 2 filter配置到项目中 验证用户权限是需要反复使用的代码块 把他封装到filter中 减少代码冗余 filter是什么 init 方法 初始化方法 在创建
  • 主板上还剩啥?CPU整合GPU/北桥/南桥

    泡泡网主板频道2月6日 众所周知 主板上最重要 成本最高的两颗芯片 被称为北桥和南桥 其中北桥负责与处理器对接 主要功能包括 内存控制器 PCI E控制器 集成显卡 前 后端总线等 都是速度较快的模块 而南桥则负责外围周边功能 速度较慢 主
  • c++ 读写excel_每天10分钟,轻松入门python,json、csv等读写

    JSON的全称是 JavaScript Object Notation 意思是JavaScript对象表示法 它是一种基于文本 独立于语言的轻量级数据交换格式 这种数据在弄爬虫的时候 经常会见到这类型的数据 下面展示一个简单的json数据
  • 利用计数器实现任意分频,占空比为60%(任意占空比)电路 [VHDL]

    本次实验为利用计数器实现分频常数为24000 占空比为60 的电路 也可以设置为任意分频 任意占空比的电路 一 设计思路 设计分析 要将原来的占空比为50 大频率的信号重新设为60 占空比 频率较小的周期信号 其中频率的思想就是分频器 利用
  • Northstar软件下载 以及搭建机器人时遇到的坑

    上个学期学机器人的时候 老师让我们用 innostar 创意之星 做出一个机器人来 但我翻遍全网也没找到创意之星的配套软件 我找了三天也没找到 公司官网也没有 给博创的人发邮件也不回 给我整的心态爆炸 为了方便后来的学弟学妹们 现在把我找到
  • Java 优先队列(PriorityQueue)总结

    PriorityQueue 实现的是 Queue 接口 可以使用 Queue 提供的方法 以及自带的方法 1 PriorityQueue概述 Java PriorityQueue 实现了 Queue 接口 不允许放入 null 元素 其通过
  • LVGL学习笔记

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 硬件要求 二 移植 1 准备工作 2 文件准备 3 加入工程 前言 LVGL 轻巧而多功能的图形库 是一个免费的开放源代码图形库 它提供创建具有易于使用的
  • Shopify Liquid 日期

    Shopify Liquid 日期变量 assign start date now date s assign start date year now date Y assign yoy start start date year minu
  • 基于卷积神经网络的车道线检测

    在本博客中 我们将探讨如何使用卷积神经网络 CNN 在Udacity自动驾驶数据集上进行车道线检测 我们将首先简要介绍自动驾驶的相关知识 然后介绍车道线检测的重要性 接下来 我们将构建一个CNN模型 并在Udacity数据集上对其进行训练和
  • 【Mo 人工智能技术博客】K-means:无监督聚类的经典算法

    K means 无监督聚类的经典算法 作者 郑培 无监督学习是一类用于在数据中寻找模式的机器学习技术 无监督学习算法使用的输入数据都是没有标注过的 这意味着数据只给出了输入变量 自变量 X 而没有给出相应的输出变量 因变量 在无监督学习中
  • 常见的并发模型

    介绍 常见解决并发的策略一般有两种 共享数据和消息传递 基于消息传递的实现有 CSP模型 典型的有Go语言中基于Channel的通讯 Actor模型 典型的有Akka中的Actor模型 CSP模型和Actor模型的简单理解 Don t co
  • linux centos中查看应用进程和杀死进程

    1 ps 表示 查看正在运行中的进程 2 ps ef 表示 查看所有进程的详细信息 3 输入 ps ef grep nmon 表示 搜索nmon相关的进程 4 杀死进程 kill 9 进程号
  • 【常用的反监控(winrdlv3)方法winrdlv3】

    常用的反监控 winrdlv3 方法winrdlv3 方案一 使用silent terminal 禁用 sdhelper2 exe和winrdlv3 exe两个程序进程 加密进程终止或者可以只中止sdhelper2则不会加密也不会被管理员发
  • Python手册(Standard Library)--re

    文章目录 re模块 匹配 返回re对象 MatchObject 查找 检索 替换和分割 flags标志 re 模块使 Python 语言拥有全部的正则表达式功能 compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象
  • 笔记:JavaScript编译与执行

    1 js的编译与执行 事件循环 单线程语言 JavaScript是单线程语言 即在浏览器中一个页面只有一个线程在执行js代码 进程和线程 假设我们有一家工厂 进程 那么 工厂所拥有的独立资源就相当于系统给我们分配的内存 这是独立的 如果我们
  • Flutter 学习笔记 (二) —— Flutter布局及常用widget总结

    前言 在Flutter里 UI控件就是Widget Widget根据不同的功能可以分为结构元素 如按钮或菜单 文本样式 字体或者颜色方案 布局属性 如填充 对齐 居中 可以这么理解 一个flutter的页面是有一棵树型的Widget组成 包
  • Nginx+Redis+Ehcache:大型高并发与高可用的三层缓存架构总结

    Nginx Redis Ehcache 大型高并发与高可用的三层缓存架构总结 Nginx 对于中间件nginx常用来做流量的分发 同时nginx本身也有自己的缓存 容量有限 我们可以用来缓存热点数据 让用户的请求直接走缓存并返回 减少流向服
  • 电感的特性

    电感的特性 2009 10 19 17 06 jonniyong 分类 工程技术科学 浏览4472次 简单的说电感有虑波 震荡 扼流三个作用 但是具体是怎么来实现的呢 各自的工作原理 还有就是对于这三种用途的电感 那些因素影响他们 也就是说
  • 文本预处理 BOW(Bag Of Words,词袋)和 TF-IDF(Term Frequency-Inverse Document Frequency,词频逆文档频率)

    1 BOW 构建过程 将文本中的词汇提取出来 组成一个词汇表 每篇文档则使用词汇表中的词来表示 形成一个词频向量 忽略词汇之间的顺序关系 只关心词频信息 比如 文本1 The cat sits on the mat 文本2 The dog