簡體   English   中英

我需要怎么做才能翻譯此列表?

[英]What do I need to do to translate this list?

我一直在使用deeppavlov的命名實體識別模型,但是它以以下格式返回數據:[[[tokens],[ner_tags]]]

例:

原始文本- John Doe at Burger King on Thursday

返回:

[[['john', 'doe', 'at', 'burger', 'king', 'on', 'thursday'], 
  ['B-PERSON, 'I-PERSON', 'O', B-ORG, I-ORG, 'O', 'B-DATE]]]

期望的:

[['john doe', 'PERSON'], ['burger king', ORG], [thursday, DATE]]

“ B-”前綴表示實體的開始,而“ I-”前綴表示實體的“內部”。 如何操作列表以提供所需的輸出

您可以使用zip方法。

rs = [[['john', 'doe', 'at', 'burger', 'king', 'on', 'thursday'], 
       ['B-PERSON, 'I-PERSON', 'O', B-ORG, I-ORG, 'O', 'B-DATE]]]
words, kinds = rs[0]
classes = [[word, kind] for word, kind in zip(words, kinds) if kind != 'O']

使用itertools.groupby

from itertools import groupby

res = []
for k, g in groupby(zip(*result[0]), key=lambda x:x[1].split('-')[-1]):
    if k != 'O':
        res.append([' '.join(x[0] for x in g), k])
res

輸出:

[['john doe', 'PERSON'], ['burger king', 'ORG'], ['thursday', 'DATE']]

您可以使這種單線:

[[' '.join(x[0] for x in g), k] for k, g in groupby(zip(*result[0]), key=lambda x:x[1].split('-')[-1]) if k != 'O']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM