我正在尝试使用聚合算法,该算法将根据用户突出显示获取文本中最重要的元素。
想象一下,你有一个有n个单词的文本,你可以从文本中选择k个连续单词作为"相关高亮",其中1< = k< = n。(k是子串n)
假设我们选择了10到10000个这些k亮点,是否有任何算法可以确定最重要的信息?
考虑到许多亮点会重叠,我们需要考虑到这一点。我也最好在javascript中寻找解决方案,因为它是Chrome扩展程序。
这不适用于课程,这是针对基于群体的摘要的个人项目。
答案 0 :(得分:0)
假设每个用户突出显示一些文本,并且您知道这些突出显示是什么。对于文本中的每个单词,您可以总结多少人突出显示它。你可以计算的一件事是,对于一些固定的k和N,总共使用k个延伸,最多使用N个单词,这样N个单词被突出显示的次数之和是最大值。
您可以使用动态编程执行此操作,在文本中从左到右工作。对于文本中的每个点以及每个可能允许的组合(#个亮点,#个词突出显示,当前单词是否突出显示),您可以计算出满足这些约束时终止的最佳答案的分数。您可以使用上一个单词的最佳答案在每个点找出最佳答案 - 如果您采用任何一个现有的最佳答案,请考虑可能的分数,如果最后一个单词突出显示,则扩展当前的高亮,或者开始一个新的亮点。最后,您可以从右到左跟踪整个文本的最佳答案。
这将以k片段的最佳部分的形式为您提供一个摘要,使用最多N个单词来尽可能多地拾取用户突出显示的单词。毫无疑问,对于不同的分数或不同的突出显示约束,这有不同的变化 - 计算k个延伸的最佳组合可能更容易,其中每个延伸最多为M个字符。