【新坑】python 文本比对

  • 文本比较算法
  • python的相关库
    • difflib(似乎不太好用,适用于比较由行构成的文本,有过滤junk char/line的机制)
      SequenceMatcher()只能对两个文本序列进行比较,对中文文本可以先分词再比对;
      # ... ...
      #l1, l2是分词序列
      s = difflib.SequenceMatcher(None, l1, l2)
      olst = s.get_opcodes() # 五元组的列表
      c1 = [x for (x,y,z,w,u) in olst] # 操作名
      c23 = ["".join(l1[y:z]) for (x,y,z,w,u) in olst] # l1对应的一组分词
      c45 = ["".join(l2[w:u]) for (x,y,z,w,u) in olst] # l2对应的一组分词

      可以用pandas.DataFrame再组织结果查看:例如,
      df["op"] = c1, df["w1"] = c23, df["w2"] = c45
      可以查看df[df["op"]!="equal"]的结果

      >>> df[df["op"]!="equal"]
               op                           w1                                           w2
      1   replace                共同团结奋斗、共同繁荣发展                     广泛交往交流交融,推动民族地区加快现代化建设步伐
      3   replace                           坚持                                         深入推进
      5    delete                           方向                                             
      7    insert                                                          维护海外侨胞和归侨侨眷合法权益,
      9   replace                 同心奋斗、共创辉煌的强大                                  共同致力民族复兴的磅礴
      11  replace                           我们  过去一年,国防和军队建设取得新的成绩和进步,人民军队出色完成担负的使命任务。新的一年,
      13  replace                           围绕               坚持党对人民军队的绝对领导,全面深入贯彻军委主席负责制,打好
      15  replace  ,边斗争、边备战、边建设,完成好党和人民赋予的各项任务                                          攻坚战
      17  replace                  创新军事战略指导,大抓                                统筹推进军事斗争准备,抓好
      19  replace          统筹抓好各方向各领域军事斗争。全面加强                        坚定捍卫国家主权、安全、发展利益。构建现代
      21  replace                     ,巩固拓展国防和                                        体系,抓好
      23  replace             改革成果,加强重大任务战建备统筹                                  建设“十四五”规划执行
      25   insert                                                            优化国防科技工业体系和布局,
      27   delete              国防科技工业能力建设。深化全民                                             
      29   insert                                                              、国防动员和后备力量建设
      31  replace                      活动,合力谱写                                      工作,巩固发展
      33   delete                          新篇章                                             
      ... ...

       

    • diff_match_patch
      # s1, s2是进行比对的文本字符串
      dmp = diff_match_patch.diff_match_patch()
      diff = dmp.diff_main(s1, s2) # 差异的二元组列表
      dmp.diff_cleanupSemantic(diff) # 简化区别
      patch = dmp.patch_make(diff) # 某种格式的补丁数据
      newtxt, _ = dmp.patch_apply(patch, s1)

      例如:(newtxt的内容和s2完全一致)

      >>> diff
      [(0, '我们要以铸牢中华民族共同体意识为主线,坚持和完善民族区域自治制度,促进各民族'), (-1, '共同团结奋斗、共同繁荣发展'), (1, '广泛交往交流交融,推动民族地区加快现代化建设步伐'), (0, '。坚持党的宗教工作基本方针,'), (-1, '坚持'), (1, '深入推进'), (0, '我国宗教中国化'), (-1, '方向'), (0, ',积极引导宗教与社会主义社会相适应。加强和改进侨务工作,'), (-1, '汇聚起海内外中华儿女同心奋斗、共创辉煌的强大力量。我们要深入贯彻***强军思想,贯彻新时代军事战略方针,围绕实现建军一百年奋斗目标,边斗争、边备战、边建设,完成好党和人民赋予的各项任务。全面加强练兵备战,创新军事战略指导,大抓实战化军事训练,统筹抓好各方向各领域军事斗争。全面加强军事治理,巩固拓展国防和军队改革成果,加强重大任务战建备统筹'), (1, '维护海外侨胞和归侨侨眷合法权益,汇聚起海内外中华儿女共同致力民族复兴的磅礴力量。过去一年,国防和军队建设取得新的成绩和进步,人民军队出色完成担负的使命任务。新的一年,要深入贯彻***强军思想,贯彻新时代军事战略方针,坚持党对人民军队的绝对领导,全面深入贯彻军委主席负责制,打好实现建军一百年奋斗目标攻坚战。全面加强练兵备战,统筹推进军事斗争准备,抓好实战化军事训练,坚定捍卫国家主权、安全、发展利益。构建现代军事治理体系,抓好军队建设“十四五”规划执行'), (0, ',加快实施国防发展重大工程。巩固提高一体化国家战略体系和能力,'), (-1, '加强'), (1, '优化'), (0, '国防科技工业'), (-1, '能力建设。深化全民国防教育'), (1, '体系和布局,加强国防教育、国防动员和后备力量建设'), (0, '。各级政府要大力支持国防和军队建设,深入开展“双拥”'), (-1, '活动,合力谱写'), (1, '工作,巩固发展'), (0, '军政军民团结'), (-1, '新篇章'), (0, '。我们要'), (1, '继续'), (0, '全面准确、坚定不移贯彻“一国两制”、“港人治港”、“澳人治澳”、高度自治的方针,坚持依法治港治澳,'), (-1, '维护宪法和基本法确定的特别行政区宪制秩序,'), (0, '落实“爱国者治港”、“爱国者治澳”原则。支持'), (-1, '港澳'), (1, '香港、澳门'), (0, '发展经济、改善民生,'), (1, '发挥自身优势和特点,积极参与粤港澳大湾区建设,更好融入国家发展大局,'), (0, '保持香港、澳门长期繁荣稳定。我们要坚持贯彻新时代党解决台湾问题的总体方略,坚持一个中国原则和“九二共识”,坚'), (-1, '定反“独”促统,推动两岸关系和平发展,推进祖国和平统一进程。两岸同胞血脉相连,要促进两岸经济文化交流合作,完善增进台湾同胞福祉的制度和政策,推动两岸共同弘扬中华文化'), (1, '决反对“台独”分裂和外来干涉,推动两岸关系和平发展,坚定不移推进祖国统一大业,维护中华民族根本利益。深化两岸融合发展,增进两岸同胞福祉'), (0, ',同心共创'), (1, '民族'), (0, '复兴伟业。我们要坚'), (-1, '定奉行'), (1, ''), (0, '独立自主的和平外交政策,坚'), (-1, '定不移'), (1, ''), (0, '走和平发展道路,坚'), (-1, '持在和平共处五项原则基础上同各国发展友好合作,坚定奉行互利共赢的开放战略,始终做世界和平的建设者、全球发展的贡献者、国际秩序的维护者'), (1, '定奉行互利共赢的开放战略,倡导平等有序的世界多极化和普惠包容的经济全球化,推动构建新型国际关系,反对霸权霸道霸凌行径,维护国际公平正义'), (0, '。中国愿同国际社会一道'), (1, ''), (0, '落实全球发展倡议、全球安全倡议'), (1, '、全球文明倡议'), (0, ',弘扬全人类共同价值,'), (-1, '携手推动构建人类命运共同体,维护世界和平和地区稳定'), (1, '推动全球治理体系变革,推动构建人类命运共同体'), (0, '')]
      >>> s1
      '我们要以铸牢中华民族共同体意识为主线,坚持和完善民族区域自治制度,促进各民族共同团结奋斗、共同繁荣发展。坚持党的宗教工作基本方针,坚持我国宗教中国化方向,积极引导宗教与社会主义社会相适应。加强和改进侨务工作,汇聚起海内外中华儿女同心奋斗、共创辉煌的强大力量。我们要深入贯彻***强军思想,贯彻新时代军事战略方针,围绕实现建军一百年奋斗目标,边斗争、边备战、边建设,完成好党和人民赋予的各项任务。全面加强练兵备战,创新军事战略指导,大抓实战化军事训练,统筹抓好各方向各领域军事斗争。全面加强军事治理,巩固拓展国防和军队改革成果,加强重大任务战建备统筹,加快实施国防发展重大工程。巩固提高一体化国家战略体系和能力,加强国防科技工业能力建设。深化全民国防教育。各级政府要大力支持国防和军队建设,深入开展“双拥”活动,合力谱写军政军民团结新篇章。我们要全面准确、坚定不移贯彻“一国两制”、“港人治港”、“澳人治澳”、高度自治的方针,坚持依法治港治澳,维护宪法和基本法确定的特别行政区宪制秩序,落实“爱国者治港”、“爱国者治澳”原则。支持港澳发展经济、改善民生,保持香港、澳门长期繁荣稳定。我们要坚持贯彻新时代党解决台湾问题的总体方略,坚持一个中国原则和“九二共识”,坚定反“独”促统,推动两岸关系和平发展,推进祖国和平统一进程。两岸同胞血脉相连,要促进两岸经济文化交流合作,完善增进台湾同胞福祉的制度和政策,推动两岸共同弘扬中华文化,同心共创复兴伟业。我们要坚定奉行独立自主的和平外交政策,坚定不移走和平发展道路,坚持在和平共处五项原则基础上同各国发展友好合作,坚定奉行互利共赢的开放战略,始终做世界和平的建设者、全球发展的贡献者、国际秩序的维护者。中国愿同国际社会一道落实全球发展倡议、全球安全倡议,弘扬全人类共同价值,携手推动构建人类命运共同体,维护世界和平和地区稳定。'
      >>> s2
      '我们要以铸牢中华民族共同体意识为主线,坚持和完善民族区域自治制度,促进各民族广泛交往交流交融,推动民族地区加快现代化建设步伐。坚持党的宗教工作基本方针,深入推进我国宗教中国化,积极引导宗教与社会主义社会相适应。加强和改进侨务工作,维护海外侨胞和归侨侨眷合法权益,汇聚起海内外中华儿女共同致力民族复兴的磅礴力量。过去一年,国防和军队建设取得新的成绩和进步,人民军队出色完成担负的使命任务。新的一年,要深入贯彻***强军思想,贯彻新时代军事战略方针,坚持党对人民军队的绝对领导,全面深入贯彻军委主席负责制,打好实现建军一百年奋斗目标攻坚战。全面加强练兵备战,统筹推进军事斗争准备,抓好实战化军事训练,坚定捍卫国家主权、安全、发展利益。构建现代军事治理体系,抓好军队建设“十四五”规划执行,加快实施国防发展重大工程。巩固提高一体化国家战略体系和能力,优化国防科技工业体系和布局,加强国防教育、国防动员和后备力量建设。各级政府要大力支持国防和军队建设,深入开展“双拥”工作,巩固发展军政军民团结。我们要继续全面准确、坚定不移贯彻“一国两制”、“港人治港”、“澳人治澳”、高度自治的方针,坚持依法治港治澳,落实“爱国者治港”、“爱国者治澳”原则。支持香港、澳门发展经济、改善民生,发挥自身优势和特点,积极参与粤港澳大湾区建设,更好融入国家发展大局,保持香港、澳门长期繁荣稳定。我们要坚持贯彻新时代党解决台湾问题的总体方略,坚持一个中国原则和“九二共识”,坚决反对“台独”分裂和外来干涉,推动两岸关系和平发展,坚定不移推进祖国统一大业,维护中华民族根本利益。深化两岸融合发展,增进两岸同胞福祉,同心共创民族复兴伟业。我们要坚持独立自主的和平外交政策,坚持走和平发展道路,坚定奉行互利共赢的开放战略,倡导平等有序的世界多极化和普惠包容的经济全球化,推动构建新型国际关系,反对霸权霸道霸凌行径,维护国际公平正义。中国愿同国际社会一道,落实全球发展倡议、全球安全倡议、全球文明倡议,弘扬全人类共同价值,推动全球治理体系变革,推动构建人类命运共同体。'
      >>>newtxt
      '我们要以铸牢中华民族共同体意识为主线,坚持和完善民族区域自治制度,促进各民族广泛交往交流交融,推动民族地区加快现代化建设步伐。坚持党的宗教工作基本方针,深入推进我国宗教中国化,积极引导宗教与社会主义社会相适应。加强和改进侨务工作,维护海外侨胞和归侨侨眷合法权益,汇聚起海内外中华儿女共同致力民族复兴的磅礴力量。过去一年,国防和军队建设取得新的成绩和进步,人民军队出色完成担负的使命任务。新的一年,要深入贯彻***强军思想,贯彻新时代军事战略方针,坚持党对人民军队的绝对领导,全面深入贯彻军委主席负责制,打好实现建军一百年奋斗目标攻坚战。全面加强练兵备战,统筹推进军事斗争准备,抓好实战化军事训练,坚定捍卫国家主权、安全、发展利益。构建现代军事治理体系,抓好军队建设“十四五”规划执行,加快实施国防发展重大工程。巩固提高一体化国家战略体系和能力,优化国防科技工业体系和布局,加强国防教育、国防动员和后备力量建设。各级政府要大力支持国防和军队建设,深入开展“双拥”工作,巩固发展军政军民团结。我们要继续全面准确、坚定不移贯彻“一国两制”、“港人治港”、“澳人治澳”、高度自治的方针,坚持依法治港治澳,落实“爱国者治港”、“爱国者治澳”原则。支持香港、澳门发展经济、改善民生,发挥自身优势和特点,积极参与粤港澳大湾区建设,更好融入国家发展大局,保持香港、澳门长期繁荣稳定。我们要坚持贯彻新时代党解决台湾问题的总体方略,坚持一个中国原则和“九二共识”,坚决反对“台独”分裂和外来干涉,推动两岸关系和平发展,坚定不移推进祖国统一大业,维护中华民族根本利益。深化两岸融合发展,增进两岸同胞福祉,同心共创民族复兴伟业。我们要坚持独立自主的和平外交政策,坚持走和平发展道路,坚定奉行互利共赢的开放战略,倡导平等有序的世界多极化和普惠包容的经济全球化,推动构建新型国际关系,反对霸权霸道霸凌行径,维护国际公平正义。中国愿同国际社会一道,落实全球发展倡议、全球安全倡议、全球文明倡议,弘扬全人类共同价值,推动全球治理体系变革,推动构建人类命运共同体。'

       

    • nltk

posted on 2024-03-14 15:08  Mju_halcyon  阅读(55)  评论(0编辑  收藏  举报

导航