《NLP自然语言处理》—— 关键字提取之TF-IDF算法

文章目录

  • 一、TF-IDF算法介绍
  • 二、举例说明
  • 三、示例:代码实现
  • 四、总结

一、TF-IDF算法介绍

  • TF-IDF(Term Frequency-Inverse Document Frequency)是一种用于信息检索与文本挖掘的常用加权技术。TF-IDF是一种统计方法,用以评估一个词语对于一个文件集或一个语料库中的其中一份文件的重要程度。词语的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。
  • TF-IDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为这个词或者短语具有很好的类别区分能力,适合用来分类。
  • TF(Term Frequency,词频)
    • 词频(TF)指的是某一个给定的词语在该文件中出现的次数。这个数字通常会被归一化(一般是词频除以文章总词数),以防止它偏向长的文件。(同一个词语在长文件里可能会比短文件有更高的词频,而不管该词语重要与否。)
    • 计算公式如下:
      在这里插入图片描述
  • IDF(Inverse Document Frequency,逆文档频率)
    • 逆文档频率(IDF)是一个词语普遍重要性的度量。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到。如果包含词条t的文档越少,IDF越大,则说明词条t具有很好的类别区分能力。
    • 计算公式如下:
      在这里插入图片描述
    • +1是为了避免包含该词的文档数为0的时候,分子为0的情况发生
  • TF-IDF的计算公式
    在这里插入图片描述

二、举例说明

  • 假设有一篇名为《中国的蜜蜂养殖》文章,假定该文长度为1000个词,“中国”、“蜜蜂”、养殖"各出现20次,则这三个词的"词频”(TF)都为0.02。

  • 然后,搜索Google发现,包含"的"字的网页共有250亿张,假定这就是中文网页总数(语料库的文档总数)。包含"中国"的网页共有62.3亿张,包含"蜜蜂"的网页为0.484亿张,包含"养殖"的网页为0.973亿张

  • 则通过计算公式可以得到它们的逆文档频率(IDF)和TF-IDF如下:

    \包含该词的文档数(亿)IDFTFTF-IDF
    中国62.30.6030.020.0121
    蜜蜂0.4842.7130.020.0543
    养殖0.9732.4100.020.0482

三、示例:代码实现

  • TfidfVectorizer() 是 sklearn 库中用于将文本集合转换为 TF-IDF 特征矩阵的一个类。

  • TfidfVectorizer 类有许多参数,但以下是一些最常用的:

    • input: 指定输入数据的格式,可以是 ‘filename’、‘file’ 或 ‘string’。默认为 ‘content’,这意味着输入应该是字符串列表或字符串的生成器。
    • max_df: 指定词或短语的文档频率(DF)的上限。高于此值的词或短语将被忽略。这有助于去除一些太常见的词(如停用词)。
    • min_df: 指定词或短语的文档频率(DF)的下限。低于此值的词或短语将被忽略。这有助于去除一些非常罕见的词。
    • max_features: 指定要保留的词的最大数量(基于文档频率)。这有助于减少特征空间的维度。
    • ngram_range: 一个元组 (min_n, max_n),用于指定不同 n 值对应的 n-grams 的范围。例如,(1, 1) 表示单词(unigrams),(1, 2) 表示单词和二元组(bigrams)。
    • stop_words: 一个字符串列表,包含要忽略的停用词。可以是一个预定义的列表,如 - ‘english’,也可以是一个自定义的列表。
    • lowercase: 布尔值,指定是否将所有文本转换为小写。默认为 True。
    • use_idf: 布尔值,指定是否使用 IDF(逆文档频率)重新加权。默认为 True。
    • smooth_idf: 布尔值,指定在计算 IDF 时是否应用平滑(添加 1 到文档频率,以避免除以零)。默认为 True。
  • 主要方法

    • fit(X, y=None): 计算词汇表的词汇IDF值。
    • fit_transform(X, y=None): 拟合模型并转换 X。
    • transform(X): 将 X 转换为 TF-IDF 特征矩阵。
    • get_feature_names_out(): 返回词汇表中所有特征的名称
  • 示例

    from sklearn.feature_extraction.text import TfidfVectorizer  # 示例文本
    """
    corpus代表整个语料库,其中的每一句,代表一个文档
    """  
    corpus = [  'This is the first document.',  'This document is the second document.',  'And this is the third one.',  'Is this the first document?',  
    ]  # 创建 TF-IDF 向量化器  
    vectorizer = TfidfVectorizer()  # 拟合和转换数据  
    X = vectorizer.fit_transform(corpus)  # 获取特征名称(词汇)  
    feature_names = vectorizer.get_feature_names_out()  # 将 TF-IDF 矩阵转换为 DataFrame,可以清楚的看出每个词汇的TF-IDF值
    import pandas as pd  
    df = pd.DataFrame(X.toarray(), columns=feature_names)  
    print(df)
    
    • 由于输出面板中看不全结果,我们可以在调试模式中打开我们想要查看的内容
    • 我们可以查看这个语料库中一共有多少个特征词汇,注意这里每个词汇的前后顺序是根据26个英文字母的顺序进行排序的
      在这里插入图片描述
      在这里插入图片描述
    • 通过上图中的结果,我们可以直观的看到每篇文档中每个特征词汇的TF-IDF值,并且可以选出每篇文档中TF-IDF值最高的,作为关键词汇

四、总结

  • TF-IDF的优缺点
    • 优点:

      • 简单有效,易于实现。
      • 可以在不同长度的文档上进行比较。
      • 考虑了词语的普遍重要性(IDF)。
    • 缺点:

      • 没有考虑词语的语义信息,例如同义词和多义词。
      • 对于小数据集可能效果不佳,因为IDF的计算依赖于大量的文档。
      • 没有考虑词语的位置信息,如标题、段落等。
  • 总的来说,TF-IDF是一种简单而强大的文本特征提取方法,在许多自然语言处理任务中都有广泛的应用。然而,对于需要更深入理解文本语义的任务,可能需要结合其他更复杂的自然语言处理技术。

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

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

相关文章

机器人大会引领产业动向,卓翼飞思绘制无人系统教科研新蓝图

8月21日,万众瞩目的2024世界机器人大会暨博览会在北京亦创国际会展中心盛大开幕。这场为期5天,集“展览”“论坛”“赛事”于一体的机器人盛会,反映了当下机器人领域的繁荣生态。据官方统计数据,今年现场逛展观众高达25万人次&…

揭秘!糖尿病:从绝望到希望的治愈之路

在这个快节奏、高压力的时代,糖尿病这一“甜蜜的负担”正悄然影响着越来越多人的生活。面对这一全球性的健康挑战,许多患者心中都萦绕着一个共同的疑问:“糖尿病,真的能治好吗?”今天,就让我们一起揭开糖尿…

《黑神话:悟空》:30%抽成真相

《黑神话:悟空》自建服务器出售?揭秘游戏界的30%抽成真相! 近年来,随着游戏行业的迅猛发展,游戏开发商与发行平台之间的利益分配问题逐渐成为业界关注的焦点。其中,《黑神话:悟空》作为一款备受…

排序算法:

冒泡排序: 从列表的第一个数字开始进行比较,判断该数和下一个数之间的大小关系,如果该数比右边的数大,则交换位置;否则不变。一般一轮可以确定最大的数字,在列表的最后一位。 代码: 注意&…

【设计模式】创建型模式——简单工厂模式

文章目录 一、创建型模式1. 包含模式1.1 工厂模式1.2 建造者模式1.3 原型模式1.4 单例模式 二、工厂模式1. 概要1.1 意图1.2 主要解决问题1.3 何时使用1.4 如何解决1.5 关键代码1.6 使用场景1.7 优点1.8 缺点1.9 简单工厂实现 2. 简单工厂模式2.1 模式结构2.2 实例2.3 模式定义…

python实战一:合并多个Excel中数据

看不懂可以跟着视频学一下,关于基础课程项目也可以私聊我! 视频源码: 链接:https://pan.quark.cn/s/2055653f735b 之前我们已经学习了如何读取和写入Execl数据,今天我们来用一个实例来进行表格的合并。如下是 2021年…

YOLOv9改进策略【模型轻量化】| ShufflenetV2,通过通道划分构建高效网络

一、本文介绍 本文记录的是基于ShufflenetV2的YOLOv9目标检测轻量化改进方法研究。FLOPs是评价模型复杂独的重要指标,但其无法考虑到模型的内存访问成本和并行度,因此本文在YOLOv9的基础上引入ShufflenetV2,使其在在保持准确性的同时提高模型…

多线程篇(基本认识 - 锁优化)(持续更新迭代)

目录 一、前言 二、阿里开发手册 三、synchronized 锁优化的背景 四、Synchronized的性能变化 1. Java5之前:用户态和内核态之间的切换 2. java6开始:优化Synchronized 五、锁升级 1. 无锁 2. 偏向锁 2.1. 前言 2.2. 什么是偏向锁 2.3. 偏向…

ChatTTS 长音频合成和本地部署2种方式,让你的“儿童绘本”发声的实战教程(文末有福利)

接上文(GLM-4-Flash 大模型 API 免费了,手把手构建“儿童绘本”应用实战(附源码)),老牛同学通过 GLM-4-Flash 文生文和 CogView-3 文生图大模型,和大家一起编写了一个图文并茂的儿童绘本应用&am…

从默默无名到销量激增,极越CEO哭了

文 | 智能相对论 作者 | 周晚 8月28日,极越汽车CEO夏一平在接受媒体采访的时候泪洒当场! 倒不是因为极越汽车销量寥寥,而是因为突然销量激增,他带领的极越团队走出低谷,当他们回过头去看今年上半年的巨大压力&#…

欧拉 函数

互质: 互质是公约数只有1的两个整数,叫做互质整数。公约数只有1的两个自然数,叫做互质自然数,后者是前者特殊情况。 (1和-1与所有整数互质,而且它们是唯一与0互质的整数) 互质的判断方法&…

1500+ HuggingFace API token暴露,使数百万 Meta-Llama、Bloom 等大模型用户面临风险

HugginingFace 和 GitHub 是AI开发人员的重要平台,因此我们决定对这些平台做更为深入的研究。在这项研究中,我们发现了数以千计的 API 令牌,这些令牌暴露给恶意行为者,使数百万最终用户可能受到攻击。 本文的主要内容包括&#x…

MySQL高阶练习题1- 寻找面试候选人

目录 题目 准备数据 分析数据 实现代码 总结 题目 返回 所有面试候选人 的姓名 name 和邮件 mail 。当用户满足以下两个要求中的 任意一条 ,其成为 面试候选人 : 该用户在 连续三场及更多 比赛中赢得 任意 奖牌。该用户在 三场及更多不同的 比赛中赢得 金牌&…

python实战三-提取Word数据到Excel

视频源码: 链接:https://pan.quark.cn/s/83db5bb15383 一个文件夹下有大量会议通知文件,为word文件,文件格式都是一致的,现在要将文件中的一些字段提取出来汇总到Excel文件中。 会议通知文件格式如下: 要提…

C++(1)基础语法

C(1)之基础语法 Author: Once Day Date: 2024年8月29日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏: 源码分析_Once-Day的博客-CSDN博客 参考文…

通用后台管理系统实战演示(Vue3 + element-plus)汇总篇一

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

【Windows学习笔记】1:OneCore和Windows API

1 OneCore 主流Windows跑在PC上,Xbox跑的是从Windows 2000分支出来的版本,Windows Phone跑的是基于Windows CE(实时操作系统)的版本。 为了维护和扩展这些code方便,微软将kernels和base platform集成在一起叫OneCore…

宿舍|基于SprinBoot+vue的宿舍管理系统(源码+数据库+文档)

宿舍管理系统 基于SprinBootvue的私人诊所管理系统 一、前言 二、系统设计 三、系统功能设计 系统功能实现 后台模块实现 管理员功能实现 学生功能实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍&…

【计算机组成原理】六、总线:3.操作和定时

5.操作和定时 文章目录 5.操作和定时5.1总线传输的四个阶段5.2总线定时5.2.1同步通信5.2.2异步通信5.2.3半同步通信5.2.4分离式通信 2.3按时序控制方式 同步总线异步总线 5.1总线传输的四个阶段 总线周期: 申请分配阶段:由需要使用总线的主模块&#…

【C++11及其特性】左值和右值

左值和右值目录 一.左值和右值的报错1.简单定义2.函数返回值作左值3.表达式作左值 二.存储的层次结构1.CPU2.内存3.磁盘4.三者联系5.寄存器 三.左值和右值的概念1.左值2.右值3.转换 一.左值和右值的报错 1.简单定义 赋值号’左边的为左值,右边的为右值. 2.函数返回值作左值 …