【发布时间】:2020-05-16 09:46:21
【问题描述】:
我想用词向量创建一个词汇图。目的是根据单词相似度查询词汇图中最近的单词。我们如何在 neo4j 上实现这一点?
以下是一个例子:
假设词汇表包含以下内容:
Product Quality
Wrong Product
Product Price
Product Replacement
查询词为: Affordable Product
在单个查询中,我应该能够找出“负担得起的产品”与“产品价格”的关系比其他任何查询都更密切。
请注意,我将单词嵌入存储在图表中,因此对词汇表中的每个单词进行余弦相似度检查将帮助我实现这一点。但是当词汇量变大时,逐个查询会影响速度和性能。
如果有任何方法可以将领域词汇的词嵌入存储为图,可以根据余弦相似度查询最近的节点,这可能是一个可能的解决方案。但是到目前为止还没有找到类似的东西。
如果有的话,也期待指针。谢谢
【问题讨论】:
-
您的查询词
'Affordable Product'不在您的词汇表中。 (从技术上讲,甚至'Product'都不是,因为您只提到了包含 2 个单词的标记。)暂时搁置任何速度问题或可能的细节(如图形数据库),您希望代码如何评价未知术语'Affordable Product'最接近'Product Price'? (您是否有一个现成的解决方案,它太慢了,提示您关于构建图表的查询? -
我会将余弦距离存储到图中所有其他节点。这是我能想到的最粗略的实现。
-
什么图中的节点?暂且不考虑任何速度问题或可能的细节(如图形结构),您如何期望代码将 unknown 术语“负担得起的产品”评为最接近“产品价格”? (您是否有一个现成的解决方案,它太慢了,提示您关于构建图的查询?有一种方法来进行这种未知到已知的比较,即使没有任何图结构优化,也是考虑其他的先决条件方法类似于预先计算的最近邻图。)
-
我用余弦距离来找到接近度。我可以对图形空间中的所有节点执行此操作以找到最近的
-
如果您的词汇表中没有术语 '
Affordable Product'(确切的两个单词字符串),则可以使用向量来计算余弦距离。
标签: neo4j ontology word2vec vocabulary knowledge-graph