使用python创建剽窃检测器

使用python创建剽窃检测器,python,Python,你好。我试图使用python创建一个剽窃检测器,通过比较两个文件的文本并返回至少有5个单词的类似短语。当我运行下面的代码时,我得到以下索引错误:列表索引超出范围。。。这里是我的代码和三个文本文档 def check_plagiarism(file1, file2): with open(file1, 'r') as f1: with open(file2, 'r') as f2: f1_content = f1.read().split(' ') f2_c

你好。我试图使用python创建一个剽窃检测器,通过比较两个文件的文本并返回至少有5个单词的类似短语。当我运行下面的代码时,我得到以下索引错误:列表索引超出范围。。。这里是我的代码和三个文本文档

def check_plagiarism(file1, file2):
with open(file1, 'r') as f1:
    with open(file2, 'r') as f2:
        f1_content = f1.read().split(' ')
        f2_content = f2.read().split(' ')
        longest_series = []

        for i, word in enumerate(f1_content):
            if word in f2_content:

                word_indexes = []
                curr_index = 0
                searching = True

                while searching is True:
                    if word in f2_content[curr_index:]:
                        word_indexes.append(f2_content[curr_index:].index(word) + curr_index)
                        curr_index = word_indexes[-1] + 1
                    else:
                        searching = False

                for ind in word_indexes:
                    j = 0

                    while i + j < len(f1_content):
                        if f1_content[i+j] != f2_content[ind+j]:
                            break
                        current_series = f1_content[i:i + j + 1]

                        if len(current_series) > len(longest_series):
                            longest_series = current_series
                        j += 1

if len(longest_series) < 5:
    return False
else:
    return ' '.join(longest_series)

print(check_plagiarism("file_4.txt", "file_5.txt"))
print(check_plagiarism("file_4.txt", "file_6.txt"))
print(check_plagiarism("file_5.txt", "file_6.txt"))
def检查剽窃(文件1、文件2):
打开(文件1,'r')为f1时:
打开(文件2,'r')作为f2:
f1_content=f1.read().split(“”)
f2_content=f2.read().split(“”)
最长的_系列=[]
对于i,枚举中的单词(f1\u内容):
如果f2_内容中有单词:
word_索引=[]
当前索引=0
搜索=真
虽然搜索是正确的:
如果f2_内容中的单词[当前索引:]:
word索引。追加(f2内容[当前索引:]索引(word)+当前索引)
当前索引=单词索引[-1]+1
其他:
搜索=假
对于word_索引中的索引:
j=0
而i+jlen(最长系列):
最长\u系列=当前\u系列
j+=1
如果len(最长的_系列)<5:
返回错误
其他:
返回“”。加入(最长的\u系列)
打印(检查抄袭(“文件4.txt”、“文件5.txt”))
打印(检查抄袭(“文件4.txt”、“文件6.txt”))
打印(检查剽窃(“文件5.txt”、“文件6.txt”))
文件_4.txt:(射精上升钟楼后生动物简陋的躺椅故事讲述突发的长寿史碎尸巫术中间种源moccasin爪子trailside意为hoagie sturgeon bartok普鲁卡因鳄鱼左向盖洛普原住民族笑声加州大学洛杉矶分校日期线不精确辛辣的主教染料黑色素瘤展示品犬玛丽镶嵌阿拉巴马矮小女孩设计阳离子wasnt seam rosenberg legacy q裂隙子宫切除术消耗性古生物学(sap)

文件_5.txt:(射精上升钟楼后生动物beaujolais sorb准粒子毛发索马里教转机第一手hough贫穷恶魔感觉猫外差风车不接缝rosenberg遗留q裂缝子宫切除术消耗性古生物学无趣sap)

文件_6.txt:(辛辣的圣公会染料黑色素瘤展示品犬科玛丽镶嵌阿拉巴马短粗的小姑娘设计阳离子吕宋最高级科克兰农场射精上升的钟楼后生动物眨眼幽默的朱迪思cpa染色体电泳像新郎坚持passe wingbeat ferdinand spume不恰当的躺椅讲故事暴躁的长寿史密森)


感谢您花费的时间和精力。

您忘记提问了使用尽可能短的代码和数据隔离问题,以再现特定问题是提问过程的一部分。理想情况下,该问题应该集中在问题本身,而不是在遇到问题时您正试图做什么,除非这些都是无法解决的。我只是想知道为什么每次我试图运行代码时都会出现“索引超出范围”错误。我试图检测在两个文件中找到的5个或更多连续单词,否则,函数将返回False。这两个文本文件位于我的本地服务器(个人工作站)…谢谢