Самый быстрый способ сравнить элементы в очень большом списке в Python

У меня очень длинный список твитов, хранящихся в списке Python (более 50 тыс.). Я нахожусь в стадии сравнения каждого элемента стихов, чтобы найти сходство между твитами, используя difflib (чтобы удалить тех, кто похож на 755, при этом оставляя только один твит тех, кто похож). Я использовал itertools.combination, чтобы перебрать все элементы, но это заняло очень много времени (т.е. дней). Вот мой код:

import pandas as pd
from difflib import SequenceMatcher
import itertools
import re
import time


def similar(a, b):
    return SequenceMatcher(None, a, b).ratio()

df1=pd.read_csv("50k_TweetSheet.csv")
data = df1['text'].tolist()

orginalData = data
outList = []

data[:] = [re.sub(r"http\S+", "", s) for s in data]
data[:] = [re.sub(r"@\S+", "", s) for s in data]
data[:] = [re.sub(r"RT|rt\S+", "", s) for s in data]
data[:] = [s.replace('\r+', ' ') for s in data]
data[:] = [s.replace('\n+', ' ') for s in data]
data[:] = [s.replace(' +', ' ') for s in data]


numOfRows = len(data)

start_time = time.time()
for a, b in itertools.combinations(range(numOfRows), 2):
    if len(data[a].split()) < 4: continue
    if a in outList: continue
    similarity = similar(data[a],data[b])
    if similarity > 0.75:
        if len(data[a].split()) > len(data[b].split()):
            outList.append(b)
            print(data[a])
        else:
            outList.append(a)
            print(data[b])

Есть ли более быстрый способ сделать это?

0 ответов

Другие вопросы по тегам