我需要從文本中獲得最受歡迎的ngrams。 Ngrams長度必須從1到5個單詞。Python與Ngrams的頻率列表
我知道如何獲得bigrams和trigrams。例如:
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可以得到不同長度的ngram。例如,我可以得到ngram,長度從1到5.
v = CountVectorizer(analyzer=WordNGramAnalyzer(min_n=1, max_n=5))
但是WordNGramAnalyzer現在已被棄用。我的問題是:如何從我的文本中獲得N個最佳單詞搭配,搭配長度從1到5.還需要獲取此搭配/ ngrams的FreqList。
我可以用nltk/scikit嗎?我需要從一個文本中獲得各種長度的ngrams組合?
例如使用NLTK bigrams和trigrams,其中我的卦包括我的位圖或我的卦在很多情況下都是大4克的一部分。例如:
bitgrams:你好我 卦:你好我的名字
我知道如何從卦排除二元語法,但我需要更好的解決方案。
如果你不想TF-IDF正常化實施只需使用:'CountVectorizer(min_n = 1,max_n = 5).fit_transform(list_of_strings)'。 – ogrisel 2012-08-01 21:23:35
但接下來我該做什麼?我如何獲得ngram頻率? – twoface88 2012-08-02 06:05:11
@ twoface88:'v = CountVectorizer(min_n = 1,max_n = 5); X = v.fit_transform([「一天一蘋果讓醫生遠離」]); zip(v.inverse_transform(X)[0],X.A [0])'。請注意,停用詞和單字符標記將在默認情況下被刪除。 – 2012-08-02 08:53:13