使用python看NLP中Bag of Words(BOW)和TF |
您所在的位置:网站首页 › Python中count › 使用python看NLP中Bag of Words(BOW)和TF |
这两个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 |