텍스트에서 가장 많이 사용되는 ngram을 가져와야합니다. Ngrams 길이는 1 ~ 5 단어 여야합니다.파이썬 빈도가있는 Ngram 목록
나는 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을 얻을 수 있다는 것을 알았습니다. 예를 들어 I는 1에서 5
v = CountVectorizer(analyzer=WordNGramAnalyzer(min_n=1, max_n=5))
에 길이 ngrams 얻을 수 그러나 WordNGramAnalyzer 지금은 사용되지 않습니다. 내 질문입니다 : 어떻게 1에서 5에 collocations 길이와 내 텍스트에서 N 최고의 단어 collocations을 얻을 수 있습니다. 또한이 collocations/ngrams의 FreqList를 얻을 필요가 있습니다.
nltk/scikit으로 할 수 있습니까? 하나의 텍스트에서 다양한 길이의 ngram 조합을 가져와야합니까?
예를 들어 NLTK 바이 그램과 트라이 그램을 사용하면 트라이 그램에 내 비트 그램이 포함되는 많은 상황이 발생하거나 트라이 그램이 더 큰 4 그램의 일부가됩니다.
bitgrams : 안녕 내 괘 : 예를 들어 안녕 내 이름
내가 괘에서 bigrams을 제외하는 방법을 알고,하지만 난 더 나은 솔루션이 필요합니다. 0.14 scikit 배우기 때문에
를 사용하여 구현하고있는 후드 nltk.util.bigrams()와 nltk.util.trigrams에서 생각 http://nltk.org/_modules/nltk/util.html 보면 'CountVectorizer (min_n = 1, max_n = 5) .fit_transform (list_of_strings)'을 사용하면됩니다. – ogrisel
하지만 다음에 무엇을해야합니까? ngrams 주파수는 어떻게 얻습니까? – twoface88
@ twoface88 :'v = CountVectorizer (min_n = 1, max_n = 5); X = v.fit_transform ([ "하루에 사과를 가지고 의사를 계속 지냅니다]]); zip (v.inverse_transform (X) [0], X.A [0])'. 불용어와 1 문자 토큰은 기본적으로 제거됩니다. –