如何在python上读取XML文件并将其转换为NLP工作的文本数据?

时间:2017-10-18 11:11:44

标签: python xml

我有一个XML文件,我希望将其转换为python中的语料库(文本数据)。 它看起来像:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE corpus SYSTEM "puns.dtd">

-<corpus lang="en" id="subtask2-heterographic">

-<text id="het_1">

<word id="het_1_1">'</word>

<word id="het_1_2">'</word>

<word id="het_1_3">I</word>

<word id="het_1_4">'</word>

<word id="het_1_5">m</word>

<word id="het_1_6">halfway</word>

<word id="het_1_7">up</word>

<word id="het_1_8">a</word>

<word id="het_1_9">mountain</word>

<word id="het_1_10">,</word>

<word id="het_1_11">'</word>

<word id="het_1_12">'</word>

<word id="het_1_13">Tom</word>

<word id="het_1_14">alleged</word>

<word id="het_1_15">.</word>

</text>
-<text id="het_2">

<word id="het_2_1">I</word>

<word id="het_2_2">'</word>

<word id="het_2_3">d</word>

<word id="het_2_4">like</word>

<word id="het_2_5">to</word>

<word id="het_2_6">be</word>

<word id="het_2_7">a</word>

<word id="het_2_8">Chinese</word>

<word id="het_2_9">laborer</word>

<word id="het_2_10">,</word>

<word id="het_2_11">said</word>

<word id="het_2_12">Tom</word>

<word id="het_2_13">coolly</word>

<word id="het_2_14">.</word>
</text>
</corpus>

我应该使用哪种方式或哪个库来实现

sample_corpus = [['When', 'Socrates', 'needed', 'to', 'buy', 'food', 'he', 'went', 'to', 'the', 'grocery', 'stoa', '.'],[
                 'Acupuncture', 'is', 'a', 'jab', 'well', 'done', '.']]

这种格式?我是否必须自己进行一些解析,或者是否有一个库为我这样做?通过语料库,我最终将获得语料库的二元频率。

1 个答案:

答案 0 :(得分:0)

您的xml文件格式不正确。删除&#39; - &#39;在任何xml标签(例如文本)之前,将其保存为文件,然后尝试下面的代码。所有唯一单词的列表将保存在列表变量单词

import pprint as pp
import xml.etree.ElementTree as ET

root = ET.parse('XMLCorpus.xml')
words = []
for wordElement in root.iter('word'):
    words.append(wordElement.text)

pp.pprint (words)