удаление слов из строк без изменения слов с помощью python spacy

#python #string #nlp #spacy

Вопрос:

Я использую spacy, у меня есть список предложений, из которых я хочу удалить стоп-слова и знаки препинания.

 for i in sentences_list: 
for token in docfile:
    if token.is_stop or token.is_punct and token.text in i[1]:
       i[1] = i[1].replace(token.text, '') 
print(sentences_list)
 

но это также влияет на слова, например, слово I является стоп-словом, поэтому слово big становится bg .

Комментарии:

1. Для записи, удаление стоп-слов и знаков препинания не поможет в современных моделях НЛП, вам не нужно делать это большую часть времени.

Ответ №1:

Вы можете использовать:

 " ".join([token.text for token in doc if not token.is_stop and not token.is_punct])
 

Вот демонстрационный пример кода:

 import spacy
nlp = spacy.load("en_core_web_sm")
sentences_list = ["I like big planes.", "No, I saw no big flames."]
new_sentence_list = []
for i in sentences_list:
    doc = nlp(i)
    new_sentence_list.append(" ".join([token.text for token in doc if not token.is_stop and not token.is_punct]))
 

Это new_sentence_list сейчас:

 ['like big planes', 'saw big flames']