我已经下载并提取了完整的wikipediaxml转储文件(60+GB,单个XML文件)'enwiki-20170820-pages-articles-multistream.xml.bz2
我对每页的标题和正文都很感兴趣。
我需要能够在每个文本中查找特定的字符串,只为选定的标题。
问题:
1)如何有效地清理XML文件?我想删除任何无关的,除了文本和标题字段。在
例如,页面可以是:
<page>
<title>Afrika</title>
<ns>0</ns>
<id>2</id>
<revision>
<id>1428708</id>
<parentid>1391377</parentid>
<timestamp>2016-03-06T14:00:12Z</timestamp>
<contributor>
<username>SpesBona</username>
<id>2720</id>
</contributor>
<comment>Uitgebrei</comment>
<model>wikitext</model>
<format>text/x-wiki</format>
<text xml:space="preserve">
'''Afrika''' is die wêreld se tweede grootste [[kontinent]] in sowel
oppervlakte as bevolking. Saam met die eilande beslaan dit ongeveer
30,221,532km² wat 20,3% van die totale landoppervlakte van die [[aarde]]
is en dit word bewoon deur meer as 1 miljard mense - ongeveer 'n sewende
van die wêreldbevolking.
</text>
</revision>
最好,我需要的唯一信息是:
^{pr2}$但是,我以前从未使用过XML或进行过任何XML解析,所以我对如何处理如此大的文件有点迷茫。在
我尝试过使用正则表达式,但是我想知道在Python中是否有任何方法可以使用它们的任何XML处理模块来实现这一点?在
2)在搜索如此庞大的文本文件时,什么是最佳的数据结构?是否建议完全使用清理后的数据创建一个新文件,或者使用类似MongoDB的数据库进行查找?在
使用这个Python代码将归档文件转换为单个文本文件,即Python代码链接 “https://svn.code.sf.net/p/apertium/svn/trunk/apertium-tools/WikiExtractor.py”
用法:
更多信息: http://wiki.apertium.org/wiki/Wikipedia_Extractor
或者你也可以从这里下载旧的维基百科档案:
http://kopiwiki.dsd.sztaki.hu/
如果您有使用Python的经验,您应该使用beauthoulsoup库和lxml解析器来解析xml。它可以让你很容易和直观地浏览标签。 http://www2.hawaii.edu/~takebaya/cent110/xml_parse/xml_parse.html
为了处理大数据量,您可以将每个页面分隔成不同的文件,并使用glob将它们加载到Python中,一次解析一个文件。 Find all files in a directory with extension .txt in Python
对于最终的数据结构,mongodb听起来不错。如果要进行全文搜索,请记住构建文本索引。 https://docs.mongodb.com/manual/core/index-text/
相关问题 更多 >
编程相关推荐