Python: как ускорить этот метод исчерпания?Trie? - PullRequest
0 голосов
/ 19 мая 2018

У меня есть корпус со строками предложений без пробелов между словами:

thenextdayonmayanarchistsstagedarallyatchicagoshaymarketsquare
abombwasthrownbyanunknownpartyneartheconclusionoftherallykillinganofficer
intheensuingpanicpoliceopenedfireonthecrowdandeachother
sevenpoliceofficersandatleastfourworkerswerekilled

Мне нужно отделить каждое предложение с помощью словаря в словаре, например: {'the': 1, 'next':2, 'thenext':3'...} Числа - это просто частоты, которыездесь не важно.

Выходными данными будут варианты (списки) сегментаций, например: [[the, next, day...], [thenext, day...]...]

А вот мой код (filter_worddict словарь)

def segment(sentence):
    if sentence == '':
        yield []
    for w in filter_worddict:
        if sentence.startswith(w):
            for rest in segment(sentence[len(w):]):
                yield [w] + rest

with open('sentences.txt', 'r') as f4, open('result.txt', 'w') as f5:
    for line4 in f4:
        line4 = line4.strip()
        corpus = list(segment(line4))
        for corpusline in corpus:
            f5.write(str(corpusline) + '\n')

Как этот код может ускориться?В последний раз, когда я пытался использовать корпус (менее 30 МБ), словарь составлял 5 МБ, и это заняло 48 часов.,,

Я осмотрелся и у меня есть выбор между Три и Питри, что кажется многообещающим решением.Но я не знаю, как правильно сделать это в этом случае.Заранее спасибо!

...