Итак, я пытаюсь сопоставить регулярное выражение с абзацем для анализа настроений, но tqdm говорит, что это может занять около 300 часов. Мне было интересно, если у кого-то есть критика о том, что я мог бы сделать, чтобы улучшить работу моих RE
Я пытаюсь сопоставить окончания ствола с отрицательными словами для этого анализа. Вот небольшой фрагмент выражения для матча. Я показываю только небольшой фрагмент, потому что все выражение содержит около 2800 терминов и полностью одинаково настроено, следовательно, эллипсы.
regex_neg = ((a lie)|(abandon)|(abas)|(abattoir)|(abdicat)|(aberra)|(abhor)|(abject)|(abnormal)|(abolish)|(abominab)|(abominat)|(abrasiv)|(absent)|(abstrus)|(absurd)|(abus)|(accident)|(accost)|(accursed)|(accusation)|(accuse)|(accusing)|(acerbi)|(ache)|(aching)|(achy)|(acomia)|(acrimon)|(adactylism)|(addict)|(admonish)|(admonition)|(adulterat)|(adultery)|(advers)|(affectation)|(affected)|(affected manner)|(afflict)|(affright)...)
Вот функция, которую я использую для соответствия основам в абзацах
def neg_stems(paragraph):
stem_list = []
i = " ".join(paragraph)
for n in re.finditer(regex_neg, i):
if n.group():
stem_list.append(n.group())
return json.dumps(stem_list)
И, наконец, вот только общий вывод, который я получаю
neg_stems(["the king abdicated the throne in an argument where he was angry, but his son was pretty happy about it","I hate cats but love hedgehogs"])
> ["abdicat", "argument", "anger", "hate"]
Я просто пытаюсь подсчитать количество отрицательных слов, как определено семантическим словарем в regex_neg
, но ~ 300 часов - это слишком много, и даже тогда это просто оценка.
У кого-нибудь есть предложения о том, что я мог бы сделать, чтобы попытаться ускорить этот процесс?
Заранее спасибо!