其他分享
首页 > 其他分享> > 自然语言处理----词袋模型

自然语言处理----词袋模型

作者:互联网

词袋模型是一种表征文本数据的方法,可以从文本数据中提取出特征并用向量表示.词袋模型主要包括两件事

词袋模型不考虑单词在文本中出现的顺序,只考虑单词是否出现.

具体以"双城记"开头为例

  1. 收集数据
It was the best of times,
it was the worst of times,
it was the age of wisdom,
it was the age of foolishness,
  1. 构建词汇表
    对于上面四个句子,我们要用词袋模型把它转化为向量表示,这四个句子形成的词表(不去停用词)为:
“it”
“was”
“the”
“best”
“of”
“times”
“worst”
“age”
“wisdom”
“foolishness”
  1. 创建向量
    这一步的目的是把文本数据转化成向量表示. 我们构建的字典中一共有10个单词,因此我们可以用一个固定长度为10的向量表示一句话,向量的每一个位置表达了文本中出现的某一个词, 向量每个位置的值有多种选择.最简单的是使用binary特征, 即如果该词在句子中出现了设为1,不出现就为0.这也就是one-hot编码.以第一句为例,该句的bianry向量为
[1, 1, 1, 1, 1, 1, 0, 0, 0, 0]

剩下三句的编码为

"it was the worst of times" = [1, 1, 1, 0, 1, 1, 1, 0, 0, 0]
"it was the age of wisdom" = [1, 1, 1, 0, 1, 0, 0, 1, 1, 0]
"it was the age of foolishness" = [1, 1, 1, 0, 1, 0, 0, 1, 0, 1]

管理词典

假设我们有非常大的语料库,比如说几千本书,那么此时的构建的向量长度可能长达数万,而且对于每本书而言可能只包含词典中很少的词,这样对每本书构建的向量中就会含有大量的0.这样的向量成为稀疏向量或者说稀疏表示.因此我们要考虑如何减小词典的大小. 最简单的我们可以做一些文本清洗

一个N-gram是一个N字符的单词序列:一个2-gram(通常称为bigram)是一个两个单词的单词序列,例如“ please turn”,“ turn your”或“ our your work”, 3-gram(通常称为trigram)是由三个词组成的单词序列,例如““please turn your”, 或者 “turn your homework”.
例如我们给的例子中第一句的bigram就是

“it was”
“was the”
“the best”
“best of”
“of times”

由三个单词序列构成的词典称为3-gram,更一般的由n个单词序列构成的词典称为n-gram

对每个单词打分

构建完词典后,我们需要对出现在文档中的词进行打分,在刚刚给出的例子中我们使用的是bianry的方法,出现为1, 不出现为0. 此外我们还可以用单词在文档中出现的次数或者词频, TF-IDF对其打分.
词频,即一个单词或者词组在一篇文档中出现的频率. 如果某个单词或词组在文章中出现次数很多,但是它包含的信息并不多,这时候只用词频度量单词或词组就会产生偏差. 一种方法就是利用该单词或词组在所有文档中出现的次数来对词频进行缩放. 这就是TF-IDF.

TF-IDF

TF:是对词在当前文档中频率, 其有多种取值形式,最简单的是直接使用单词出现的次数,也可以使用

IDF:是逆文档频率,是一个词语普遍重要性的度量,它的大小与一个词的常见程度成反比

N是语料库中所有文档的数目.分母部分是包含单词t的文档的数目. 一个单词越频繁的出现在不同文档中,逆文档频率就越低

最后

字词的重要性随着它在文件中出现的次数成正比增加 ,但同时会 随着它在语料库中出现的频率成反比下降 。如果某个词比较少见,但是它在这篇文章中多次出现,那么它很可能就反映了这篇文章的特性,正是我们所需要的关键词。

词袋模型的局限

标签:出现,模型,词袋,单词,文档,自然语言,was,词典,向量
来源: https://www.cnblogs.com/laozhanghahaha/p/13198011.html