从很多文本到一个文本中得到 x 个最相似的文本。
也许将页面更改为文本会更好。
您不应该将文本与每个文本进行比较,因为它太慢了。
最佳答案
识别相似文档/页面的能力,无论是网页还是更一般的文本形式,甚至是代码,都有许多实际应用。这个主题在学术论文和不太专业的论坛中都有很好的体现。尽管文档相对丰富,但很难找到与特定案例相关的信息和技术。
通过描述手头的具体问题和相关要求,可能会为您提供更多指导。同时,以下提供了一些一般性想法。
可以使用许多不同的函数来衡量,以某种方式,页面的相似性。选择这些函数中的一个(或可能的几个)取决于各种因素,包括一个人可以分配问题的时间和/或空间量,以及噪声所需的容忍度。
一些更简单的指标是:
- 最长公共(public)单词序列的长度
- 常用词数
- n个以上单词的常见单词序列数
- 每个文档中前 n 个最常用词的常用词数。
- 文档的长度
上面的一些指标在规范化后效果更好(例如,为了避免偏爱长页面,因为它们的绝对大小更有可能与其他页面有相似的词)
更复杂和/或计算量大的测量是:
- 编辑距离(这实际上是一个通用术语,因为有很多方法可以测量编辑距离。一般来说,这个想法是测量将一个文本转换为另一个文本需要多少[编辑]操作。)
- 算法源自 Ratcliff/Obershelp 算法(但计算单词而不是字母)
- 基于线性代数的测量
- 贝叶斯拟合等统计方法
一般来说,我们可以区分测量/算法,其中大部分计算可以为每个文档完成一次,然后进行额外的传递以比较或组合这些测量(相对较少的额外计算),而不是算法需要处理成对比较的文档。
在选择一个(或几个这样的度量,连同一些权重系数)之前,重要的是要考虑除了相似性度量本身之外的其他因素。例如,它可能有益于……
- 以某种方式规范化文本(特别是在网页的情况下,由于与页面相关的所有“礼仪”:页眉、页脚、广告,相似的页面内容或相似的段落看起来不太相似面板、不同的标记等)
- 利用标记(例如:比在纯文本中发现的相似性更重视在标题或表格中发现的相似性。
- 识别并消除与领域相关(甚至广为人知)的表达方式。例如,两个完全不同的文件可能看起来很相似,因为它们有两个共同的“样板”段落,涉及一些法律免责声明或一些通用目的描述,而不是真正与每个文件内容的本质相关联。
关于algorithm - 如何从很多页面中获取相似的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1587020/