У меня есть строковый буфер огромного текстового файла. Я должен искать заданные слова / фразы в буфере строк. Какой эффективный способ сделать это?
Я пытался использовать повторные совпадения модулей. Но так как у меня есть огромный текстовый корпус, который я должен искать. Это занимает много времени.
Приведен словарь слов и фраз.
Я перебираю каждый файл, считываю его в строку, ищу все слова и фразы в словаре и увеличиваю счет в словаре, если ключи найдены.
Одна небольшая оптимизация, которую мы подумали, состояла в том, чтобы отсортировать словарь фраз / слов с максимальным количеством слов по наименьшему. А затем сравните каждое начальное положение слова из буфера строки и сравните список слов. Если одна фраза найдена, мы не ищем другие фразы (так как она соответствует самой длинной фразе, чего мы и хотим)
Может кто-нибудь подсказать, как проходить слово за словом в строковом буфере. (Перебор строкового буфера слово за словом)?
Кроме того, есть ли какая-либо другая оптимизация, которая может быть сделана на этом?
data = str(file_content)
for j in dictionary_entity.keys():
cnt = data.count(j+" ")
if cnt != -1:
dictionary_entity[j] = dictionary_entity[j] + cnt
f.close()