У меня есть набор отзывов клиентов, и я хочу выделить редкие слова, которые для меня являются словами, которые встречаются менее чем в 1% корпусных документов.
У меня уже есть рабочее решение, но оно слишком медленно для моего сценария:
# Review data is a nested list of reviews, each represented as a bag of words
doc_clean = [['This', 'is', 'review', '1'], ['This', 'is', 'review', '2'], ..]
# Save all words of the corpus in a set
all_words = set([w for doc in doc_clean for w in doc])
# Initialize a list for the collection of rare words
rare_words = []
# Loop through all_words to identify rare words
for word in all_words:
# Count in how many reviews the word appears
counts = sum([word in set(review) for review in doc_clean])
# Add word to rare_words if it appears in less than 1% of the reviews
if counts / len(doc_clean) <= 0.01:
rare_words.append(word)
Кто-нибудь знает более быструю реализацию для этого? Кажется, что для каждого отдельного слова в каждом отдельном отзыве требуется много времени.
Спасибо заранее и наилучшие пожелания,
Marcus