Я пытаюсь получить индексы начала / конца токена для диапазона, учитывая его смещение символов.
Я искал сообщений и решений (# 1264), но онине работать в моих случаях.Я потратил много времени на это, и я думаю, что это будет полезно для других!
У меня есть набор данных в формате:
Text, Pronoun_offset, Pronoun, A_offset, A, B_offset, B
A_offset - смещение символа начала диапазона A в тексте
СейчасЯ хочу получить начальный и конечный индексы маркеров диапазона A (или B или местоимения) в документе после токенизации Text
.
Первый случай:
Pronoun she
Pronoun-offset 272
A Melinda
A-offset 127
B Delia
B-offset 261
Во-первых, предположим, что мы хотим получить инклюзивные индексы токенов диапазона А, Delia
Мой план таков:
text = " A woman comes to Mel's shop to sell antiques from a house she's moving from after the death of her daughter (from an illness). Melinda very quickly discovers that the house is haunted by violent spirits after Ned gets hurt there-which doesn't go down well with Delia- and she realizes that the ghost of the little girl (Cassidy) is being trapped there."
nlp = spacy.load("en_core_web_sm", disable = ['vectors', 'textcat', 'tagger', 'parser', 'ner'])
doc = nlp(text)
char_offsets = [token.idx for token in doc]
token_len = len(self._spacy(A))
start_idx = char_offsets.index(A_offset)
end_idx = start_idx + token_len - 1
span = (start_idx, end_idx)
return tuple(span)
Этот возвращенный промежуток даст мне Delia-
вместо Delia
.Затем я делаю это:
suffix_re = re.compile(r'''-+$''')
nlp.tokenizer = Tokenizer(nlp.vocab, suffix_search=suffix_re.search)
Тогда он не может разделить Pauline's
на Pauline
и 's
для приговора
Зои Телфорд - сыграла полицейскогоподруга Саймона, Мэгги.Уволен Саймоном в последнем эпизоде сериала 1, после того как он переспал с Дженни, и больше его не видели.Фиби Томас сыграла Шерил Кэссиди, подругу Полины, а также ученицу 11-го класса в классе Саймона.Сбросил своего парня, следуя совету Саймона, после того, как у него не было с ней секса, но позже он понял, что это из-за того, что он ловил крабов у ее подруги Полины.
Pronoun her
Pronoun-offset 274
A Cheryl Cassidy
A-offset 191
B Pauline
B-offset 207
Второй случай: Непоследовательный раскол Затем я думаю о другом способе, я вставляю метку до и после интервала в текстовой строке.Метка похожа на @$A$@
Обратите внимание, что в начале и конце метки есть пробел.
Затем я найду метку каждого диапазона, а затем вычислю токениндексы промежутка
Для такого предложения
Рецензент Питер Траверс написал в «Роллинг Стоун», что «Стрип - в ее блестящем, соблазнительном лучшем виде - это специя, которая делаеттрюк для вкусной Джулии и Джулии. '' Точно так же Стефани Захарек из Салона пришла к выводу, что `` Стрип не играет Джулию Чайлд здесь, но что-то и более неуловимое и более правдивое - она играет нашу идею Джулии Чайлд. ''
Pronoun she
Pronoun-offset 305
A Streep
A-offset 215
B Julia Child
B-offset 236
Когда я не вставил матк, truthful--
будет размечен на truthful
и --
, что я и хочу.После того, как метка будет вставлена, truthful--
будет маркирован как truthful
Поскольку я проследил индекс токена результата токенизации, это не позволяет мне получить правильный индекс токена.
Не могли бы вы посмотреть на это?Я очень ценю вашу помощь!
Окружающая среда
spaCy version 2.0.12
Platform Linux-4.4.0-31-generic-x86_64-with-debian-stretch-sid
Python version 3.7.2
Models en