自然语言处理----词袋模型
2021-05-03 10:29
标签:缩放 忽略 例子 png 注意 The 区分 正是 比较 词袋模型是一种表征文本数据的方法,可以从文本数据中提取出特征并用向量表示.词袋模型主要包括两件事 词袋模型不考虑单词在文本中出现的顺序,只考虑单词是否出现. 具体以"双城记"开头为例 剩下三句的编码为 假设我们有非常大的语料库,比如说几千本书,那么此时的构建的向量长度可能长达数万,而且对于每本书而言可能只包含词典中很少的词,这样对每本书构建的向量中就会含有大量的0.这样的向量成为稀疏向量或者说稀疏表示.因此我们要考虑如何减小词典的大小. 最简单的我们可以做一些文本清洗 一个N-gram是一个N字符的单词序列:一个2-gram(通常称为bigram)是一个两个单词的单词序列,例如“ please turn”,“ turn your”或“ our your work”, 3-gram(通常称为trigram)是由三个词组成的单词序列,例如““please turn your”, 或者 “turn your homework”. 由三个单词序列构成的词典称为3-gram,更一般的由n个单词序列构成的词典称为n-gram 构建完词典后,我们需要对出现在文档中的词进行打分,在刚刚给出的例子中我们使用的是bianry的方法,出现为1, 不出现为0. 此外我们还可以用单词在文档中出现的次数或者词频, TF-IDF对其打分. TF:是对词在当前文档中频率, 其有多种取值形式,最简单的是直接使用单词出现的次数,也可以使用 IDF:是逆文档频率,是一个词语普遍重要性的度量,它的大小与一个词的常见程度成反比 最后 字词的重要性随着它在文件中出现的次数成正比增加 ,但同时会 随着它在语料库中出现的频率成反比下降 。如果某个词比较少见,但是它在这篇文章中多次出现,那么它很可能就反映了这篇文章的特性,正是我们所需要的关键词。 自然语言处理----词袋模型 标签:缩放 忽略 例子 png 注意 The 区分 正是 比较 原文地址:https://www.cnblogs.com/laozhanghahaha/p/13198011.html
It was the best of times,
it was the worst of times,
it was the age of wisdom,
it was the age of foolishness,
对于上面四个句子,我们要用词袋模型把它转化为向量表示,这四个句子形成的词表(不去停用词)为:“it”
“was”
“the”
“best”
“of”
“times”
“worst”
“age”
“wisdom”
“foolishness”
这一步的目的是把文本数据转化成向量表示. 我们构建的字典中一共有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]
管理词典
更高级的方法是构建包含词组的词典,这既能减少词典的大小也能让词袋模型从文本中学习到一些东西.在该方法中每个单词或者说字符成为gram, 创建一个包含两个单词对的词典称为bigram,注意只有出现在语料库中的bigram才能添加到词典里
例如我们给的例子中第一句的bigram就是“it was”
“was the”
“the best”
“best of”
“of times”
对每个单词打分
词频,即一个单词或者词组在一篇文档中出现的频率. 如果某个单词或词组在文章中出现次数很多,但是它包含的信息并不多,这时候只用词频度量单词或词组就会产生偏差. 一种方法就是利用该单词或词组在所有文档中出现的次数来对词频进行缩放. 这就是TF-IDF.TF-IDF
f_(t,d)是单词出现的次数
N是语料库中所有文档的数目.分母部分是包含单词t的文档的数目. 一个单词越频繁的出现在不同文档中,逆文档频率就越低词袋模型的局限