如何附加没有转义引号的嵌套数组?

How to append nested array without escaped quotation marks?

我需要为 spacy 设置训练数据。 Spacy 要求数据以这种方式格式化:

TRAIN_DATA = [('very long text...', {'entities': [(48, 68, 'PRODUCT')]}),('very long text...', {'entities': [(36, 55, 'PRODUCT')]}),('very long text...', {'entities': [(0, 16, 'PRODUCT')]})]

我正在尝试通过使用正则表达式来查找现有数据的特定模式来自动提取此数据。 这是我的代码,用于遍历数据并检查是否满足正则表达式模式:

products = []
for index, row in rawdata.head(1000).iterrows():
    line = row['Activity.Description']
    if not (line is None):
        result = re.finditer(pattern, str(line), re.IGNORECASE)
        entities = []
        for match in result:
            train_tuple = (match.start(), match.end(), "PRODUCT")
            entities.append(train_tuple)
        if entities:
            products.append(f'("{line}", {{"entities": {entities}}})')

提取数据效果很好,但出于某种原因,代码在嵌套实体 arry 和数据集周围添加了不需要的 ':

TRAIN_DATA = ['("Followup for...", {"entities": ['(13, 22, "PRODUCT")']})', '("Brief discussion about ...", {"entities": ['(48, 60, "PRODUCT")']})']

我需要如何调整我的代码以提供以下格式的输出? - 删除每条记录周围的单引号(第 2 个字符和分隔 2 条记录的逗号前的 ' 并删除 'PRODUCT' 标签周围的反斜杠

TRAIN_DATA = [("Followup for...", {"entities": [(13, 22, "PRODUCT")]}), ("Brief discussion about ...", {"entities": ['(48, 60, "PRODUCT")]})]]

我也尝试使用元组,但反斜杠从覆盖实体移动到覆盖标签 (PRODUCT):

['("跟进...", {"实体": [(13, 22, 'PRODUCT')]})

非常感谢任何建议

在这一行

products.append(f'("{line}", {{"entities": {entities}}})')

您正在构建一个字符串,但您可能需要实际的数据结构:

products.append((line, {"entities": entities}))