Я просматриваю множество предложений и пытаюсь извлечь начальный и конечный индексы слова в данном предложении.
Например, ввод выглядит следующим образом:
«Это предложение написано на английском языке носителем английского языка».
И мне нужен диапазон слова «английский», который в данном случае равен: (30,37) и (50, 57).
Примечание. Мне указали на этот ответ (Получить позицию слова в предложении с пробелом)
Но этот ответ не решает мою проблему. Это может помочь мне получить начальный символ токена, но не конечный индекс.
Вся помощь приветствуется






Вы можете сделать это с помощью re в чистом питоне:
s = "This is a sentence written in english by a native English speaker."
import re
[(i.start(), i.end()) for i in re.finditer('ENGLISH', s.upper())]
#output
[(30, 37), (50, 57)]
Вы также можете сделать в пространстве:
import spacy
nlp=spacy.load("en_core_web_sm")
doc=nlp("This is a sentence written in english by a native English speaker.")
for ent in doc.ents:
if ent.text.upper()=='ENGLISH':
print(ent.start_char,ent.end_char)
Используя идею из ответа, на который вы ссылаетесь, вы можете сделать что-то вроде этого
from spacy.lang.en import English
nlp = English()
s = nlp("This is a sentence written in english by a native English speaker")
boundaries = []
for idx, i in enumerate(s[:-1]):
if i.text.lower() == "english":
boundaries.append((i.idx, s[idx+1].idx-1))
Отвечает ли это на ваш вопрос? Очень нубский вопрос для сопоставления слов и фраз Python