问题标签 [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.
java - 在 GAE 上实施“逆文档频率”的建议?
我需要在 Google 应用引擎中实现“逆文档频率”。我正在寻找提高效率的建议。现在我把基本的例程当作,
解析网页时,我将每一对保存到数据存储区,例如,
稍后在计算 IDF 时,我从数据存储中获取短语的出现,例如,
但是速度并不令人满意,并且经常导致 30 秒超时。在这种情况下,我有额外的挑战,
- 多语言输入(网页)。因此,这些短语也使用不同的语言,这使得缓存变得困难。
- 解析网页和排名短语也需要很多时间。整个过程就像 charset_detect -> language_detect -> 根据不同语言解析 -> 排名。
在 GAE 中始终启用。
我期待着任何建议!提前致谢!
information-retrieval - 余弦相似度和 tf-idf
我对以下关于TF-IDF和Cosine Similarity的评论感到困惑。
我正在阅读这两者,然后在余弦相似度下的 wiki 上阅读我发现这句话“在信息检索的情况下,两个文档的余弦相似度范围为 0 到 1,因为术语频率(tf-idf 权重)不能负。两个词频向量之间的角度不能大于 90。
现在我想知道....它们不是两种不同的东西吗?
tf-idf 是否已经在余弦相似度内?如果是,那到底是什么——我只能看到内点积和欧几里得长度。
我认为 tf-idf 是在对文本运行余弦相似度之前可以做的事情。我错过了什么?
bayesian - 如何使用朴素贝叶斯实现 TF_IDF 特征加权
我正在尝试实现用于情感分析的朴素贝叶斯分类器。我计划使用 TF-IDF 加权度量。我现在只是有点卡住了。NB 一般使用词(特征)频率来寻找最大似然。那么如何在朴素贝叶斯中引入 TF-IDF 加权度量呢?
cluster-analysis - 返回向量空间模型中表示的相似文档的算法
我有一个包含大约 30,000 个文档的 tf-idf 向量的数据库。
我想为给定的文档返回一组类似的文档 - 大约 4 个左右。
我考虑过对数据(具有余弦相似度)实施 K-Means(聚类算法),但由于存在许多不确定性,我不知道它是否是最佳选择:我不确定在我的初始聚类中放入什么,我不知道要创建多少个集群,我担心集群会太不平衡,我不确定结果质量会不会好,等等。
经验丰富的用户的任何建议和帮助将不胜感激。
谢谢,
凯蒂
perl - Perl 中的 N-Gram、tf-idf 和余弦相似度
我正在尝试在每行的多个单词中进行一些模式“挖掘”。我已经使用 perl 中的 Text::Ngrams 模块完成了 N-gram 分析,它给出了每个单词的频率。然而,我对本文中的发现模式感到非常困惑。
我认为 tf-idf 也发现了频率,但这与我所做的 Ngram 分析有什么不同,以及相似性测量也有什么帮助。
请问是否有任何 perl 模块或代码片段可以让我理解其中的一些概念。
请我来自物理背景,但必须做一些模式识别,所以我对其中一些有点陌生,对此主题的良好参考将不胜感激。
tf-idf - 如何使用 TF-IDF 权重对相关性进行排名?
我有一组关键术语,并计算了 TF-IDF 权重以及每个术语的标签频率和术语计数,并保存在数据库中。
给定一个单数项,如何使用这些 DB 值生成一组相关项?
我已经阅读了 TF-IDF 上的 Wikipedia 页面,并使用了许多与余弦相似度、n-gram 算法等有关的 Google 搜索结果。我的强项不是线性代数、IR 或微积分,所以我很难理解这些文件。
我想知道 TF-IDF 权重与相关性的关系。有没有办法对这些值进行排名?我是否需要根据预定义术语的权重对它们进行排名?
既然我有了这些号码,我该如何使用它们?
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 更快?字典的迭代速度很慢吗?
lucene - Lucene中查询和文档之间的余弦相似度
我想获得长查询和集合中文档之间的余弦相似度。我正在使用 Lucence 来索引集合并提交查询以检索文档。
但是,对于某些查询,我收到以下错误。
我复制了查询中的一些术语以增加它们的权重。但似乎 lucene 只是进行简单的布尔检索,而不是使用 tf-idf 计算文档和查询的余弦相似度。
有人可以证实这一点吗?
java - WEKA - 从 Java 中分类新数据 - IDF 转换
我们正在尝试从 Java 程序内部实现 WEKA 分类器。到目前为止一切都很好,但是当从 Weka GUI 中的训练集构建分类器时,我们使用 StringToWordVector IDF 转换来帮助提高分类准确性。
在将实例传递给分类器之前,如何从 Java 中的新实例计算 IDF 转换以为新实例中的每个标记值设置?
基本代码如下所示:
那么我该如何进行编码,以便将正确的值放入我想要分类的新实例中?
为了清楚起见,inst.setValue(unlabeled.attribute(tmp), 1.0);
需要将行更改1.0
为 IDF 转换后的数字...