2017-10-18 8 views
0

J'ai un fichier XML que je veux convertir en un corpus (données texte) en python. Il ressemble à:Comment puis-je lire un fichier XML sur python et le transformer en données texte pour le travail en PNL?

<?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> 

Quel chemin, ou quelle bibliothèque dois-je utiliser pour faire cela en

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

ce genre de format? Est-ce que je devrais faire un peu d'analyse par moi-même ou y at-il une bibliothèque qui fait cela pour moi? Avec le corpus, j'obtiendrai éventuellement la fréquence bigram du corpus.

+1

Votre résultat ne correspond pas au corpus que vous avez fourni. – AndyG

+0

C'est juste le format que je veux. – user6792790

+0

Cela les aidera à s'aligner, c'est donc (plus) évident comment le mappage du fichier xml à la liste des listes devrait arriver. Sinon, il semble que vous voulez que les mots du résultat apparaissent à partir de rien. – AndyG

Répondre

0

Votre fichier xml n'est pas formaté correctement. Supprimez le '-' avant les balises XML (par exemple, du texte) et enregistrez-le sous forme de fichier, puis essayez le code ci-dessous. Une liste de tous les mots uniques sera sauvegardée dans la liste des mots variables

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)