问题标签 [tfidfvectorizer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1227 浏览

python-3.x - 了解 TF-IDF 分数

我试图了解当我们对文本文档 usign 进行矢量化时如何计算 tf 和 idf 分数TfidfVectorizer

我正在理解 tf-idf 如何以两种方式排名,我在下面写。

  1. tf = 根据在此文档中重复的频率对单个单词进行排名,idf = 根据在 scikit 中内置的“类似数据库”的集合中重复的频率对相同的单词进行排名,学习几乎所有可能的单词都被收集到了。在这里,我假设这个内置数据库是语料库。
  2. tf = 对单个作品在当前正在被 tfidfvectorize 读取的文档的行中重复的频率进行排名,idf = 根据它在被矢量化的整个文档中重复的次数进行排名。

有人可以解释一下我的理解是否正确吗?如果不是,请纠正我理解的错误。

0 投票
1 回答
1012 浏览

mysql - 使用 MySQL 进行 TF/IDF 测量

我的 mysql weightallofwordsintopic 表中有以下数据。

Topic Name Word WordCount 20160401-20160405 ahlak 954 20160401-20160405 çocuk 825 20160401-20160405 kadın 764 20160401-20160405 tecavüz 710 20160401-20160405 güzel 701 20160401-20160405 hayat 670 20160401-20160405 bakan 661 20160401-20160405 zaman 585 20160401-20160405 adam 494 20160401-20160405 çalış 453 20160406-20160407 kandil 4927 20160406-20160407 mübarek 2906 20160406-20160407 hayır 2342 20160406-20160407 çocuk 1893 20160406-20160407 güzel 1835 20160406-20160407 regaip 1574 20160406-20160407 allah 1536 20160406-20160407 tecavüz 1457 20160406-20160407 kadın 1442 20160406-20160407 hayat 1436 20160408-20160409 güzel 2385 20160408-20160409 hayat 2187 20160408-20160409 hayır 1972 20160408-20160409 zaman 1902 20160408-20160409 cuma 1589 20160408-20160409 allah 1550 20160408-20160409 gece 1233 20160408-20160409 adam 1198 20160408-20160409 saat 1153 20160408-20160409 dünya 1130 20160410-20160411 stat 1993 20160410-20160411 güzel 1854 20160410-20160411 hayat 1579 20160410-20160411 şampiyon 1464 20160410-20160411 taraftar 1426 20160410-20160411 zaman 1380 20160410-20160411 adam 1336 20160410-20160411 çalış 1297 20160410-20160411 saat 1283 20160410-20160411 başkan 1112

我想测量每个主题中每个单词的 tf/idf 频率。假设一个主题与一个文档同名,所以我需要分别测量所有单词的 tf/idf 频率。我需要对此进行 mysql 查询。WordCount 是该主题中该单词的出现次数。我的桌子太大了,我只是写了一个示例来解释我的问题。我需要一个查询来完成这项工作。非常感谢你。

0 投票
1 回答
120 浏览

python - 再次加载时存储的 Tfidf-Vectorizer ValueError

我为 PassiveAgressive 分类器训练了一个 Tfidf-Vectorizer 并对其进行了测试,一切正常。然后我保存了拟合的矢量化器和训练好的分类器供以后使用。当我再次加载矢量化器时,我在其上转换了一个新数据集(因为我想用分类器对看不见的数据进行分类)并尝试预测新数据集。当我运行代码时,我得到:

这是我用来获取矢量化器和分类器的代码:

这就是我再次打开并使用它的方式:

我还再次检查了我训练分类器的文件并查看了词汇的长度并得到了

所以还有一个数字......我真的不知道这里出了什么问题。我处理了训练/测试数据集的文本以及在以完全相同的方式再次加载所有内容后需要分类的文本,所以我认为这与我提供给矢量化器的输入无关。当我在应用程序中同时使用这两种方法时,我无法再次安装矢量化器或再次训练分类器 - 所以它需要以某种方式与保存的版本一起使用。

0 投票
0 回答
1321 浏览

python - GridSearchCV 没有选择最优结果

在我的 sklearn 分类模型中,当我手动设置 TfidfVectorizer 的“ngram_range=(4,4)”参数时,我得到 0.58 作为 f1_macro 的结果 .. 例如对于 unigram (1,1) 结果是 0.49 ..

问题是,当我使用 GridSearchCv 方法选择最佳参数时,它没有给我最佳参数,而是返回参数集中第一个元素的结果,请看一下我的代码以使其更清楚:

在这个例子中,我得到了以下结果:

因此,它选择参数集的第一个元素 (1,1) 而根据 f1_score 的最佳元素是 (4,4) !

有什么问题,我错过了什么吗?

已编辑:完整的源代码与数据集一起添加:数据集

0 投票
0 回答
225 浏览

scikit-learn - 如何使用 scikit-learn 在 tfidfvectorizer 中添加同义词识别?

我正在使用 sklearn 的 tfidfvectorizer。我不想为对象添加同义词,例如计算相同的术语查找“house”和“houses”。我该怎么做?

0 投票
2 回答
80 浏览

python - Python中的CountVectorizer

我正在解决一个问题,我必须预测来自公司的发送电子邮件是否被打开,如果它被打开,我必须预测收件人是否点击了给定的链接。

我有一个具有以下特征的数据集:

  • 电子邮件内的总链接
  • 电子邮件中的内部链接总数
  • 电子邮件中的图像数量
  • 电子邮件中的部分数量
  • 电子邮件正文
  • 电子邮件主题

对于电子邮件正文和主题,我可以使用CountVectorizer,但如何将我的其他功能包含到由所述 CountVectorizer 创建的稀疏矩阵中。

0 投票
1 回答
285 浏览

tf-idf - tf-idf 到用户偏好向量

我在这里相当新,我提前感谢所有愿意花时间阅读这个问题的人。

我们正在使用 tf-idf 构建一个推荐系统来生成规范化的文档向量。基于用户与文档的交互(喜欢、不喜欢、花时间等等),我们希望生成与文档本身结构相同的用户配置文件。

虽然有很多关于“产品”方面的推荐系统和基于内容的过滤的文献,但关于用户偏好本身的结构却很少。我并不是在问一个“解决方案”,而是为了请我们指出正确的方向(或者简单地说,一个方向)。我们可能会自己解决一些问题,但如果已经有相当成熟的解决方案,则无需重新发明轮子。

非常感谢大家!丹尼尔

0 投票
0 回答
3087 浏览

python - Sklearn Tfidf Vectorizer norm=None norm-l2

嗨,我正在尝试了解 scikit-learn 如何计算矩阵中的 TFIDF 分数:文档 1,功能 6,“wine”:

我正在使用一个非常相似的问题的答案来为自己计算: How are TF-IDF computed by the scikit-learn TfidfVectorizer然而在他们的 TFIDFVectorizer 中,norm=None。

当我使用默认设置 norm=l2 时,这与 norm=None 有何不同,我如何为自己计算?

0 投票
1 回答
1235 浏览

python - 使用 TfidfVectorizer 理解字符级特征提取

我有一组样本,每个样本有 3 个单词(名字、中间名和姓氏)

试图解决神经网络输入的问题,我想提取名称的字符级别 tf(例如 james --> ja,am,me,es)并将其保存为数组以将其提供给神经网络分类。

使用TfIdfVectorizer,我试图从语料库中提取特定单词的 tf

当我检查输出时,我得到了类似的东西

它说形状是 (1, 55),我不明白它显示的是什么向量。(0,0) ...(0,28) 的值是否有任何意义。对于“chamak”这个词,我期望它应该显示“ch”、“ha”、“am”、“ma”、“ak”的 tf 值,但这些值是 55 而不是 5。

当我使用ngram_range=(1,3)输出是

当我将范围增加到 3 而不是 3(如 cha、ham、amp、..)时,它应该会减小,但为什么会增加。

我对这个概念的理解出错了,但我做错了吗?我可以使用向量输入到神经网络吗?对于我想要的输出,用于 ​​ch、am、ma、ap、pa、ak(6 个向量)的 tf 是我打印出的向量是否正确?

0 投票
3 回答
1268 浏览

python - Python:使用 astype('U') 将文本数据转换为 Unicode 时如何避免 MemoryError

我最近在处理一个安静的大数据集,我打算使用 Tfidfvectorizer 来分析它。

以前有关于实现 Tfidfvectorizer 时的 MemoryError 的帖子,但是,在我的情况下,MemoryError 发生在我将数据输入 Tfidfvectorizer 之前。这是我的代码。

  1. 读取数据

    /li>
  2. 处理数据

    /li>

这里的很多帖子都谈到了拟合Tfidfvectorizer时的MemoryError,但我发现当我将数据转换为unicode时,即在此步骤中:data.description.values.astype('U'),就会发生MemoryError。

因此,关于如何在 Tfidfvectorizer 中调整参数的策略在我的情况下没有用。

有人遇到过这个问题并且知道如何解决吗?非常感谢。