我想将词性标注器的输出添加到现有的 xml 文件中,并将 POS 标记作为属性值对添加到现有的 word 元素中:
house/N + <w>house</w> --> <w pos="N">house</w>
我想我可以给单词提供唯一的 ID,匹配它们,然后将 POS-tag 添加到现有的 xml 文件中,所以我在 Python 中设计了以下函数:
import xml.etree.ElementTree as ET
def add_postags(POSfile, xmlfile):
"""
Function that takes two arguments (POSfile, xmlfile).
If the value of the word <w>'s attribute 'id' in the POSfile matches
the value of 'id' in the existing xml file,
it adds the pos tags that are stored as attribute-value pairs in (POSfile)
to the xml file and writes this to a new document 'xmlPOS'.
"""
treePOS = ET.parse(POSfile)
rootPOS = treePOS.getroot()
tree = ET.parse(xmlfile)
root = tree.getroot()
for w in rootPOS.iter('w'):
idPOS = w.get('id')
for w in root.iter('w'):
idxml = w.get('id')
for w in rootPOS.iter('w'):
POSval = w.get('pos')
if idPOS == idxml:
w.set('pos', POSval)
tree.write('xmlPOS.xml')
return xmlPOS
为此,我必须将标记器输出“house/N”转换为 xml 格式:
<w id="1" pos="N">house</w>
但即使我这样做然后在 Python 中导入上述模块,我似乎也无法将 POS 标签添加到现有的 xml 文件中(当然,它包含比上述示例更多的编辑标记)。也许我应该使用 XSLT 而不是这个 Python xml 解析器?我对 XSLT 还不是很熟悉,所以我想先在 Python 中尝试一下。
任何意见或建议将不胜感激:在此先感谢!