Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:从字符串索引中获取标记和NER标记_Python - Fatal编程技术网

Python:从字符串索引中获取标记和NER标记

Python:从字符串索引中获取标记和NER标记,python,Python,我有一个字符串,以及字典中该字符串的标记信息 string = "Steve works in Meta Graphics" tags = {"tags": [(0, 4, "PER"), (15, 27, "ORG")]} 我需要使用这些信息并生成以下字符串表示形式 string_tag_tuples = [("Steve", "PER"), ("works&qu

我有一个字符串,以及字典中该字符串的标记信息

string = "Steve works in Meta Graphics"
tags = {"tags": [(0, 4, "PER"), (15, 27, "ORG")]}
我需要使用这些信息并生成以下字符串表示形式

string_tag_tuples = [("Steve", "PER"), ("works", "O"), ("in", "O"), ("Meta Graphics", "ORG")]

labels
中提供的信息更容易获取令牌及其相关标记,但是,如何将
O
标记分配给字符串中的其他令牌并获得所需的输出?

我想这是关于标记的

各种LIB使用它们自己的方案,我使用spacy,它有BILOU标签来实现这一点。
我想这是关于标签的

各种LIB使用它们自己的方案,我使用spacy,它有BILOU标签来实现这一点。

我会分两步来做。首先,识别文本的标记部分,并将其他部分存储为字符串。然后,将存储为字符串的所有内容转换为标记为
“0”
的元素

该程序的输出为:

First step: [('Steve', 'PER'), ' works in ', ('Meta Graphics', 'ORG')]
Second step: [('Steve', 'PER'), ('works', '0'), ('in', '0'), ('Meta Graphics', 'ORG')]

我会分两步来做。首先,识别文本的标记部分,并将其他部分存储为字符串。然后,将存储为字符串的所有内容转换为标记为
“0”
的元素

该程序的输出为:

First step: [('Steve', 'PER'), ' works in ', ('Meta Graphics', 'ORG')]
Second step: [('Steve', 'PER'), ('works', '0'), ('in', '0'), ('Meta Graphics', 'ORG')]

这是另一个解决方案

string = "Steve works in Meta Graphics"
tags = {"tags": [(0, 4, "PER"), (15, 27, "ORG")]}
根据起始索引对标签进行排序并查找缺失的索引,在上述情况下
5-14
将丢失索引

tags_ = tags['tags']

sorted_ = sorted(tags_, key=lambda x : x[0], reverse=True)

gaps = []
for i, j in zip(sorted_, sorted_[1:]):
    gaps.append((j[1] + 1, i[0] - 1, 'O'))

tags_.extend(gaps)

# print(tags_) [(0, 4, 'PER'), (15, 27, 'ORG'), (5, 14, 'O')]
最后,使用拼接提取和更新标记结果检查排序索引

tag_result = []

for s, e, tag in sorted(tags_, key=lambda x: x[0]):
    if tag == "O":
        tag_result.extend([(v, "O") for v in string[s:e].strip().split()])
    else:
        tag_result.append((string[s:e], tag))


这是另一个解决方案

string = "Steve works in Meta Graphics"
tags = {"tags": [(0, 4, "PER"), (15, 27, "ORG")]}
根据起始索引对标签进行排序并查找缺失的索引,在上述情况下
5-14
将丢失索引

tags_ = tags['tags']

sorted_ = sorted(tags_, key=lambda x : x[0], reverse=True)

gaps = []
for i, j in zip(sorted_, sorted_[1:]):
    gaps.append((j[1] + 1, i[0] - 1, 'O'))

tags_.extend(gaps)

# print(tags_) [(0, 4, 'PER'), (15, 27, 'ORG'), (5, 14, 'O')]
最后,使用拼接提取和更新标记结果检查排序索引

tag_result = []

for s, e, tag in sorted(tags_, key=lambda x: x[0]):
    if tag == "O":
        tag_result.extend([(v, "O") for v in string[s:e].strip().split()])
    else:
        tag_result.append((string[s:e], tag))