Мой начальный фрейм данных:
text n_gram_len
0 This is the best text 2
1 This is some other best text 1
2 Well this is something else 3
Желаемый вывод:
n_gram
0 [This is, is the, the best, best text]
1 [This, is, some, other, best, text]
2 [Well this is, this is something, is something...
Мой код:
from nltk import ngrams
df['n_gram'] = df[['text', 'n_gram_len']].apply(lambda x: [' '.join(x) for x in ngrams(x.text.split(), x.n_gram_len)], axis=1)
Проблема в том, что у меня есть фрейм данных с 100000 строк в нем и длиной, на которую нужно разделить. Мой код работает в течение 50 секунд. Есть ли лучший способ сделать это или повысить эффективность текущего кода.
Как только я делаю n-граммы, я создаю больше значений. Я использую список в качестве структуры данных для хранения n-грамм. Есть ли какой-нибудь другой способ, которым я мог бы хранить, чтобы сократить время обработки?