CaboChaによってXMLで出力されたファイルをパースする。
cabochaを用いて
$ cabocha -f 3 hoge.txt > hoge.xml
として出力されたXMLファイルはそのままでは、パースする事ができない。そのため、一手間加えてあげる必要がある。(事前に、一行毎に改行をしている必要あり)
#!/usr/bin/python # -*- coding:utf-8 -*- import re p = re.compile(r'".*?"') def article(file): xml = open(file).readlines() sentenceid = 0 print "<article>" for line in xml: if line.find("<sentence>") > -1: print '<sentence id="'+str(sentenceid)+'">' sentenceid += 1 else: if line.find("&") > 0 or line.find("</tok>") == 0: continue else: print line, print "</article>" article("hoge.xml")
printによって、標準出力されたものをパイプ等を利用して、ファイルに保存してくださいませ。
こんな感じに修正を加えると、
#!/usr/bin/python # -*- coding:utf-8 -*- from lxml import etree tree = etree.parse("hoge.xml")
と、無事にパースすることができる。
xmlファイルに変更を加えた点として、
詳細な利用は、調査していませんが、&が含まれているとエラーが出るようなので、削除しました。また、何らかの理由で発生しただけの行も削除しました。