Possible Duplicate:
Any tutorial or code for Tf Idf in java




IDF是反文档频率。

IDF =日志(包含期限/文档数量的文档)

在Java中如何做?

有什么建议吗?

最佳答案

怎么样:

static double idf(int docTermCount, int totalNumDocuments)
{ return Math.log((double)docTermCount / (double)totalNumDocuments); }


(这基本上是一种幽默的说法:向我们详细介绍您的情况,也许我们可以提供帮助。什么是文档?它的表示形式是什么?

只需使用Lucene


  Apache Lucene(TM)是
  高性能,功能齐全的文本
  完全编写的搜索引擎库
  在Java中。是适合的技术
  适用于几乎所有的应用
  需要全文搜索,尤其是
  跨平台。


它提供IDF here

如果您不使用Lucene

好的,我可以根据您在下面的评论来概述解决方案,我们将看看是否有帮助:


您需要确定要考虑的文件。也许您有一个明确的列表,或者您有一种文件名模式?
一旦确定了文件,就需要遍历它们,可能是java中的File对象。
对于每个文件,您都需要打开文件(例如,使用包裹在BufferedInputReader周围的InputStreamReader包裹File.getInputStream())。
您将需要知道如何标记文件内容。也许只是使用空格和Scanner对象或类似对象。
您需要一个数据结构(可能是Map<String,Record>)将文件中找到的术语映射到包含术语计数和位置的Record


您可能会考虑使用可以为您完成部分或全部操作的工具。我以为Lucene可能会使用一些基础架构。

关于java - 如何在Java中实现IDF? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5131776/

10-11 22:20
查看更多