要分析的包
pybundestag的Python项目详细描述
德国联邦议院
自德国联邦议院19届全体会议以来,所有协议都作为高度结构化的xml文件发布。虽然所有以前的协议都可以作为XML文件使用,但它们的结构非常少,几乎相当于非结构化的TXT文件。
此外,联邦议院还以高度结构化的XML文件发布所有现任和前任议员的信息,包括个人信息、简短简历和特定时期的信息。
此python cli工具旨在将所有mdb上的协议和文件转换为单个csv或json文件。这样,数据科学家可以使用输出进行进一步处理。
安装
您可以通过PIP安装Pybundestag。
pip install pybundestag
安装完成后,您可以选择将pybundestag用作cli工具,或将其解析器输入到您的一个脚本中。
用法
您可以在pybundestag中使用一致的语法来转换协议和mdb xml文件。cli模式下的一般语法如下:
pybundestag entity input output
实体可以是"protocol"或"mdb",具体取决于手头的任务。如果要分析协议,请选择"协议"。如果要转换mdb xml文件,请使用"mdb"。input'应该是协议或mdb xml文件的路径,output是输出的所需路径。解析bundestag协议时,还可以指定一个文件夹,pybundestag将解析该文件夹中的所有xml文件。"protocol"和"mdb"都支持几个可选参数。
protcols的解析
确保下载所有要转换为XML文件的协议。请记住,您只能转换那些在19届议会期间或之后创建的文件。如果要同时转换多个协议,请将它们放在一个文件夹中。 下载完要转换的所有XML文件后,打开操作系统的命令行工具,转到PyBundestag所在的位置。
您可以使用上面讨论过的cli界面。但是,您也可以使用以下可选参数:
- -M[--meta]:如果有,联邦议院将在每一次演讲(日期、地点、全体会议和全体会议)中添加meta信息。
- -s[--separator]:CSV文件的自定义分隔符(默认为",")。确保在分隔符周围加上引号。
假设您希望在/home/maxmustermann/rede.xml中转换单个文件,并且希望在/home/maxmustermann/output.csv下将其转换为CSV文件,而不使用元数据并使用默认分隔符。你可以这样使用联邦议院:
pybundestag protocol /home/MaxMustermann/rede.xml /home/MaxMustermann/output.csv
脚本完成后,您将收到一条消息,表明您的输出已写入所需路径。
如果我们假设/home/maxmustermann/reden/下有多个xml文件,并且您希望将这些文件转换为一个包含元数据和分号作为分隔符的csv文件,那么您可以这样调用pybundestag:
pybundestag protocol /home/MaxMustermann/reden/ /home/MaxMustermann/output.csv -m -s ";"
您将看到打印到屏幕上的程序的当前进度,并将收到一条消息,表明您的输出已写入所需路径。生成的csv文件将包含演讲的唯一id、日期、演讲人的派系、位置、会议期间、演讲人的角色、会议、演讲人的姓名、演讲人的id和原始文本(去掉注释)。
当然,如果希望写入json文件,可以将输出文件的名称从output.csv更改为output.json。注意,您选择的分隔符将被忽略。
分析MDB XML
如果要转换包含所有mdb信息的xml文件,可以使用"mdb"作为pybundestag的第一个positional参数。输入必须是德国联邦议院提供的XML文件。正如转换协议时所做的那样,将输出指定为csv或json fiL.
您还可以使用一些可选参数:
- -P[--period]:您可以指定某个议会时期。Pybundestag只会转换和输出该议会时期的成员,并添加该时期的具体信息(例如,任务类型和选区)。这应该是一个整数。
- -i[--institutions]:在这里您可以插入多个机构名称(例如委员会或派系)。联邦议院将检查MDB是否也是该机构的成员。如果要检查多个机构,则必须使用";"分隔它们。注意,如果使用此选项,还必须指定句点。在您的最终结果中,您将为您输入的每个机构获得一个布尔变量。"真"将意味着MDB在指定期间是该机构的一部分。错误则意味着另一种情况。没有健全的检查,请确保拼写正确。
如果您只想将/home/maxmustermann/mdbs.xml中的所有mdb转换为/home/maxmustermann/mdbs.csv,那么您可以这样使用pybundestag:
pybundestag mdb /home/MaxMustermann/mdbs.xml /home/MaxMustermann/mdbs.csv
这将生成一个csv文件,其中包含个人信息(如姓名、出生日期、性别等),以及一份简短的简历和一个唯一的id。
一个更复杂的例子是,如果要将19个议会时期的所有mdb提取到json文件中,同时还要检查给定的mdb是否是"verteidigungsausschuss"和/或"ausschuss für arbeit und soziales"的成员:
pybundestag mdb /home/MaxMustermann/mdbs.xml /home/MaxMustermann/mdbs.json -p 19 -i "Verteidigungsausschuss;Ausschuss für Arbeit und Soziales"
此文件不仅包含个人信息、唯一ID和简短的简历,还包含特定时期的信息和两个虚拟变量"Member懔verteidigungsausschuss"和"Member懔ausschuss für arbeit und soziales"。
链接
您可以在官方网站上找到德国联邦议院的所有协议和所有MDB(以前和现在)上的XML文件。 有一个以德国联邦议院为中心的Github组织,名为"联邦议院"。在那里,您可以找到更多的python和其他语言的存储库。