У меня есть множество смежных фраз, которые я ищу, чтобы проверить, существуют ли они в каждой строке файла. Если они это сделают, я считаю их появление. Я хочу посчитать фразу только один раз в строке. Если фраза встречается в одной строке несколько раз, они все равно должны учитываться только один раз для этой строки. Длина моего входного набора (это все два слова) имеет размер 800 000, и я ищу их во входном файле, который состоит из 12 тыс. Строк. Сейчас я пытаюсь сосчитать их, используя вложенные циклы for, что занимает более 2 часов (все еще ожидаю результатов). Должен быть эффективный, pythoni c способ делать вещи. Руководство очень ценится!
PS: Я бы хотел избежать какой-либо обработки естественного языка или подобных утилит и хотел бы научиться реализовывать его без таких пакетов.
Ниже приведен мой код
candidate_kst_wc = dict()
lines = open('xxxxxx.txt')
for line in lines:
line = line.strip() # remove carriage return and return the line as string
for elem in list(icandidate_kset): # input set with phrase like {x;y,a;b,y;x}
phrase = elem.replace(';',' ') # get the phrase from list and replace the ; with space
if phrase in line:
candidate_kst_wc[elem] = candidate_kst_wc.get(elem,0) + 1