gpt4 book ai didi

python - 如何提取 TREC 文件?

转载 作者:行者123 更新时间:2023-11-28 22:31:57 24 4
gpt4 key购买 nike

我一直在尝试使用上面的代码将 TREC 文档提取到单独的文本文件中,但我遇到了一些错误。这是我的 TREC 文件的内容示例,其中包含标签 <DOC> 之间的 2 个文档和 </DOC> :

<DOC>
<DOCNO>
WSJ910102-0145
</DOCNO>
<DOCID>
910102-0145.
</DOCID>
<HL>
xxxx
</HL>
<DATE>
01/02/91
</DATE>
<LP>
text LP1
</LP>
<TEXT>
text1
</TEXT>
</DOC>
<DOC>
<DOCNO>
WSJ910102-0144
</DOCNO>
<DOCID>
910102-0144.
</DOCID>
<HL>
....
</HL>
<DATE>
01/02/91
</DATE>
<LP>
text LP2
</LP>
<TEXT>
text2
</TEXT>
</DOC>

我想将每个文档提取到一个单独的文本文件中。我必须获取文件编号为“DOCNO”的标签“LP”和“TEXT”的内容。这是我的代码:

text=text.replace('\n',' ').replace('\t', ' ')
i=0
txtDoc=''
regexTxt='(<LP>(.*?)</LP>)? <TEXT>(.*?)</TEXT>'
regexDoc='<DOC>(.*?)</DOC>'
regexDocNo='<DOCNO>(.*?)</DOCNO>'
pattern = compile(r'<DOC>(.*?)</DOC>')
iterator = finditer(pattern, text)
count = 0
for match in iterator:
count +=1
res=re.search(regexDoc,text)
while (i<count):
txtDoc=res.group(i)
resNo=re.search(regexDocNo,txtDoc)
docNo=resNo.group()
docNo=docNo.replace('<DOCNO>', ' ').replace('</DOCNO>', ' ')
res2=re.search(regexTxt,txtDoc)
txt=res2.group()
txt=txt.replace('<TEXT>', ' ').replace('</TEXT>', ' ').replace('<LP>',' ').replace('</LP>',' ')
print("Document : %s \n %s" %(docNo,txt))
i+=1

print ("Fin")

打印结果如下:

Document :       WSJ910102-0145
text1
Document : WSJ910102-0145
text1
Fin

我想得到这个:

Document :       WSJ910102-0145
text LP1
text1
Document : WSJ910102-0144
text LP2
text2
Fin

最佳答案

我会尝试使用 xml 解析器。以下是如何解析此类结构的示例代码:

import xml.etree.ElementTree as ElementTree

with open('test.trec', 'r') as f: # Reading file
xml = f.read()

xml = '<ROOT>' + xml + '</ROOT>' # Let's add a root tag

root = ElementTree.fromstring(xml)

# Simple loop through each document
for doc in root:
print(
'DOC NO: {}, DOC ID: {}, HL: {}, LP: {}, DATE: {}, TEXT: {}'.format( # Nice formatting py 3 \o/
doc.find('DOCID').text.strip(),
doc.find('HL').text.strip(),
doc.find('DOCNO').text.strip(),
doc.find('LP').text.strip(),
doc.find('DATE').text.strip(),
doc.find('TEXT').text.strip(),
)
)

添加根标记的解决方法有点需要使 xml 可解析。

示例输出:

DOC NO: 910102-0145., DOC ID: xxxx, HL: WSJ910102-0145, LP: text LP1, DATE: 01/02/91, TEXT: text1
DOC NO: 910102-0144., DOC ID: blabla, HL: WSJ910102-0144, LP: text LP2, DATE: 01/02/91, TEXT: text2

关于python - 如何提取 TREC 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41344211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com