Я делаю проект NLP. Я сравниваю результаты моей системы с аннотированной наземной истиной, сопровождаемой набором данных. Результаты системы дают идентификатор смещения, основанный на номере символа. Тем не менее, основная правда - это номер строки и номер токена в зависимости от того, где он находится в строке. Например, рассмотрим эту основную истину:
m="lasix" 26:7 26:7
Здесь 26 относится к строке 26 корпуса, а 7 - к номеру токена в строке. я попытался преобразовать это число смещения в индекс символа, создав генератор индекса символа ниже.
def all_occurences(file, str):
initial = 0
file = file.replace('\n', ' ')
while True:
initial = file.find(str, initial)
if initial == -1: return
yield initial
initial += len(str)
Это иногда работает. НО, в основной аннотации к истине название лекарства может быть упомянуто только один раз, но на основании разума оно рассматривается как две сущности.
Например:
corpus = "motrin for pain and headache."
В этом случае, мотрины - это две отдельные личности:
m="motrin" 26:7 26:7, reason="pain"
m="motrin" 26:7 26:7, reason="headache"
Ясно, что в этом случае моя функция не работает, потому что она видит motrin один раз.
Любые предложения о том, как преобразовать смещение номера строки в смещение номера символа?
Спасибо!