search - 信息检索:如何计算多个搜索词的 tf-idf?
问题描述
我有以下 4 个文档的语料库:
<1> 这是第一个文件。
<2> 这是第二个文件。
<3> 第三个文档比第一个和第二个文档长。
<4> 这是最后一个文件。
并使用搜索队列“第一个或最后一个”,我应该如何计算 tf-idf?
目前我正在使用这个:
tf(x, D) = raw frequency of term x in document D / raw frequency of most occurring term in D
idf(x) = log(1 + total number of documents / number of documents containing x)
所以对于队列我得到
<1> = (1 / 1) * log(1 + 4/3)
<3> = (1 / 2) * log(1 + 4/3)
<4> = (1 / 1) * log(1 + 4/3)
它是否正确?你如何正确地做到这一点?我是否分别计算所有搜索词的值然后添加?乘?
解决方案
假设当您说“搜索队列”时您的意思是“搜索查询”并且您的查询是使用逻辑运算符OR构造的,那么您可以构造一个在遇到其中一个术语时增加频率的流。这实际上是您在上面所做的。
正如您在帖子中所说,另一种方法是在分别计算它们的向量之后计算术语向量的总和。但是,乘法将不是您正在寻找的选项。
因此,无论哪种方式,您都可以通过这种方式计算从多个术语中构造一个抽象术语。
推荐阅读
- c++ - 使用 CreateProcess () 和 CreatePipe() 从 cmd.exe 重定向 I/O
- django - RuntimeError: 不允许数据库访问,使用“django_db”标记,或“db”或“transactional_db”fixture 来启用它
- autohotkey - FormatTime 返回今天的日期而不是变量的实际日期
- c# - .NET Core 2.2 Migration Builder 无法删除索引
- openshift - 有没有办法在 OpenShift 中链接两个 Cron 作业
- javascript - Rails:处理由于返回按钮或不完整的程序
- ios - 可以卸载 iOS 应用或删除应用中的配置文件吗?
- python - 如何在 Django 中获取完整的联系表格信息?
- android - 如何保护 Android 应用程序中的 AWS 凭证?
- sql - SQL获取过去每个日期的最新值