我想要这样的东西:
[
('Urbandale paid the Regional Municipality of Ottawa-Carleton "redevelopment" charges',
{'entities': [(0, 9, 'PLTF')]}),
('Urbandale carries on business as a land developer.',
{'entities': [(0, 9, 'PLTF')]})
]
我能够将其设置为变量并使它工作,但是现在我尝试自动构造JSON数组。这似乎是一种非常规格式?即为什么句子后面有逗号而不是:
无论如何,这是spacy所需的格式。 我试过创建一个字典,然后将json.dumps放入json对象,这要容易得多,但需要的是数组。
我看过这篇文章:Python - Create array of json objects from for loops并尝试进行了建设性的迭代,但我只是收到无效的语法错误
spans = []
for mention in mentions:
mention = str(mention)
for f in re.finditer(subj, mention):
spans.append(f.span())
train_data = [{mention, "entities": (f.span()[0], f.span()[1], 'PLTF')} for mention, span in zip(mentions, spans)]
编辑:使用json.load(),TEST_DATA [0] [1](我想要的结构)会产生与TRAIN_DATA [0] [1]几乎相同的结果,除了内部有()字典我很确定是当我收到此错误的罪魁祸首:TypeError:'int'对象不可迭代。那我该怎么插入呢?如果我只是在其周围放一个多余的(),则python会对其进行解析并将其删除。
已解决:只需再输入一个[]
谢谢
答案 0 :(得分:0)
您实际上想要的是str的元组列表,第一个元素为dict,第二个元素为dict。只需放更多括号并移动咖喱括号即可。
train_data = [(mention, {"entities": (f.span()[0], f.span()[1], 'PLTF')}) for mention, span in zip(mentions, spans)]