Я пытаюсь удалить стоп-слова из строки, но я хочу достичь условия, чтобы именованные объекты в строке не удалялись.
import spacy
nlp = spacy.load('en_core_web_sm')
text = "The Bank of Australia has an agreement according to the Letter Of Offer which states that the deduction should be made at the last date of each month"
doc = nlp(text)
Если я проверяю именованные объекты в тексте, я получаю следующее
print(doc.ents)
(The Bank of Australia, the Letter Of Offer, the last date of each month)
Обычный способ удаления стоп-слов будет выглядеть следующим образом:
[token.text for token in doc if not token.is_stop]
['Bank',
'Australia',
'agreement',
'according',
'Letter',
'Offer',
'states',
'deduction',
'date',
'month']
Обычный способ полностью убирает смысл, необходимый для моей задачи.Я хотел бы сохранить именованные объекты.
Я попытался добавить именованные объекты с тем же списком.
list1 = [token.text for token in doc if not token.is_stop]
list2 = [str(a) for a in doc.ents]
list1 + list2
['Bank',
'Australia',
'agreement',
'according',
'Letter',
'Offer',
'states',
'deduction',
'date',
'month',
'The Bank of Australia',
'the Letter Of Offer',
'the last date of each month']
Есть ли другой подход к этому?