人工智能自然语言处理:N-gram和TF-IDF模型详解

news2024/11/27 18:37:17

在这里插入图片描述

人工智能自然语言处理:N-gram和TF-IDF模型详解

1.N-gram 模型

N-Gram 是一种基于统计语言模型的算法。它的基本思想是将文本里面的内容按照字节进行大小为 N 的滑动窗口操作,形成了长度是 N 的字节片段序列。

每一个字节片段称为 gram,对所有 gram 的出现频度进行统计,并且按照事先设定好的阈值进行过滤,形成关键 gram 列表,也就是这个文本的向量特征空间,列表中的每一种 gram 就是一个特征向量维度。

该模型基于这样一种假设,第 N 个词的出现只与前面 N-1 个词相关,而与其它任何词都不相关,整句的概率就是各个词出现概率的乘积。这些概率可以通过直接从语料中统计 N 个词同时出现的次数得到。常用的是二元的 Bi-Gram 和三元的 Tri-Gram。

当 n=1 时,一个一元模型为:

P ( w 1 ​ , w 2 ​ , ⋯ , w m ​ ) = ∏ i = 1 m ​ P ( w i ​ ) P(w1​,w2​,⋯,wm​)=∏i=1m​P(wi​) P(w1​,w2​,,wm)=i=1mP(wi)

当 n=2 时,一个二元模型为:

P ( w 1 ​ , w 2 ​ , ⋯ , w m ​ ) = ∏ i = 1 m ​ P ( w i ​ ∣ w i − 1 ​ ) P(w1​,w2​,⋯,wm​)=∏i=1m​P(wi​∣wi−1​) P(w1​,w2​,,wm)=i=1mP(wiwi1​)

当 n=3 时,一个三元模型为:

P ( w 1 ​ , w 2 ​ , ⋯ , w m ​ ) = ∏ i = 1 m ​ P ( w i ​ ∣ w i − 2 ​ , w i − 1 ​ ) P(w1​,w2​,⋯,wm​)=∏i=1m​P(wi​∣wi−2​,wi−1​) P(w1​,w2​,,wm)=i=1mP(wiwi2​,wi1​)

一个 n-gram 是 n 个词的序列:
一个 2-gram(bigram 或二元)是两个词的序列,例如 “I love”;
一个 3-gram(trigram 或三元)是三个词的序列,例如 “I love you”。
需要注意的是,通常 n-gram 即表示词序列,也表示预测这个词序列概率的模型。假设给定一个词序列(w1,w2,···,wm),根据概率的链式法则,可得公式 (1.1):

P ( w 1 ​ , w 2 ​ , ⋯ , w m ​ ) = P ( w 1 ​ ) ∗ P ( w 2 ​ ∣ w 1 ​ ) ⋯ P ( w m ​ ∣ w 1 ​ , ⋯ , w m − 1 ​ ) = ∏ i = 1 m ​ P ( w i ​ ∣ w i − 2 ​ , w i − 1 ​ ) P(w1​,w2​,⋯,wm​)=P(w1​)∗P(w2​∣w1​)⋯P(wm​∣w1​,⋯,wm−1​)=∏i=1m​P(wi​∣wi−2​,wi−1​) P(w1​,w2​,,wm)=P(w1​)P(w2​w1​)P(wmw1​,,wm1​)=i=1mP(wiwi2​,wi1​)

公式(1.1)右边的 P(wi | w1,w2,···,wi-1)表示某个词 wi 在已知句子 w1,w2,···,wi-1 后面一个词出现的概率

1.1 马尔科夫假设

在实践中,如果文本的长度较长时,公式(1.1)右边的 P ( w i ∣ w 1 , w 2 , ⋅ ⋅ ⋅ , w i − 1 P(wi | w1,w2,···,wi-1 Pwiw1w2⋅⋅⋅wi1的估算会非常困难,因此需要引入马尔科夫假设。

马尔科夫假设是指,每个词出现的概率只跟它前面的少数几个词有关。比如,二阶马尔科夫假设只考虑前面两个词,相应的语言模型是三元(trigram)模型。应用了这个假设表明当前这个词仅仅跟前面几个有限的词有关,因此也就不必追溯到最开始的那个词,这样便可以大幅缩减上述算式的长度。
基于马尔科夫假设,可得公式 (1.2):

P ( w i ​ ∣ w 1 ​ , ⋯ , w i − 1 ​ ) ≈ P ( w i ​ ∣ w i − n + 1 ​ , ⋯ , w i − 1 ​ ) P(wi​∣w1​,⋯,wi−1​)≈P(wi​∣wi−n+1​,⋯,wi−1​) P(wiw1​,,wi1​)P(wiwin+1​,,wi1​)

当 n = 1 时称为一元模型(unigram model),公式(1.2)右边会演变成 P(wi),此时,整个句子的概率为:

P ( w 1 ​ , w 2 ​ , ⋯ , w m ​ ) = P ( w 1 ​ ) ∗ P ( w 2 ​ ) ⋯ P ( w m ​ ) = ∏ i = 1 m ​ P ( w i ​ ) P(w1​,w2​,⋯,wm​)=P(w1​)∗P(w2​)⋯P(wm​)=∏i=1m​P(wi​) P(w1​,w2​,,wm)=P(w1​)P(w2​)P(wm)=i=1mP(wi)

当 n = 2 时称为二元模型(bigram model),公式(1.2)右边会演变成 P(wi | wi-1),此时,整个句子的概率为:

P ( w 1 ​ , w 2 ​ , ⋯ , w m ​ ) = P ( w 1 ​ ) ∗ P ( w 2 ​ ∣ w 1 ​ ) ⋯ P ( w m ​ ∣ w m − 1 ​ ) = ∏ i = 1 m ​ P ( w i ​ ∣ w i − 1 ​ ) P(w1​,w2​,⋯,wm​)=P(w1​)∗P(w2​∣w1​)⋯P(wm​∣wm−1​)=∏i=1m​P(wi​∣wi−1​) P(w1​,w2​,,wm)=P(w1​)P(w2​w1​)P(wmwm1​)=i=1mP(wiwi1​)

当 n = 3 时称为三元模型(trigram model),公式(1.2)右边会演变成 P(wi| wi-2,wi-1),此时,整个句子的概率为:

P ( w 1 ​ , w 2 ​ , ⋯ , w m ​ ) = P ( w 1 ​ ) ∗ P ( w 2 ​ ∣ w 1 ​ ) ⋯ P ( w m ​ ∣ w m − 2 ​ , ⋯ , w m − 1 ​ ) = ∏ i = 1 m ​ P ( w i ​ ∣ w i − 2 ​ , w i − 1 ​ ) P(w1​,w2​,⋯,wm​)=P(w1​)∗P(w2​∣w1​)⋯P(wm​∣wm−2​,⋯,wm−1​)=∏i=1m​P(wi​∣wi−2​,wi−1​) P(w1​,w2​,,wm)=P(w1​)P(w2​w1​)P(wmwm2​,,wm1​)=i=1mP(wiwi2​,wi1​)

估计 n-gram 模型概率采用极大似然估计(maximum likelihood estimation,MLE)。即通过从语料库中获取计数,并将计数归一化到(0,1),从而得到 n-gram 模型参数的极大似然估计。即:

其中 c o u n t ( W i − n + 1 , ⋅ ⋅ ⋅ , W i ) count(Wi-n+1,···,Wi) countWin+1⋅⋅⋅Wi表示文本序列 ( W i − n + 1 , ⋅ ⋅ ⋅ , W i ) (Wi-n+1,···,Wi) Win+1⋅⋅⋅Wi,在语料库中出现的次数。

1.2 N-gram 模型优缺点

总结下基于统计的 n-gram 语言模型的优缺点:

  • 优点:

    1. 采用极大似然估计,参数易训练;
    2. 完全包含了前 n-1 个词的全部信息;
    3. 可解释性强,直观易理解;
  • 缺点:

    1. 缺乏长期依赖,只能建模到前 n-1 个词;
    2. 随着 n 的增大,参数空间呈指数增长;
    3. 数据稀疏,难免会出现 OOV 词(out of vocabulary)的问题;
    4. 单纯的基于统计频次,泛化能力差

2.TF-IDF

TF-IDF(term frequency-inverse document frequency,词频 - 逆向文件频率) 是一种用于信息检索 (information retrieval)) 与文本挖掘 (text mining) 的常用加权技术。它是一种统计方法,用以评估一个字或词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。

在信息检索 (Information Retrieval)、文本挖掘(Text Mining) 以及自然语言处理 (Natural Language Processing) 领域,TF-IDF 算法都可以说是鼎鼎有名。虽然在这些领域中,目前也出现了不少以深度学习为基础的新的文本表达和算分 (Weighting) 方法,但是 TF-IDF 作为一个最基础的方法,依然在很多应用中发挥着不可替代的作用。

TF-IDF 的主要思想是:如果某个单词在一篇文章中出现的频率 TF 高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。

  • TF(全称 TermFrequency),中文含义词频,即关键词出现在网页当中的频次。

  • IDF(全称 InverseDocumentFrequency),中文含义逆文档频率,即该关键词出现在所有文档里面的一种数据集合。

  • TF-IDF 的计算过程为:

    1. 第一步,计算词频。
      词频(TF)= 文章的总词数某个词在文章中的出现次数​
      或者
      词频(TF)= 该文出现次数最多的词出现的次数某个词在文章中的出现次数​

    2. 第二步,计算逆文档频率。
      逆文档频率(IDF)=log(包含该词的文档数 +1 语料库的文档总数​)
      如果一个词越常见,那么分母就越大,逆文档频率就越小越接近 0。分母之所以要加 1,是为了避免分母为 0(即所有文档都不包含该词)。log 表示对得到的值取对数。

    3. 第三步,计算 TF-IDF。
      TF−IDF= 词频(TF)× 逆文档频率(IDF)

可以看到,TF-IDF 与一个词在文档中的出现次数成正比,与该词在整个语言中的出现次数成反比。所以,自动提取关键词的算法就是计算出文档的每个词的 TF-IDF 值,然后按降序排列,取排在最前面的几个词。

2.1 TF-IDF 算法总结

TF-IDF 算法是一种常用的文本特征表示方法,用于评估一个词对于一个文档集或语料库中某个文档的重要程度,常用于以下领域:

(1)搜索引擎;
(2)关键词提取;
(3)文本相似性;
(4)文本摘要。

  • TF-IDF 算法优点:

    1. 简单有效:TF-IDF 算法简单易实现,计算速度快,并且在很多文本相关任务中表现良好。

    2. 考虑词频和文档频率:TF-IDF 综合考虑了词频和文档频率两个因素,可以准确表示词语在文档中的重要性。

    3. 强调关键词:TF-IDF 算法倾向于给予在文档中频繁出现但在整个语料库中较少见的词更高的权重,从而能够突出关键词。

    4. 适用性广泛:TF-IDF 算法可以应用于各种文本相关任务,如信息检索、文本分类、关键词提取等。

  • TF-IDF 算法缺点:

    1. 无法捕捉语义信息:TF-IDF 算法仅根据词频和文档频率进行计算,无法捕捉到词语之间的语义关系,因此在处理一些复杂的语义任务时可能效果有限。

    2. 忽略词序信息:TF-IDF 算法将文本表示为词语的集合,并忽略了词语之间的顺序信息,因此无法捕捉到词语顺序对于文本含义的影响。

    3. 对文档长度敏感:TF-IDF 算法受文档长度的影响较大,较长的文档可能会有较高的词频,从而影响到特征权重的计算结果。

    4. 词汇表限制:TF-IDF 算法需要构建词汇表来对文本进行表示,词汇表的大小会对算法的性能和计算开销产生影响,同时也可能存在未登录词的问题。

    5. 主题混杂问题:在包含多个主题的文档中,TF-IDF 算法可能会给予一些频繁出现的词较高的权重,导致提取的关键词并不完全与文档主题相关。

3.关键知识点总结:

  1. 在N-gram模型中,N表示表示每次取出的单词数量

  2. 在N-gram模型中,当N取值越大,模型的效果会不一定变得更好(要合适)

  3. N-gram模型可以用于文本分类、语音识别和机器翻译等自然语言处理任务。

  4. N-gram模型的主要优点是可以捕捉上下文信息,但缺点是无法处理未知的单词。

  5. 在TF-IDF模型中,IDF值越大代表该词对文本内容的区分度越高

  6. 在TF-IDF模型中,词频(TF)指的是某个词在一篇文档中出现的次数。

本分类、语音识别和机器翻译等自然语言处理任务。

  1. N-gram模型的主要优点是可以捕捉上下文信息,但缺点是无法处理未知的单词。

  2. 在TF-IDF模型中,IDF值越大代表该词对文本内容的区分度越高

  3. 在TF-IDF模型中,词频(TF)指的是某个词在一篇文档中出现的次数。

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

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

相关文章

第一阶段-第九章 Python的异常、模块与包

目录 一、了解异常  1.学习目标  2.什么是异常  3.bug单词的诞生  4.本节的演示  5.本小节的总结 二、异常的捕获方法  1.学习目标  2.为什么要捕获异常  3.如何进行异常的捕获(异常为常规的、指定的、多个时,捕获所有异常、异常else、f…

跟我一起从零开始学python(八)全栈开发

前言 回顾之前讲了python语法编程 ,必修入门基础和网络编程,多线程/多进程/协程等方面的内容,后续讲到了数据库编程篇MySQL,Redis,MongoDB篇,和机器学习前面没看的也不用往前翻,系列文已经整理…

【ArcGIS Pro微课1000例】0028:绘制酒店分布热力图(POI数据)

本文讲解在ArcGIS Pro中文版中,基于长沙市酒店宾馆分布矢量点数据(POI数据)绘制酒店分布热力图。 文章目录 一、加载酒店分布数据二、绘制热度图参考阅读: 【GeoDa实用技巧100例】004:绘制长沙市宾馆热度图 【ArcGIS微课1000例】0070:制作宾馆酒店分布热度热力图 一、加载…

【java爬虫】将优惠券数据存入数据库排序查询

本文是在之前两篇文章的基础上进行写作的 (1条消息) 【java爬虫】使用selenium爬取优惠券_haohulala的博客-CSDN博客 (1条消息) 【java爬虫】使用selenium获取某宝联盟淘口令_haohulala的博客-CSDN博客 前两篇文章介绍了如何获取优惠券的基础信息,本文将获取到的…

mybatis-plus中的逻辑删除

官网:逻辑删除 | MyBatis-Plus 1.数据库字段 得有一个字段用来表示是否被删除。 记得加上注解TableLogic 也可以加上值,表示被删除具体得值,和没有被删除具体的值。 TableLogic(value "1",delval "0") 源码&#…

go语言中的string类型简介

在 Go 中,String 是一种不可变的类型,不能被修改。 在 Go 语言中,字符串由 Unicode 字符组成,每个字符都可以用一个或多个字节来表示。我们使用双引号或反引号来定义字符串,使用反引号定义的字符串不会对其内容进行任何…

FPGA Verilog移位寄存器应用:边沿检测、信号同步、毛刺滤波

文章目录 1. 端口定义2. 边沿检测3. 信号同步4. 信号滤波5. 源码6. 总结 输入信号的边沿检测、打拍同步、毛刺滤波处理,是FPGA开发的基础知识,本文介绍基于移位寄存器的方式,实现以上全部功能:上升沿、下降沿、双边沿检测、输入信…

21.基于注解的自动装配

基于注解的自动装配 通过Autowired注解即可完成自动装配 Autowired注解标识的位置 成员变量上:直接标记Autowired注解即可完成自动装配,不需要提供setXxx()方法成员变量set方法上:直接标记Autowired注解即可完成自动装配成员变量赋值的有参…

C++函数对象与函数指针在sort上的性能测试

最近在比较函数对象和函数指针的性能,看了一些文章,国内的如: https://zhuanlan.zhihu.com/p/579128724 上面这篇文章是在GoogleTest当中进行测试的,其测试结果仅展示了一次,因此我认为不具备说服力,因为我…

风雨中茁壮成长的程序树-深入浅出2023-迟来的总结

起点所在; 反观2021年的时候,入行半年多的当时还是艰难万分啊。真的犹如创业艰难百战多,无数的风雨和重大压力的遭遇,甚至于当时第一家company的时候产生过放弃的念头。 Yes,当时时有产生放弃的念头的。 because当时入行时候的收…

【人工智能】从零开始的口罩识别系统

文章目录 前言第零章 环境准备Python环境安装安装labelimgAI StudioYOLO2COCOPaddleYOLOnumpy 猫狗分类数据集实战数据上传新建项目 前言 本文是从零开始搭建口罩识别系统的学习过程总结,涉及到的软件环境、硬件环境、代码、操作都会一一给出。 第零章 环境准备 …

Python实现PSO粒子群优化算法优化XGBoost分类模型(XGBClassifier算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 PSO是粒子群优化算法(Particle Swarm Optimization)的英文缩写,是一…

iconfont渐变色实现方案总结

iconfont是前端技术中重要的一环——它能够方便地沉淀大量设计资产,并通过组件化的方式高效地在各种场景复用。而单纯应用iconfont,只能支持到纯色渲染图标,越来越难以满足高品质视觉效果的诉求。本文结合实际工作业务场景,调研了…

大数据面试题:Kafka的消费者和消费者组有什么区别?为什么需要消费者组?

面试题来源: 《大数据面试题 V4.0》 大数据面试题V3.0,523道题,679页,46w字 可回答:1)说下Kafka的消费者和消费者组,以及它们的作用是什么? 参考答案: 1、什么是消费…

C++ 测试框架 GoogleTest 初学者入门篇

开发者虽然主要负责工程里的开发任务,但是每个开发完毕的功能都是需要开发者自测通过的,所以经常会听到开发者提起单元测试的话题。那么今天我就带大伙一起来看看大名鼎鼎的谷歌 C 测试框架 GoogleTest. 简单介绍 来看看谷歌官方是怎么介绍这个框架的&am…

数据结构(王卓版)——线性表

数据的存储结构之线性表 1、线性表的定义和特点 线性表的顺序存储结构 总结:

免费音频转文字的软件有哪些?分享这几个给大家!

在今天的数字化时代,音频转文字变得越来越常见和重要。无论是为了记录会议内容、制作字幕,还是为了更方便地查找和检索音频信息,免费的音频转文字软件可以帮助你实现这一目标。以下是几个方法,可以帮助你将音频转换为文字。 方法…

23年进阶高级测试,性能测试超细详解(附面试题+答案)一篇打通

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 用户视角&#xf…

从2050回顾2020,职业规划与技术路径(节选)补充

很多朋友问了其中一段: 文明的提升,源于机械/能源/信息/智能四大模式的转变。机械将自然力或人力更高效利用,如风车,能源以蒸汽机为代表开启工业革命,信息启动了互联网时代,智能将实现虚拟社区的主导模式。…

CS 144 Lab One

CS 144 Lab One 实验结构环境配置如何调试StreamReassembler 实现 对应课程视频: 【计算机网络】 斯坦福大学CS144课程 Lab 1 对应的PDF: Lab Checkpoint 1: stitching substrings into a byte stream 实验结构 这幅图完整的说明了CS144 这门实验的结构: 其中&am…