Я думаю, что вы ищете Ngrams NLTK
from nltk import ngrams
text = "The room has max capacity of 800 people no smoking allowed no children above 12 yr old ..."
pairs = ngrams(text.split(), 2) # change the 2 here to however many words you want in each group
for pair in pairs:
print(pair)
> ('The', 'room')
('room', 'has')
('has', 'max')
('max', 'capacity')
('capacity', 'of')
('of', '800')
('800', 'people')
('people', 'no')
('no', 'smoking')
('smoking', 'allowed')
('allowed', 'no')
('no', 'children')
('children', 'above')
('above', '12')
('12', 'yr')
('yr', 'old')
('old', '...')
Надеюсь, это поможет
Edit:
Если вы собираетесь использовать TF-IDF, я могу порекомендовать sklearn.feature_extraction.text.TfidfVectorizer
с параметром ngram_range
. ngram_range=(2, 2)
даст вам пары, которые вы ищете, то есть вам не нужно использовать код выше перед рукой.