问题标签 [tf-idf]

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 投票
2 回答
502 浏览

java - 在 GAE 上实施“逆文档频率”的建议?

我需要在 Google 应用引擎中实现“逆文档频率”。我正在寻找提高效率的建议。现在我把基本的例程当作,

解析网页时,我将每一对保存到数据存储区,例如,

稍后在计算 IDF 时,我从数据存储中获取短语的出现,例如,

但是速度并不令人满意,并且经常导致 30 秒超时。在这种情况下,我有额外的挑战,

- 多语言输入(网页)。因此,这些短语也使用不同的语言,这使得缓存变得困难。

- 解析网页和排名短语也需要很多时间。整个过程就像 charset_detect -> language_detect -> 根据不同语言解析 -> 排名。

在 GAE 中始终启用。

我期待着任何建议!提前致谢!

0 投票
6 回答
60792 浏览

information-retrieval - 余弦相似度和 tf-idf

我对以下关于TF-IDFCosine Similarity的评论感到困惑。

我正在阅读这两者,然后在余弦相似度下的 wiki 上阅读我发现这句话“在信息检索的情况下,两个文档的余弦相似度范围为 0 到 1,因为术语频率(tf-idf 权重)不能负。两个词频向量之间的角度不能大于 90。

现在我想知道....它们不是两种不同的东西吗?

tf-idf 是否已经在余弦相似度内?如果是,那到底是什么——我只能看到内点积和欧几里得长度。

我认为 tf-idf 是在对文本运行余弦相似度之前可以做的事情。我错过了什么?

0 投票
1 回答
2683 浏览

bayesian - 如何使用朴素贝叶斯实现 TF_IDF 特征加权

我正在尝试实现用于情感分析的朴素贝叶斯分类器。我计划使用 TF-IDF 加权度量。我现在只是有点卡住了。NB 一般使用词(特征)频率来寻找最大似然。那么如何在朴素贝叶斯中引入 TF-IDF 加权度量呢?

0 投票
2 回答
1080 浏览

cluster-analysis - 返回向量空间模型中表示的相似文档的算法

我有一个包含大约 30,000 个文档的 tf-idf 向量的数据库。

我想为给定的文档返回一组类似的文档 - 大约 4 个左右。

我考虑过对数据(具有余弦相似度)实施 K-Means(聚类算法),但由于存在许多不确定性,我不知道它是否是最佳选择:我不确定在我的初始聚类中放入什么,我不知道要创建多少个集群,我担心集群会太不平衡,我不确定结果质量会不会好,等等。

经验丰富的用户的任何建议和帮助将不胜感激。

谢谢,

凯蒂

0 投票
1 回答
1816 浏览

perl - Perl 中的 N-Gram、tf-idf 和余弦相似度

我正在尝试在每行的多个单词中进行一些模式“挖掘”。我已经使用 perl 中的 Text::Ngrams 模块完成了 N-gram 分析,它给出了每个单词的频率。然而,我对本文中的发现模式感到非常困惑。

我认为 tf-idf 也发现了频率,但这与我所做的 Ngram 分析有什么不同,以及相似性测量也有什么帮助。

请问是否有任何 perl 模块或代码片段可以让我理解其中的一些概念。

请我来自物理背景,但必须做一些模式识别,所以我对其中一些有点陌生,对此主题的良好参考将不胜感激。

0 投票
0 回答
1330 浏览

tf-idf - 如何使用 TF-IDF 权重对相关性进行排名?

我有一组关键术语,并计算了 TF-IDF 权重以及每个术语的标签频率和术语计数,并保存在数据库中。

给定一个单数项,如何使用这些 DB 值生成一组相关项?

我已经阅读了 TF-IDF 上的 Wikipedia 页面,并使用了许多与余弦相似度、n-gram 算法等有关的 Google 搜索结果。我的强项不是线性代数、IR 或微积分,所以我很难理解这些文件。

我想知道 TF-IDF 权重与相关性的关系。有没有办法对这些值进行排名?我是否需要根据预定义术语的权重对它们进行排名?

既然我有了这些号码,我该如何使用它们?

0 投票
2 回答
5074 浏览

python - Python和tfidf算法,让它更快?

我正在使用 Python 在 Web 应用程序中实现tf-idf算法,但是它运行得非常慢。我基本上做的是:

1)创建2个字典:

  • 第一个字典:键(文档ID),值(文档中所有找到的单词(包括重复)的列表)
  • 第二本词典;键(文档 ID),值(包含文档唯一单词的集合)

现在,有一个用户请求获取文档 d 的 tfidf 结果。我要做的是:

2) 遍历文档 d 的第二个字典的唯一词,并且对于每个唯一词 w 得到:

2.1) tf 分数(w 在 d 中出现多少次:循环遍历文档的第一个字典的单词列表)

2.2)df分数(有多少文档包含w:循环所有文档的单词集(第二个字典)并检查是否包含w)。我正在使用集合,因为与列表相比,检查集合是否包含单词似乎更快。

步骤 2.2 非常慢。例如,有 1000 个文档,对于具有 2313 个唯一词的文档,输出结果大约需要 5 分钟。

有没有其他方法可以使步骤 2.2 更快?字典的迭代速度很慢吗?

0 投票
1 回答
2005 浏览

lucene - Lucene中查询和文档之间的余弦相似度

我想获得长查询和集合中文档之间的余弦相似度。我正在使用 Lucence 来索引集合并提交查询以检索文档。

但是,对于某些查询,我收到以下错误。

我复制了查询中的一些术语以增加它们的权重。但似乎 lucene 只是进行简单的布尔检索,而不是使用 tf-idf 计算文档和查询的余弦相似度。

有人可以证实这一点吗?

0 投票
1 回答
1638 浏览

java - WEKA - 从 Java 中分类新数据 - IDF 转换

我们正在尝试从 Java 程序内部实现 WEKA 分类器。到目前为止一切都很好,但是当从 Weka GUI 中的训练集构建分类器时,我们使用 StringToWordVector IDF 转换来帮助提高分类准确性。

在将实例传递给分类器之前,如何从 Java 中的新实例计算 IDF 转换以为新实例中的每个标记值设置?

基本代码如下所示:

那么我该如何进行编码,以便将正确的值放入我想要分类的新实例中?

为了清楚起见,inst.setValue(unlabeled.attribute(tmp), 1.0);需要将行更改1.0为 IDF 转换后的数字...

0 投票
1 回答
500 浏览

text - 找到相对于所有文档的最上面的词

我有大约 100.000 多个文本文档。我想找到一种方法来回答这个(有点模棱两可)的问题:

对于给定的文档子集,与完整文档集相关的n 个最常见的词是什么?

我想介绍趋势,例如。显示类似“这些是给定日期范围内特别热门的主题”的词云。(是的,我知道这是一个过度简化:单词!=主题等)

似乎我可以计算出所有文档中所有单词的tf-idf值,然后进行一些数字运算,但我不想在这里重新发明任何轮子。

我计划可能使用LuceneSolr来索引文档。他们会帮我解决这个问题吗?怎么做?或者您会推荐一些其他工具吗?