2013-03-29 50 views
0

雖然試圖與斯坦福NRE工具標記命名實體,我得到這樣的輸出:的Python 3.3:過程inlineXML

A jury in <ORGANIZATION>Marion County Superior Court</ORGANIZATION> was expected to begin deliberations in the case on <DATE>Wednesday</DATE> or <DATE>Thursday</DATE>. 

過程中處理任何XML沒有根本不工作,所以我加了這個:

<root>A jury in <ORGANIZATION>Marion County Superior Court</ORGANIZATION> was expected to begin deliberations in the case on <DATE>Wednesday</DATE> or <DATE>Thursday</DATE>.</root> 

我試圖建立一個樹用這種方法:stripping inline tags with python's lxml,但它不工作...它產生的上線tree = etree.fromstring(text)這個錯誤:

lxml.etree.XMLSyntaxError: xmlParseEntityRef: no name, line 1, column 1793 

有沒有人知道這個解決方案?或者可能是另一種方法,它允許我使用inlineXML標記從任何文本構建樹,只保留標記的標記並刪除/忽略文本的其餘部分。

+0

你試圖解析的實際「XML」的第1793列是什麼?一個'&'? – geoffspear

+0

根據python(文本[1793]),它是字母'e'。文中有多個&符號,第一個出現在1953年。 – Tim

回答

0

最後,我沒有使用解析器或樹,只是使用正則表達式。這是一個工作又好又快代碼:

import re 
NER = ['TIME','LOCATION','ORGANISATION','PERSON','MONEY','PERCENT','DATA'] 
entities = {} 
for cat in NER: 
    regex_cat = re.compile('<'+cat+'>(.*?)</'+cat+'>') 
    entities[cat] = re.findall(regex_cat,data) 

這裏data只是一個文本字符串。它使用正則表達式來查找在NER中指定的類別的所有實體,並將其作爲列表存儲在字典中。這可以用於所有inlineXML字符串,其中NER只是字符串中所有可能標記的列表。