V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
abc0123xyz
V2EX  ›  问与答

怎么去重

  •  
  •   abc0123xyz · 2022-08-01 10:44:04 +08:00 · 1017 次点击
    这是一个创建于 837 天前的主题,其中的信息可能已经有所发展或是发生改变。

    从某个电报群下载了几十 gb 的小说
    想进行去重,各位大佬给个思路 类似于这种

    文件 1 文件 2 章节标题不一致
    同时文件 2 和文件 3 可能缺胳膊少腿的
    同时文件 1 ,2 ,3 可能每个章节内容都有少量不同

    该怎么筛选出相对最完整的文件


    文件 1

    第一回 灵根育孕源流出 心性修持大道生
    第二回 悟彻菩提真妙理 断魔归本合元神
    ···
    ···
    第一百回 径回东土 五圣成真
    

    文件 2

    第 1 回 灵根育孕源流出 心性修持大道生
    第 2 回 悟彻菩提真妙理 断魔归本合元神
    ···
    ···
    第 39 回 一粒金丹天上得 三年故主世间生
    

    文件 3

    第 1 回 灵根育孕源流出 心性修持大道生
    第 2 回 悟彻菩提真妙理 断魔归本合元神
    ···
    ···
    第八十七回 凤仙郡冒天止雨 孙大圣劝善施霖
    
    5 条回复    2022-08-01 13:13:25 +08:00
    eason1874
        1
    eason1874  
       2022-08-01 10:50:48 +08:00
    按章分割,统计字数,取字数最多的版本
    abc0123xyz
        2
    abc0123xyz  
    OP
       2022-08-01 10:53:16 +08:00
    @eason1874 该怎么判断若干个文件是同一本书呢?
    Woood
        3
    Woood  
       2022-08-01 10:58:20 +08:00   ❤️ 1
    自己的活儿自己想办法
    eason1874
        4
    eason1874  
       2022-08-01 11:01:27 +08:00
    @abc0123xyz 取章名比较文本相似度不就知道了
    bipy
        5
    bipy  
       2022-08-01 13:13:25 +08:00
    import difflib

    with open('1.txt', 'r') as t1, open('2.txt', 'r') as t2:
    sm = difflib.SequenceMatcher(None, t1.readlines(), t2.readlines())
    print(sm.ratio())

    # Output
    # 0.9974747474747475

    自己加点逻辑,遍历一下即可,另外 difflib.get_close_matches() 还可以匹配到相近的标题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5371 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 07:33 · PVG 15:33 · LAX 23:33 · JFK 02:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.