books_over10['Keywords'] = ""
r = Rake() # Uses stopwords for english from NLTK, and all puntuation characters.
for index, row in books_over10.iterrows():
a=r.extract_keywords_from_text(row['bookTitle'])
c=r.get_ranked_phrases() # To get keyword phrases ranked with scores highest to lowest.
books_over10.at[index, 'Keywords'] = c
books_over10.head()
Я использую приведенный выше код, чтобы обработать все строки и извлечь ключевые слова из каждой строки из столбца bookTitle, а затем вставить их в виде списка в новый столбец с именем Ключевые слова в той же строке. Вопрос в том, есть ли более эффективный способ сделать это без итерации по всем строкам, потому что это занимает много времени. Любая помощь будет оценена. Заранее спасибо!
Решение от Changming:
def extractor(row):
a=r.extract_keywords_from_text(row)
return r.get_ranked_phrases() # To get keyword phrases ranked with scores highest to lowest.
r = Rake() # Uses stopwords for english from NLTK, and all puntuation characters.
books_over10['Keywords'] = books_over10['bookTitle'].map(lambda row : extractor(row))