【机器学习300问】58、什么是词袋模型和N-gram模型?

        词袋模型(Bag of Words, BoW)和N-gram模型主要用于早期的自然语言处理任务,上文中我介绍了机器是如何读懂文本的四个阶段,这篇文章带大家来看看在不同阶段中会用到的两个模型——词袋模型和N-gram模型。如果没有读过我之前的文章,可以先去看看哦!

【机器学习300问】57、机器是如何读得懂文本数据的呢?icon-default.png?t=N7T8http://t.csdnimg.cn/QJPqB

一、词袋模型

        最基本的文本表示模型就是词袋模型,这个模型把一段文本看作一个装满了单词的袋子,袋子中不考虑单词出现的顺序和语法结构,只关注每个单词出现的频率(或是否出现)。

(1)具体步骤

        具体来说,就是将整段文本以单词为最小单位切分开,一整篇文章可以表示成一个长向量,向量中的每个维度代表一个单词,而该维度的值则反映了这个词在原文中的重要程度(也就是词频)。步骤如下:

  1. 分词(Tokenization):将文本分割成单个的单词或术语。
  2. 词频统计(Term Frequency):计算每个词在文本中出现的次数,形成词频直方图。
  3. 特征选择与加权:可以选择仅保留最常见的词汇(停用词过滤),并对某些重要性较高的词给予更高的权重,常见的加权方法有TF-IDF(Term Frequency-Inverse Document Frequency)。
  4. 向量化(Vectorization):将文本转化为向量形式,每个维度对应一个词汇,值代表该词汇在文档中的统计值(例如词频、TF-IDF值等)。

【注】术语(Terminology)是在某一特定学科领域或专业背景下使用的、具有特殊意义的词汇或短语。比如在医学领域,“白细胞”是对一类特定血细胞的术语,在法律领域,“合同法”是一个法律术语,在数学领域,“正弦”和“余弦”是数学术语。

(2)TF-IDF值

        TF-IDF值是用来计算这个词在原文中的重要程度的(权重)。TF-IDF公式由两部分组成,公式如下:

① 词频(TF)

 TF(t,d) = 特定词条t在文档d中出现的次数 / 文档d中词条总数

② 逆文档频率(IDF)

IDF(t, D) = \log \left(\frac{n}{df(t)+1}\right)

        其中df(t)是包含单词t的文章总数,n是文章总数。加1是为了避免分母为0,即避免在所有文档中都没有出现过的词带来的问题。

③ TF-IDF权重

TF\text{-}IDF(t, d, D) = TF(t, d) \times IDF(t, D)

        直观的解释是,如果一个单词在非常多的文章中都出现过,那么它可能是一个比较通用的词汇,对于区分某篇文章特殊语义的贡献较小,因此对权重做一定惩罚。在计算时,每个词条的TF-IDF值都会被计算出来,然后可以用于表示文档d在词条t上的重要性。越高的TF-IDF值表示词条在文档中越重要。

二、N-gram模型

(1)词袋模型的局限性 

        将文章仅仅划分成单词级别有时存在局限性,比如“look up”代表查阅的意思,但如果拆成2个独立的单词就会丧失原有的含义。词袋模型的局限性:忽视单词之间的语法关系和语义搭配、忽视上下文信息、丢失情感色彩和语气等等问题。

        于是聪明的人们想到了可以将连续的n个单词(n<N)组成词组(N-gram)也当做一个独立的特征放到向量中去,构成N-gram模型。另外同一个词可能会有词性变化,却拥有相似的含义。在实际应用中,一般会对单词进行词干抽取处理,将不同词性的单词统一成同一个词干的形式。

(2)N-gram模型的定义

        在一个文本序列中,一个N-gram是由连续N个项组成的序列。如果N=1,那么就是Unigram(一元模型),包含单独的词或字符;如果N=2,就是Bigram(二元模型),包含相邻的两个词或字符对;N=3时,是Trigram(三元模型),以此类推。

        N-gram模型通过计算词语或字符序列在给定上下文中的联合概率来捕捉文本数据中的语言规律。N-gram模型的核心概念是依据马尔可夫假设,即一个词出现的概率仅依赖于它前面有限个数(N)的词。

相关推荐

  1. NLP-模型

    2024-04-04 17:36:01       31 阅读
  2. NLP--模型

    2024-04-04 17:36:01       4 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-04 17:36:01       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-04 17:36:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-04 17:36:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-04 17:36:01       18 阅读

热门阅读

  1. 在Go语言中如何调试

    2024-04-04 17:36:01       17 阅读
  2. C语言——字符函数和字符串函数(下)

    2024-04-04 17:36:01       18 阅读
  3. springboot实现七牛云的文件上传下载

    2024-04-04 17:36:01       16 阅读
  4. Linux常见命令简介

    2024-04-04 17:36:01       14 阅读
  5. 探索Django REST框架构建强大的API

    2024-04-04 17:36:01       17 阅读
  6. redis-乐观锁Watch使用方法

    2024-04-04 17:36:01       18 阅读