Сравните пролеты в списке и верните метку, если она похожа - PullRequest
0 голосов
/ 14 апреля 2020

Я хочу создать список меток, соответствующих словам в предложении

sentence="I am a healthy boy who lives in Florida"
subject= "I am a healthy boy"

сначала я делю:

sen = sentence.split(" ")
subj = subject.split(" ")

, затем пытаюсь повторить.

tokens=[]
tokensStartIndex = 0
for i in range(0,len(sen)):
 ...

Я хочу получить это в результате:

sentence = "I am a healthy boy who lives in Florida"
labels   = [sub sub sub sub sub 0 0 0 0]

и как мне повторить это для кадра данных предложения и темы столбцов?

1 Ответ

0 голосов
/ 15 апреля 2020

Это можно сделать довольно легко с помощью регулярных выражений.

sentence="I am a healthy boy who lives in Florida"
subject= "I am a healthy boy"

Создание выражения

abc = '({})'.format('|'.join(re.escape(y) for y in sorted(subject, key=len, reverse=True)))

Повторение выражения по предложению

xyz = (re.sub(abc, r"sub" , sent) for sent in sentence)

Создание нового списка и фильтра

new = [new_sentence for old_sentence, new_sentence in zip(sentence, xyz) if old_sentence != new_sentence]

новый

вуаля!

...