我正在开发一个文档比较引擎/搜索引擎。目前我使用的方式如下…
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)是从独立的单个文档中训练的,对子字段或可组合的子部分一无所知。因此,您需要自己建模这些内容。
如果您的最终目标需要对每个字段进行单独评分,您应该为每个字段创建一个单独的文档。
您可能还希望创建一个由所有字段组成的完整文档。
然后,您可以对所有完整文档和字段进行训练,或者为每种类型的文档训练一个单独的模型。
您如何比较、去重或组合字段与文档的得分将非常依赖于您的数据和项目目标,以及您自己的实验和定制评估。(例如,或许您的用户对主体内容的匹配最满意,因此该字段的任何相似性在您的展示中应该有额外的权重 – 依此类推。)