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ファイルに変更を加えた点として、の親として、

を追加したこと。各に対して、属性としてidを追加したことです。
詳細な利用は、調査していませんが、&が含まれているとエラーが出るようなので、削除しました。また、何らかの理由で発生しただけの行も削除しました。