一种高效的文本信息查重算法.docxVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种高效的文本信息查重算法 0 适当删除重复信息 随着电子商务的发展,网络中充满了越来越多的信息。考虑到自己的利益,许多公司经常使用各种手段发布大量重复信息(或类似信息)。这些重复发布的信息会造成各商家在网络广告方面投入与产出的不公平。为此, 我们需要通过各种途径准确高效地查找、归类这些信息并予以适当处理。目前在各个商业化的电子商务网站中, 大多数信息的发布是需要人工审核的。通常, 审核员需要通过一定的记忆, 把重复信息找到, 然后予以删除。这种传统的方法存在两个缺陷:其一, 每天成千上万的数据, 通过大量的劳动密集型投入, 致使审核成本剧增;其二, 通过这种方法也不能有效地删除重复信息。如果我们能找到一种合理的算法把类似的信息归并在一起排序, 将会极大地提高信息审核员的劳动效率和降低审核成本。 但是, 大规模的文本相似比较, 是相当耗时的, 在实时环境下, 甚至是根本无法忍受的。如果每千条信息比较需要花费一分钟的时间, 这就违背我们的意图了。尤其是在一个基于Web的应用, 这样的性能将会把Web Server拖跨。我们需要寻求一个效率更高的算法, 以解决重复信息 (或相似信息) 的归类排序问题。 1 有条件进入实验对象把“选取”打造成“个人成本” 文本信息的相似性常常用俄国科学家Vladimir Levenshtein在1965年提出的Levenshtein距离来衡量。根据Levenshtein距离可以计算将一个短语转化成另一个短语时所需执行的插入、删除和置换的次数。比如, 要将“good”变成“goods”, 只需要输入一个字符 (“s”) , 因此它们之间的距离是“1”。四个字母中取一个就是25% (距离通常相对于短语来计算) , 采用这种方法的CAT工具用75%来表示这两个词之间的相似性。该算法主要应用于DNA分析、拼字检查、语音辨识和抄袭侦测等。该算法比较适合英语之类的拉丁语系而不适合中文。另外, 该算法的性能也有问题。笔者测试过, 选择了1000条常规的商业信息, 第一条和其他999条信息比较, 发现需要将近1秒的时间。如果要做相互比较, 基本是行不通了。尽管Levenshtein有一些改进的算法, 但是从性能上来说, 在最糟糕的情况下仍然表现出一样的算法复杂度。 2 算法的时间复杂度 假如两个具有足够长度的字符串s1, s2是相似的, 那么s1的部分内容必定出现在s2中。即:..s1≌s2, 则{s1 (0) |s1 (1) |s1 (2) |s1 (3) …|s1 (n) }∈s2, 其中s1 (0) 、s1 (1) 、s1 (2) 、s1 (3) 、…、s1 (n) 是s1的子串。 假设1由于我们只需把相似的信息归类在一起供人工审核, 故不必考虑两个字符串是否完成相同的问题, 当s1中有k (kn) 个子串存在于s2中, 即可认为该两字符串是相似的, 可以在排序上把他们归并在一起。 现在分析该算法的时间复杂度, 定义问题如下: 有N{N1, N2…Nn}条中文文本信息, 所有文本的平均长度m, 通过相互比较, 把类似的文本信息分组排列成一组。如果被判定是重复的信息, 不再参与接下去的相互比较。例如, 当N1和N2…Nn比较, 得到2条与其相似信息 (N2, N3) , 那么接下去的比较应该是N4与N5…Nn。以此类推, 直到所有的比较结束。可以更一般地描绘这个比较行为: 初始条件:参与比较的文本信息集合为N={N1, N2, …, Nn}, 比较结果集合为P。 1) N1与{N2, N3…Nn}比较得到与N1相似的文本信息加入比较结果集合P; 2) N=N-P, 返回步骤1, 直到N=Φ 由于不同的文本信息集合所比较的结果P是不固定的, 可能是P=N, 也可能是P=Φ。在此, 仅讨论最坏的情况下的算法时间复杂度问题, 即N{N1, N2, …, Nn}没有任何的一条信息是重复的。 则: 1) 模式串长度 (即字符串的切分长度) 为L, 则si与sj比较的时间复杂度为0 ( (m+L) k) , 其中k为sj中参与比较的子串个数; 2) n条文本信息相互比较的次数为n-1, n-2, …, 1, 比较的总次数为 n (n-1) /2。 整个算法的时间复杂度为O (kn (m+L) (n-1) /2) 。其中, 关于字符串模式匹配的算法, 可以采用KMP字符串模式匹配算法, 该算法的时间复杂度约为O (m+L) , m和L分别是存储文本和模式串数组的最大索引。 3 模型生成和算法 根据以上理论模型, 在生产实际中, 我们要解决以下问题: 1) 如何切分被比较的字符串, 即L的长度怎么确定; 2) 如何确定假设1中的k值。 经过多次测试, 发现当L=14、k=10时, 既能满足较高的性能要求, 又能保证较高的正确

文档评论(0)

hzyacc + 关注
实名认证
文档贡献者

专业的文档设计与制作

1亿VIP精品文档

相关文档