问题标签 [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 - Java API : downloading and calculating tf-idf for a given web page
I am new to IR techniques.
I looking for a Java based API or tool that does the following.
- Download the given set of URLs
- Extract the tokens
- Remove the stop words
- Perform Stemming
- Create Inverted Index
- Calculate the TF-IDF
Kindly let me know how can Lucene be helpful to me.
Regards Yuvi
java - 在 Lucene 中,我可以搜索一个索引但使用另一个索引的 IDF 吗?
我正在构建一个系统,我只想显示过去几天索引的结果。此外,如果我只想返回几天(数千个文档)的结果,我不想维护一个包含一百万个文档的巨大索引。
另一方面,我的系统在很大程度上依赖于存储在索引中的文档中出现的术语具有真实的分布(因此:真实的 IDF)。
也就是说,我想使用一个小索引来返回结果,但我想使用来自更大索引(甚至外部源)的 IDF 来计算文档分数。
Similarity API 似乎不允许我这样做。idf方法不接收正在使用的术语作为参数。
另一种可能性是使用 TrieRangeQuery 确保显示的文档在最近几天内。同样,我宁愿不维护更大的索引。这种查询也不便宜。
search - 将 Lucene 用作倒排索引
Lucene 具有强大的增量索引能力。从头开始开发 IR 系统通常会很痛苦。我想知道我是否可以使用低级 Lucene API 将其仅用作倒排索引,即存储倒排列表、位置信息、词频、idfs、字段存储等...
底线是我想实现我自己的权重和文档评分。我知道Similarity
类,但它没有给我想要的灵活性。
java - 为什么我只得到一个 TF-IDF 的结果?
嗨,这是我计算词频和 TF-IDF 的代码。第一个代码计算给定字符串的每个文件的词频。第二个代码应该使用上面的值计算每个文件的 TF-IDF。但我只收到一个值。它应该为每个文档提供 TF-IDF 值。
词频的示例输出:
输入的单词是'is'
| 文件 = abc0.txt |
是 ---> 字数 = |2| 总数 = |150| 词频 = | 0.0133 |
输入的单词是'is'
| 文件 = abc1.txt |
是 ---> 字数 = |0| 总数 = |9| 词频 = | 0.0000 |
TF-IDF
is --> 这个包含词条的文件数 7
是 --> IDF 0.1962946357308887
是 --> TFIDF 0.0028607962606519654 <<< 我想每个文件得到一个值,这意味着我有 10 个文件,它假设为每个不同的文件给我 10 个不同的值。但是,它只打印一个结果。有人可以指出我的错误吗?
javascript - TF-IDF语料库是否可以使用分散
我正在开发一些旨在通过执行 TF-IDF 来唯一识别网页的软件(与一般英语语料库比较以删除常用词)。花了一段时间才找到一个好的免费语料库(http://www.wordfrequency.info/top5000.asp),然而,这个语料库只提供频率和离散度。它没有说明语料库中包含多少文档,所以我无法计算出 IDF 表。它确实包含一个离散值,范围为 0-1,其中 1 表示每个文档中都出现了一个单词。有谁知道(或能想出)一种使用这些数据实现类似 IDF 表的方法?此外,如果有人知道包含我需要的信息的免费语料库,我们将不胜感激。谢谢
java - 使用java程序计算余弦相似度
我在计算相似性度量以为我的最终项目开发搜索引擎时遇到问题。
我必须在 java 中使用tf idf + 余弦相似度,但我不知道如何计算它。
供您参考,我有自己的数据库,其中包含 811 文档
java - 矩阵 TFIDF 的降维
我计算了 TFIdf(词频,逆文档频率),我发现在这一步之后,有必要使用 LSI、卡方检验等方法来降低我的矩阵的维数......,
我不知道如何在 Java 中实现卡方检验以降低矩阵 TFIDF 的维数,如果有一些库可以执行此操作或教程中解释了我如何执行此操作,请告诉我
lucene - 如何计算文档字段中特殊术语的频率?
我只是想知道 Lucene 是如何做到的,从源代码中我知道它会在使用 IndexReader 初始化搜索器时打开并加载段文件,但是有没有好心人告诉我 Lucene 如何计算文档中的词频特殊领域。有什么特殊的算法吗?在阅读 tf 上的解释代码时,我无法弄清楚,例如:
Idf>0,但是为什么代码中的phraseFreq是0.0,我知道这是因为(d == doc)是假的,因为d=Integer.MAX_VALUE,我不知道为什么以及问题出在哪里。
我只有一个带有一个字段的文档,它被索引和存储,并且在调试代码中使用的文档是 1,比如 searcher.explan(booleanQuery,1);
lucene - 数字字段的 Lucene 自定义评分
除了在文本内容字段上使用 tf-idf 相似性进行标准术语搜索之外,我还希望根据数字字段的“相似性”进行评分。这种相似性将取决于查询中的值与文档中的值之间的距离(例如,m= [用户输入],s= 0.5 的高斯)
即假设文档代表人,而人文档有两个字段:
- 说明(全文)
- 年龄(数字)。
我想找到像
描述:(xyz)年龄:30
但年龄不是过滤器,而是分数的一部分(对于 30 岁的人,乘数为 1.0,对于 25 岁的人为 0.8 等)
这可以以明智的方式实现吗?
编辑:最后我发现这可以通过使用 CustomScoreQuery 包装 ValueSourceQuery 和 TermQuery 来完成。请参阅下面的解决方案。
编辑 2:对于快速变化的 Lucene 版本,我只想补充一点,它是在 Lucene 3.0 (Java) 上测试的。
lucene - 如何从文本语料库中提取语义相关性
目标是评估大型文本语料库中术语之间的语义相关性,例如,“police”和“crime”应该比“police”和“mountain”具有更强的语义相关性,因为它们倾向于在相同的上下文中同时出现。
我读过的最简单的方法是从语料库中提取IF-IDF信息。
很多人使用潜在语义分析来寻找语义相关性。
我遇到了 Lucene 搜索引擎: http: //lucene.apache.org/
你认为提取IF-IDF合适吗?
在技术和软件工具方面(偏爱 Java),你会建议我做什么?
提前致谢!
穆龙