使用python看NLP中Bag of Words(BOW)和TF

您所在的位置:网站首页 Python中count 使用python看NLP中Bag of Words(BOW)和TF

使用python看NLP中Bag of Words(BOW)和TF

#使用python看NLP中Bag of Words(BOW)和TF| 来源: 网络整理| 查看: 265

这两个topics可以用作单词嵌入,其中单词被转换为向量或数字,即稀疏矩阵。稀疏矩阵或稀疏数组是指包含更多个零和更少个一的矩阵,即包含更多个零。

在本文中,我们将研究自然语言处理的两个概念,其中高维的单词被转换为低维的向量或数字,以便于机器学习。

Bag of Words:将单词转换为没有语义信息的数字。

TF-IDF:它还将单词转换为带有一些加权信息的数字或向量。

当我们使用机器学习算法时,它们需要输入一种特定格式的数字,而处理文本是有一点问题的,将文本转换为数字保存使用。

Bag of Words (BOW) 或计数矢量器

它用于从单词/短语中以向量或数字的形式检索信息。这在一定程度上解决了自然语言处理中的分类问题。

bag of words的工作功能是不考虑语义信息,不知道词在词相或文档中的哪个位置,统计词在词相中的出现次数。所以掌握概念并使用它非常容易。

例子

第一句话:You are very strong。

通过使用 bag of words把它转换为向量,如下所示:

第二句话:You are very brave。

通过使用 bag of words把它转换为向量,如下所示:

制作Bag of Word矩阵

Bag of words的代码示例

我们使用bag of words即sklearn库中Count Vectorizer的一个类,从句子中提取特征。

它用于计算单词在句子中出现的频率。

在bag of words中,数字被赋予每个词并赋予所有词重要性。为了克服这个问题,我们使用了TF-IDF模型。

Term frequency and inverse document frequency (TF-IDF)

在这个模型中,一些语义信息是通过重视不常见的词而不是常见的词来收集的。

term IDF 意味着为文档中的稀有词分配更高的权重。

例子:

第一句:You are very strong

通过使用 bag of words它转换为权重,如下所示:

根据句子中词出现的总次数为单词分配权重。

第二句:You are very brave

通过使用 bag of words它转换为权重,如下所示:

制作Bag of Word矩阵

在上面的例子中,不常见的词有更多的权重,常见的词有更少的权重。

TF-IDF的术语

Document frequency:文档频率表示一个词在整个句子集合中出现的频率,信息是全局的,不特定于任何句子。

DF = 包含给定术语的文档数(d)/语料库中的文档总数(D)

例如:如果我们取上面的两个句子,强词出现在一个句子中,两个是语料库中的文档总数。

DF = ½ = 0.5

但是,D 大于 d,在这种情况下,log(d/D) 给出负值。为了克服这个负值,研究人员反转了对数表达式中的比率。所以,log(D/d) 被称为逆文档频率。

在 IDF 中使用 log 来抑制比率的影响(压缩值的比例,以便可以轻松比较大数量和小数量)。

使用对数函数是因为评分函数是可加的并且术语是独立的。

TF中有很多权重方案如下图所示:

二进制、原始计数、词频、对数归一化等。

IDF中有很多权重方案如下图所示:

一元、inverse document frequency (IDF)、IDF-smooth、IDF-Max、Probabilistic-IDF

两种类型的 TF-IDF 方法是 TfidfTransformer 和 TfidfVectorizer。

1、TfidfTransformer: 他需要bag of words作为输入

2、TfidfVectorizer

它以文档/语料库作为输入

它在 sklearn 函数中有更多选项,如标记化、n-gram、停用词等。

TF-IDF的python示例

使用TF_IDF转换器方法

使用TF_IDF Vectorizer方法

文章来源:

https://pub.towardsai.net/difference-between-bag-of-words-bow-and-tf-idf-in-nlp-with-python-97d3e75a9fd



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3