我正在尝试构建一个搜索引擎来查询文档文件夹。网上的教程建议我们应该通过平均所有单词的向量来获得文档的向量,然后将相似度与查询的向量进行比较。
请问文档中所有单词的向量如何保留单词的信息?
如果我检索查询的相似词并检查这些词是否在每个文档中会更好吗?
我正在尝试构建一个搜索引擎来查询文档文件夹。网上的教程建议我们应该通过平均所有单词的向量来获得文档的向量,然后将相似度与查询的向量进行比较。
请问文档中所有单词的向量如何保留单词的信息?
如果我检索查询的相似词并检查这些词是否在每个文档中会更好吗?
我们应该通过平均所有单词的向量来获得文档的向量
情况不一定如此。但肯定是一种方便的方法。特别是主要优点是避免由于不同文档的长度不同而导致的问题。通过获得单个最终向量,我们确保可以比较任何长度的任何文档。使用词向量连接或执行其他操作可能会强制您定义最大长度并填充较短的文档/修剪较长的文档。最后要注意的是,从文档中删除停用词通常是一种很好的做法,即最常见的不提供太多语义含义的词。
请问文档中所有单词的向量如何保留单词的信息?
这实际上取决于您如何获得单词向量。如果您只执行一次热编码,那么执行平均实际上是没有意义的,因为您会从二进制表示中生成实数。所以我假设你打算使用通过 word2vec、skipgram、glove 或其他深度学习模型生成的嵌入。在这种情况下,要理解为什么平均可以提供有用的信息,您首先需要了解这些模型如何将单词转化为向量。广泛的解释超出了问题的范围,因此请保持简短:密集表示允许用单词进行简单的数学运算。当将单词翻译成密集表示时,相似的单词将被转换为相似的(在空间上接近)向量。当然,根据选择的模型会有差异。
如果我检索查询的相似词并检查这些词是否在每个文档中会更好吗?
你当然可以尝试,但它几乎不会比使用任何密集表示更好。原因是单词本身根本没有提供有关它们之间的上下文关系的信息。例如,“apple”可以出现在商店清单、Apple 产品评论中,甚至可以用作药物的俚语。