Так что сейчас у меня есть действительно простая программа, которая возьмет предложение и найдет предложение в данной книге, которое наиболее семантически похоже и распечатает это предложение вместе со следующими несколькими предложениями.
import spacy
nlp = spacy.load('en_core_web_lg')
#load alice in wonderland
from gutenberg.acquire import load_etext
from gutenberg.cleanup import strip_headers
text = strip_headers(load_etext(11)).strip()
alice = nlp(text)
sentences = list(alice.sents)
mysent = nlp(unicode("example sentence, could be whatever"))
best_match = None
best_similarity_value = 0
for sent in sentences:
similarity = sent.similarity(mysent)
if similarity > best_similarity_value:
best_similarity_value = similarity
best_match = sent
print sentences[sentences.index(best_match):sentences.index(best_match)+10]
Я хочу получить лучшие результаты, сказав SpaCy игнорировать стоп-слова при выполнении этого процесса, но я не знаю, как лучше всего это сделать.Как я мог бы создать новый пустой список и добавить каждое слово, которое не является стоп-словом, к списку
for sentence in sentences:
for word in sentence:
if word.is_stop == 'False':
newlist.append(word)
, но мне пришлось бы сделать его более сложным, чем приведенный выше код, потому что мне пришлось бы сохранитьцелостность исходного списка предложений (потому что индексы должны были бы быть такими же, если бы я хотел распечатать полные предложения позже).Кроме того, если бы я сделал это таким образом, мне пришлось бы запустить этот новый список списков через SpaCy, чтобы использовать метод .smagnity.
Мне кажется, что должен быть лучший способ сделать это,и я очень ценю любые рекомендации.Даже если нет лучшего способа, чем добавлять каждое безостановочное слово в новый список, я был бы признателен за любую помощь в создании списка списков, чтобы индексы были идентичны исходной переменной «предложения».
Большое спасибо!