У меня есть корпус со строками предложений без пробелов между словами:
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 часов.,,
Я осмотрелся и у меня есть выбор между Три и Питри, что кажется многообещающим решением.Но я не знаю, как правильно сделать это в этом случае.Заранее спасибо!