【发布时间】:2017-03-28 04:56:13
【问题描述】:
受以下git 和video 的启发,我正在尝试为我的域创建一个概念搜索,使用word2vec 作为我的查询的同义词过滤器。
给出以下文档结构:
{
"_index": "conversations",
"_type": "conversation",
"_id": "103130",
"_score": 0.97602403,
"_source": {
"context": "Welcome to our service, how can I help? do you offer a free trial",
"answer": "Yes we do. Here is a link for our trial account."
}
}
我想遍历整个索引并提取具有“更高显着性”的单词(tf-idf ?)。
获得前 100 个单词列表后,我将使用 word2vec 创建一个同义词过滤器。
我的问题是:如何使用 ES Node JS 客户端来做到这一点?
【问题讨论】:
-
tf-idf 不是为集合定义的,它是为文档定义的。你最终会得到 idf 部分,这是非常值得怀疑的。
-
感谢您的回复,您能提出一个更好的方法来从索引中提取重要的单词吗?
-
给定一个查询,我们可以计算查询结果中的术语与整个文档空间相比的 tf-idf。我从您的问题中得知您想在收到查询之前这样做。您可以尝试将您的文档空间与另一个更通用的文档空间(例如互联网或维基百科)进行比较,或者您可以计算所有术语的信息增益(或任何其他特征选择方法)。
-
一个术语的意义通常取决于某些东西。在特征选择中,您所做的是评估特征(在这种情况下为术语)与目标类的分离程度。由于我们缺乏目标,我们基本上会评估它对搜索空间的分配情况,这使我们回到文档频率。但不知何故,我怀疑这就是你要找的。我建议您考虑提取对您的搜索空间很重要的术语(搜索空间中的高频率,互联网上的文档频率低)或在您的应用程序中经常搜索的术语。
-
您可以迭代所有文档,为每个文档检索术语并计算每个术语的 tf-idf 值。然后计算 heights 值术语在您的文档中出现的次数,然后取前 n 个术语。
标签: javascript node.js elasticsearch word2vec