Использование Python Regex для текстового анализа протокола собрания: «кто что сказал» - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь текстуально проанализировать, кто что сказал, на заседаниях FOMC У меня есть эти PDF-файлы протокола собрания, преобразованные в текст.

Мой текущий план - использовать регулярные выражения, чтобы разделить файл по именам (всегда с большой буквы) и сохранить разделители.

names = re.findall("\s\n{2,}[A-Z]{2,}\.*\s*[A-Z]{2,}\.\d*\s",text)
speech = re.split("\s\n{2,}[A-Z]{2,}\.*\s*[A-Z]{2,}\.\d*\s",text)

А потом я записываю эти списки в CSV с двумя столбцами: имена, речь.

Похоже, действительно неэффективный метод. Есть лучший способ сделать это?

Образец минут:

\ n \ nПРЕДСЕДАТЕЛЬ БЕРНАНКЕ. Всем добрый день. \ П \ nPARTICIPANTS. Добрый день. \ n \ nПРЕДСЕДАТЕЛЬ БЕРНАНКЕ. Нам нужно движение, чтобы закрыть нашу встречу. \ П \ NMR. Кон. Так переехал. \ n \ nПРЕДСЕДАТЕЛЬ БЕРНАНКЕ. Спасибо. Наша сегодняшняя и завтрашняя встреча следует основной последовательности, которую мы имели в последнее время, но с важным дополнением, состоящим в том, что у нас есть презентация персонала по динамике инфляции. Нам нужно около двух часов на эту презентацию, я понимаю, и мы подумали об этом и решили поставить ее в конце собрания, чтобы у нас было достаточно времени для принятия политического решения. Но я надеюсь, что люди обратят внимание на время и позаботятся о том, чтобы у нас было достаточно времени завтра, чтобы уделить должное внимание презентации. \ n \ nВ этом духе, почему бы нам не начать прямо? Мистер Сак \ П \ п \ NMR. МЕШОК. Со времени последнего заседания FOMC финансовые условия в целом \ n \ n \ n стали более благоприятными для экономического роста.

1 Ответ

0 голосов
/ 10 мая 2018

Регулярное выражение может быть намного проще:

re.split("([A-Z \.]+\.)",text)

И тогда ваш код может быть просто:

data = list(filter(None, [s.strip() for s in re.split("([A-Z \.]+\.)",text)]))

Тогда вы можете сделать:

names = data[0:][::2]
speech = data[1:][::2]

Смотрите это в действии здесь

...