我有一个数据集,其中包含描述汽车手册中的段落和实际段落的关键字。我想使用 PageRank 算法按该关键字对这些段落进行排名。
我将如何根据关键字对这些段落进行排名?
关键字有一个 ID 号,而手册中的段落是文本。假设有一个 ID 号为 89 的关键字,我有大约 15 段该关键字描述。段落将如何根据与关键字的相关性进行排名?我什至可以使用 PageRank 来解决这个问题吗?
我知道对于排名网站,反向链接用于对网站进行排名,但对于文本段落,我将如何链接和排名它们?
我有一个数据集,其中包含描述汽车手册中的段落和实际段落的关键字。我想使用 PageRank 算法按该关键字对这些段落进行排名。
我将如何根据关键字对这些段落进行排名?
关键字有一个 ID 号,而手册中的段落是文本。假设有一个 ID 号为 89 的关键字,我有大约 15 段该关键字描述。段落将如何根据与关键字的相关性进行排名?我什至可以使用 PageRank 来解决这个问题吗?
我知道对于排名网站,反向链接用于对网站进行排名,但对于文本段落,我将如何链接和排名它们?
如果我理解,您有一组段落,并且每个段落都标有关键字。这定义了从段落到关键字的映射,反之亦然(索引和反向索引)。您可以创建段落和关键字的图表,但所有边都是无向的(或者它们都具有相同的方向)。段落只与关键词相连,关键词只与段落相连。
要建立段落之间的关系,您可以定义传递等价关系,例如“连接到相同关键字的所有段落现在都相互连接”。这将允许您根据与其他段落的连接数对包含给定关键字的段落进行排名,但这可能不是衡量相关性的适当方法。
为了使 PageRank 最有帮助,我认为您需要有方向的关系(例如,如果段落中提到了“参见第 123 页”)。为了更好地表示数据的复杂性,在关键字之间创建额外的关系(例如语义、词汇关系)和在段落之间创建额外的关系(例如文档分类)可能会有所帮助。使用 Python 进行自然语言处理讨论了这些主题。
简短版本:我不认为 PageRank 是解决这个问题的正确算法,因为您感兴趣的东西(相关性)是内容的特征,而不是上下文(即链接的图形结构)。PageRank 在网络上起作用,因为上下文与内容密切相关。
长版:PageRank 是权重沿定向链接流动的一种方式。最终,达到一个稳定的分布,其中重量流入和流出的量度相等。(通常,人们谈论 PageRank 衡量“重要性”或“受欢迎程度”是因为这两者都有自然的内部定义——一个项目受欢迎是因为其他受欢迎的项目喜欢它。)
您可以使用具有多个对象类的图形创建类似 PageRank 的东西——没有“段落”链接到其他段落,但它链接到“关键字”,没有关键字链接到其他关键字,但它链接到其他段落。这给了你对图结构的一个小限制,这可能应该反映在 PageRank 使用的随机重启概率中。以一半的段落权重和一半的关键字权重启动算法,它会迭代直到收敛。(这与 Samuel Harrold 的解决方案非常相似,只是段落之间链接的权重取决于它们共有的关键字数量。)
但这实际上会解决什么问题呢?哪些段落和关键词会最受欢迎?PageRank 的有用工作主要是通过非对称链接完成的(知道 Alice 链接到 Bob 但 Bob 没有链接到 Alice,这证明 Bob 比 Alice 更受欢迎),我们只有对称链接(除非我们使用不同的机制来确定哪些关键字链接到段落而不是哪些段落链接到关键字)。
剩下的工作是通过链接稀缺性来完成的——因为一个页面的流行度在它的所有链接之间共享,一个链接到更少页面的页面比链接到更多页面的页面传递给它们更多的流行度。但这意味着只匹配少数关键字的段落会使这些关键字更受欢迎,而只链接到少数段落的关键字会使这些段落更受欢迎。对我来说,这是否会产生我们想要的效果并不明显——一个从“火花塞”和“车轮”获得重量的段落在排名中的排名将高于仅从“火花”获得重量的段落插头”,这可能与用户想要的相反。
但是您可能希望根据给定关键字的权重百分比向用户显示段落 - 如果段落 A 100% 的权重来自火花塞,段落 B 的权重 30% 来自火花塞,而 C 得到 0 % 来自火花塞的重量,那么也许 A 是显示火花塞的最佳结果,其次是 B。但这在实践中与仅按总关键字中任何特定关键字的比例对页面进行排名有什么不同? 好像不会很多。