我正在开发文档比较引擎/搜索引擎。我目前使用它的方式如下...
search_doc = ["test search"]
documents = ["doc 1 text", "doc 2 text", "doc 3 text", "..."]
然后比较结果。
我想做的(用最简单的术语来说)是拥有多维文档(具有多个维度的文档,而不仅仅是“文档”)......例如......
documents = {
{ "doc 1 title", "doc 1 body", "doc 1 tags" },
{ "doc 2 title", "doc 2 body", "doc 2 tags" },
{ "doc 3 title", "doc 3 body", "doc 3 tags" }
{ ... }
}
并且还能够对结果进行加权(例如,标题为 0.6,正文为 0.4 等)。
我的问题是...有没有办法在 Gensim 中执行此操作,或者我是否需要为文档的每个元项目创建一个单独的文档(例如,与每个元项目(标题、正文、标签)进行比较)作为一个单独的文档,然后使用文档键/id 组合权重?
我不确定我是否很好地解释了这一点,但请告诉我是否可以改进我的问题。
谢谢。
最佳答案
Gensim 的主要算法(如 LDA 或 Doc2Vec)是根据不同的单独文档进行训练的,不知道子字段或可组合子部分。所以你必须自己建模。
如果您的最终目标需要每个字段单独评分,您应该为每个字段创建一个单独的文档。
您可能还想创建一个由所有字段组成的完整文档。
然后,您可以在所有完整文档和字段组合上训练一个模型,或者为每个文档类型训练一个单独的模型。
您可能希望如何比较、删除重复或合并字段与文档的分数,这在很大程度上取决于您的数据和项目目标,以及您自己的实验和自定义评估。 (例如,也许您的用户对 body 匹配最满意,因此该领域的任何相似之处都应该在您的显示中具有额外的权重 - 等等。)
关于python - 使用 Gensim 生成多维文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45926917/