У меня проблема с удалением дубликатов из списка - PullRequest
0 голосов
/ 17 июня 2020

Вероятно, у нас тут идиот. Я получаю список с помощью генераторов, и у меня проблемы с удалением дубликатов из моего списка обычным способом, используя set

import spacy
import textacy

nlp = spacy.load("en_core_web_lg")
text = ('''The Western compulsion to hedonism has made us lust for money just to show that we have it. Possessions do not make a man—man makes possessions. The Western compulsion to hedonism has made us lust for money just to show that we have it. Possessions do not make a man—man makes possessions.''')
doc = nlp(text)

keywords = list(textacy.extract.ngrams(doc, 1, filter_stops=True, filter_punct=True, filter_nums=False)) + list(textacy.extract.ngrams(doc, 2, filter_stops=True, filter_punct=True, filter_nums=False))

print(list(set(keywords)))

, результат содержит дубликаты:

[man, lust, makes possessions, man, Possessions, makes possessions, man makes, hedonism, man, money, compulsion, Western compulsion, man, possessions, man makes, compulsion, Possessions, Western compulsion, possessions, Western, makes, makes, lust, hedonism, Western, money]

1 Ответ

1 голос
/ 17 июня 2020

Это потому, что элементы в вашем списке не являются строками, поэтому они на самом деле не дублируются.

>>> type(keywords[0])
spacy.tokens.span.Span

Чтобы получить только повторяющиеся слова, вы можете использовать понимание словаря с их строковыми представлениями в качестве уникальных ключей, а затем просто извлеките объемные объекты с помощью .values():

uniques = list({keyword.__repr__(): keyword for keyword in keywords}.values())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...