使用Python Regex以文本方式分析会议记录:“谁说了什么”

时间:2018-05-10 00:19:23

标签: python regex python-3.x split

我正在尝试用文字分析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主席BERNANKE。大家下午好。  \ n \ nPARTICIPANTS。下午好。  \ n \ n主席伯南克。我们需要一项动议来结束我们的会议。  \ n \ NMR。 KOHN。感动了。  \ n \ n主席伯南克。谢谢。我们今天和明天的会议遵循我们最近一直在进行的序列,但有一个重要的补充,那就是我们没有关于通货膨胀动态的工作人员介绍。我们需要大约两个小时的时间进行演示,我不知道,我们已经考虑过它,并决定在会议结束时把它放在一边,这样我们就没有足够的时间来完成我们的政策决定。但我希望人们能够及时付出代价,并确保我们明天有足够的时间给予适当的关注\ n \ n \ n \ n在演示中。 \ n \ n本着这种精神,我们为什么不直接开始?萨克先生。  \ n \ n \ NMR。袋。自上次FOMC会议以来,财务状况普遍不利于经济增长。

1 个答案:

答案 0 :(得分:0)

正则表达式可能更简单:

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]

在行动here

中查看