algorithm - 如何从很多页面中获取相似的文本?

标签 algorithm data-mining text-processing similarity

从很多文本到一个文本中得到 x 个最相似的文本。

也许将页面更改为文本会更好。

您不应该将文本与每个文本进行比较,因为它太慢了。

最佳答案

识别相似文档/页面的能力,无论是网页还是更一般的文本形式,甚至是代码,都有许多实际应用。这个主题在学术论文和不太专业的论坛中都有很好的体现。尽管文档相对丰富,但很难找到与特定案例相关的信息和技术。

通过描述手头的具体问题和相关要求,可能会为您提供更多指导。同时,以下提供了一些一般性想法。

可以使用许多不同的函数来衡量,以某种方式,页面的相似性。选择这些函数中的一个(或可能的几个)取决于各种因素,包括一个人可以分配问题的时间和/或空间量,以及噪声所需的容忍度。

一些更简单的指标是:

  • 最长公共(public)单词序列的长度
  • 常用词数
  • n个以上单词的常见单词序列数
  • 每个文档中前 n 个最常用词的常用词数。
  • 文档的长度

上面的一些指标在规范化后效果更好(例如,为了避免偏爱长页面,因为它们的绝对大小更有可能与其他页面有相似的词)

更复杂和/或计算量大的测量是:

  • 编辑距离(这实际上是一个通用术语,因为有很多方法可以测量编辑距离。一般来说,这个想法是测量将一个文本转换为另一个文本需要多少[编辑]操作。)
  • 算法源自 Ratcliff/Obershelp 算法(但计算单词而不是字母)
  • 基于线性代数的测量
  • 贝叶斯拟合等统计方法

一般来说,我们可以区分测量/算法,其中大部分计算可以为每个文档完成一次,然后进行额外的传递以比较或组合这些测量(相对较少的额外计算),而不是算法需要处理成对比较的文档。

在选择一个(或几个这样的度量,连同一些权重系数)之前,重要的是要考虑除了相似性度量本身之外的其他因素。例如,它可能有益于……

  • 以某种方式规范化文本(特别是在网页的情况下,由于与页面相关的所有“礼仪”:页眉、页脚、广告,相似的页面内容或相似的段落看起来不太相似面板、不同的标记等)
  • 利用标记(例如:比在纯文本中发现的相似性更重视在标题或表格中发现的相似性。
  • 识别并消除与领域相关(甚至广为人知)的表达方式。例如,两个完全不同的文件可能看起来很相似,因为它们有两个共同的“样板”段落,涉及一些法律免责声明或一些通用目的描述,而不是真正与每个文件内容的本质相关联。

关于algorithm - 如何从很多页面中获取相似的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1587020/

相关文章:

python - 对 < 200 个样本的小数据集进行二元分类

java - 需要帮助选择数据挖掘/神经网络 API

python - 逐字或按哈希比较 2 段文本

algorithm - 我的算法可以做得更好吗?

java - 文本比较算法或程序?

algorithm - GA : Do I need apply generator operator for that step 中的精英主义

python - 如何使用 pyparsing Group 和 SkipTo 进行文件解析?

c# - 在 .NET CF 中预处理和搜索文本文件的最佳方式

r - 在 R 的插入符包中使用 adaboost

java - Clojure : parse a XML, 先去掉头尾线