受到以下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客户端完成这项工作?
答案 0 :(得分:1)
文件的Tf-Idf通常用于查找文件的相似性(使用余弦相似度,欧氏距离等)
Tf或术语频率表示文档中单词的频率。单词的频率越高,单词的重要性越高。
Idf或逆文档频率表示包含该单词的文档(输入集合)的数量。更难得的是,这个词的重要性更高。
如果我们只使用TF来构建文档向量,我们就容易出现垃圾邮件,因为常用词(例如:代词,连词等)变得更加重要。因此,td-idf的组合给出了更好的含义并表明了该词的真正意义。或者换句话说,基于重要性对文档的单词进行排名,不建议仅计算每个单词的tf,而是在整个输入集合上使用tf-idf,并根据显示的tf-idf值排名关键词的真正意义。
看一下示例python解决方案,用于计算json推文列表的tf-idf值并找到类似的推文。
答案 1 :(得分:1)
弹性搜索提供了一种非常具体的数据聚合,允许您为索引的子集提取“重要关键字”[1]
要详细说明重要内容,您需要前景(您要分析的文档子集)和背景(整个语料库)。
正如您可能已经意识到的,要确定一个重要的术语,您需要比较您的语料库中出现的与其他内容相比的方式(例如通用语料库)。 您可能会发现一些存档包含一些IDF的一般IDF分数(Reuter语料库,棕色语料库,维基百科等)。 然后你可以 : 前景文档集 - >你的语料库 背景文档集 - >通用语料库