我正在为我的学士论文工作基于神经网络的共识解析系统,当我阅读语料库时我遇到了问题。
语料库已经预先处理,我只需要阅读它来做我的东西。我使用Beautiful Soup 4来读取包含我需要的数据的每个文档的xml文件。
文件如下所示:
<?xml version='1.0' encoding='ISO-8859-1'?>
<!DOCTYPE markables SYSTEM "markables.dtd">
<markables xmlns="www.eml.org/NameSpaces/markable">
<markable id="markable_102" span="word_390" grammatical_role="vc" coref_set="empty" visual="none" rel_type="none" np_form="indefnp" type="" entity="NO" nb="UNK" def="INDEF" sentenceid="19" lemmata="premia" pos="nn" head_pos="word_390" wikipedia="" mmax_level="markable"/>
<markable id="markable_15" span="word_48..word_49" grammatical_role="vc" coref_set="empty" visual="none" rel_type="none" np_form="defnp" type="" entity="NO" nb="SG" def="DEF" sentenceid="3" lemmata="Grozni hegoalde" pos="nnp nn" head_pos="word_48" wikipedia="Grozny" mmax_level="markable"/>
<markable id="markable_101" span="word_389" grammatical_role="sbj" coref_set="set_21" coref_type="named entities" visual="none" rel_type="coreferential" sub_type="exact repetition" np_form="ne_o" type="enamex" entity="LOC" nb="SG" def="DEF" sentenceid="19" lemmata="Mosku" pos="nnp" head_pos="word_389" wikipedia="" mmax_level="markable"/>
...
我需要在这里提取所有跨度,所以尝试使用此代码(python3):
...
from bs4 import BeautifulSoup
...
file1 = markables+filename+"_markable_level.xml"
xml1 = open(file1) #markable
soup1 = BeautifulSoup(xml1, "html5lib") #markable
...
...
for markable in soup1.findAll('markable'):
try:
span = markable.contents[1]['span']
print(span)
spanA = span.split("..")[0]
spanB = span.split("..")[-1]
...
(我忽略了大部分代码,因为它们是500行)
python3 aurreprozesaketaSTM.py
train
--- 28.329787254333496 seconds ---
&&&&&&&&&&&&&&&&&&&&&&&&& egun.06-1-p0002500.2000-06-01.europa
word_48..word_49
word_389
word_385..word_386
word_48..word_52
...
如果您使用输出结果使用xml文件,则可以看到缺少word_390。
我得到了我需要的几乎所有数据,然后预处理所有内容,使用神经网络构建系统,最后我得到分数和所有......
但是当我丢失每个文档的第一个单词时,我的系统准确度会比应该的低一些。
任何人都可以帮我吗?知道问题在哪里吗?
答案 0 :(得分:1)
您正在使用html5lib解析XML。解析XML不支持它。
lxml的XML解析器...目前唯一支持的XML解析器
https://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser