标记来自不同嵌套词典的句子
Labeling sentences from different nested dictionaries
我创建了一个函数来从嵌套文件中的特定键中提取句子。现在我想在这个函数中包含一个标签 每次涉及到新字典时。
每次出现 HEADER 值都标志着一个新故事的开始。所以我想标记属于同一个故事的句子。并区分那些不同的。
数据如下所示:
sentences = [{'c': 'HEADER', 'a1': {'a': 'Opus dei, la vie en rose.', 'x': 'l'}},
{'d': 'm', 'a1': {'a': 'Ipsum lorem, Suspendisse posuere.', 'x': '4'}},
{'c': 'j', 'a1': {'a': 'Nulla elementum, augue fringilla tincidunt ullamcorper.'}},
{'c':'h', 'b': 'p'},
{'a1': {'a': 'Ut sollicitudin mauris sem, ut ultricies ante accumsan dictum.'}},
{'c': 'HEADER', 'a1': {'a': 'NEW Opus dei, la vie en rose.', 'x': 'l'}},
{'d': 'm', 'a1': {'a': 'NEW Ipsum lorem, Suspendisse posuere.', 'x': '4'}},
{'c': 'j', 'a1': {'a': 'NEW Nulla elementum, augue fringilla tincidunt ullamcorper.'}},
{'c':'h', 'b': 'p'},
{'a1': {'a': 'NEW Ut sollicitudin mauris sem, ut ultricies ante accumsan dictum.'}}]
函数
def prhases_and_labels(data):
a1 = [d for d in data if 'a1' in d]
text = []
for i in a1:
text.append(i['a1']['a'])
df = pd.DataFrame({'text': text})
return df
我想获得的结果(标签在新列中)
您可以遍历记录并在每次 c
值为 HEADER
时递增标签。
sentences = [{'c': 'HEADER', 'a1': {'a': 'Opus dei, la vie en rose.', 'x': 'l'}},
{'d': 'm', 'a1': {'a': 'Ipsum lorem, Suspendisse posuere.', 'x': '4'}},
{'c': 'j', 'a1': {'a': 'Nulla elementum, augue fringilla tincidunt ullamcorper.'}},
{'c':'h', 'b': 'p'},
{'a1': {'a': 'Ut sollicitudin mauris sem, ut ultricies ante accumsan dictum.'}},
{'c': 'HEADER', 'a1': {'a': 'NEW Opus dei, la vie en rose.', 'x': 'l'}},
{'d': 'm', 'a1': {'a': 'NEW Ipsum lorem, Suspendisse posuere.', 'x': '4'}},
{'c': 'j', 'a1': {'a': 'NEW Nulla elementum, augue fringilla tincidunt ullamcorper.'}},
{'c':'h', 'b': 'p'},
{'a1': {'a': 'NEW Ut sollicitudin mauris sem, ut ultricies ante accumsan dictum.'}}]
def prhases_and_labels(data):
label = 0
res = {'text':[], 'label': []}
for record in data:
if 'a1' in record:
line = record['a1']['a']
if record.get('c') == 'HEADER':
label += 1
res['text'].append(line)
res['label'].append(label)
return pd.DataFrame(res)
输出:
>>> prhases_and_labels(sentences)
text label
0 Opus dei, la vie en rose. 1
1 Ipsum lorem, Suspendisse posuere. 1
2 Nulla elementum, augue fringilla tincidunt ullamcorper. 1
3 Ut sollicitudin mauris sem, ut ultricies ante accumsan dictum. 1
4 NEW Opus dei, la vie en rose. 2
5 NEW Ipsum lorem, Suspendisse posuere. 2
6 NEW Nulla elementum, augue fringilla tincidunt ullamcorper. 2
7 NEW Ut sollicitudin mauris sem, ut ultricies ante accumsan dictum. 2
我创建了一个函数来从嵌套文件中的特定键中提取句子。现在我想在这个函数中包含一个标签 每次涉及到新字典时。
每次出现 HEADER 值都标志着一个新故事的开始。所以我想标记属于同一个故事的句子。并区分那些不同的。
数据如下所示:
sentences = [{'c': 'HEADER', 'a1': {'a': 'Opus dei, la vie en rose.', 'x': 'l'}},
{'d': 'm', 'a1': {'a': 'Ipsum lorem, Suspendisse posuere.', 'x': '4'}},
{'c': 'j', 'a1': {'a': 'Nulla elementum, augue fringilla tincidunt ullamcorper.'}},
{'c':'h', 'b': 'p'},
{'a1': {'a': 'Ut sollicitudin mauris sem, ut ultricies ante accumsan dictum.'}},
{'c': 'HEADER', 'a1': {'a': 'NEW Opus dei, la vie en rose.', 'x': 'l'}},
{'d': 'm', 'a1': {'a': 'NEW Ipsum lorem, Suspendisse posuere.', 'x': '4'}},
{'c': 'j', 'a1': {'a': 'NEW Nulla elementum, augue fringilla tincidunt ullamcorper.'}},
{'c':'h', 'b': 'p'},
{'a1': {'a': 'NEW Ut sollicitudin mauris sem, ut ultricies ante accumsan dictum.'}}]
函数
def prhases_and_labels(data):
a1 = [d for d in data if 'a1' in d]
text = []
for i in a1:
text.append(i['a1']['a'])
df = pd.DataFrame({'text': text})
return df
我想获得的结果(标签在新列中)
您可以遍历记录并在每次 c
值为 HEADER
时递增标签。
sentences = [{'c': 'HEADER', 'a1': {'a': 'Opus dei, la vie en rose.', 'x': 'l'}},
{'d': 'm', 'a1': {'a': 'Ipsum lorem, Suspendisse posuere.', 'x': '4'}},
{'c': 'j', 'a1': {'a': 'Nulla elementum, augue fringilla tincidunt ullamcorper.'}},
{'c':'h', 'b': 'p'},
{'a1': {'a': 'Ut sollicitudin mauris sem, ut ultricies ante accumsan dictum.'}},
{'c': 'HEADER', 'a1': {'a': 'NEW Opus dei, la vie en rose.', 'x': 'l'}},
{'d': 'm', 'a1': {'a': 'NEW Ipsum lorem, Suspendisse posuere.', 'x': '4'}},
{'c': 'j', 'a1': {'a': 'NEW Nulla elementum, augue fringilla tincidunt ullamcorper.'}},
{'c':'h', 'b': 'p'},
{'a1': {'a': 'NEW Ut sollicitudin mauris sem, ut ultricies ante accumsan dictum.'}}]
def prhases_and_labels(data):
label = 0
res = {'text':[], 'label': []}
for record in data:
if 'a1' in record:
line = record['a1']['a']
if record.get('c') == 'HEADER':
label += 1
res['text'].append(line)
res['label'].append(label)
return pd.DataFrame(res)
输出:
>>> prhases_and_labels(sentences)
text label
0 Opus dei, la vie en rose. 1
1 Ipsum lorem, Suspendisse posuere. 1
2 Nulla elementum, augue fringilla tincidunt ullamcorper. 1
3 Ut sollicitudin mauris sem, ut ultricies ante accumsan dictum. 1
4 NEW Opus dei, la vie en rose. 2
5 NEW Ipsum lorem, Suspendisse posuere. 2
6 NEW Nulla elementum, augue fringilla tincidunt ullamcorper. 2
7 NEW Ut sollicitudin mauris sem, ut ultricies ante accumsan dictum. 2