Мне нужно получить самые популярные ngrams из текста. Длина Nграмм должна составлять от 1 до 5 слов.
Я знаю, как получить битраграммы и триграммы. Например:
bigram_measures = nltk.collocations.BigramAssocMeasures()
finder = nltk.collocations.BigramCollocationFinder.from_words(words)
finder.apply_freq_filter(3)
finder.apply_word_filter(filter_stops)
matches1 = finder.nbest(bigram_measures.pmi, 20)
Однако, я узнал, что scikit-learn может получать ngrams с различной длиной. Например, я могу получить ngrams длиной от 1 до 5.
v = CountVectorizer(analyzer=WordNGramAnalyzer(min_n=1, max_n=5))
Но WordNGramAnalyzer теперь устарел. Мой вопрос: как я могу получить N лучших словосочетаний из моего текста с длиной совпадений от 1 до 5. Также мне нужно получить FreqList из этих collocations/ngrams.
Могу ли я сделать это с помощью nltk/scikit? Мне нужно получить комбинации ngrams с различной длиной от одного текста?
Например, с использованием биграмм и триграмм NLTK, где многие ситуации, в которых мои триграммы включают мои битграммы, или мои триграммы являются частью более крупных 4 грамм. Например:
bitgrams: hello my триграммы: привет мое имя
Я знаю, как исключить биграммы из триграмм, но мне нужны лучшие решения.