我正在尝试用文字分析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会议以来,财务状况普遍不利于经济增长。
答案 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
中查看