2013-01-16 19 views
15

में एन-ग्राम आवृत्ति की गणना करना मेरे पास निम्न कोड है। मुझे पता है कि मैं आवृत्ति गणना से कम कोलेक्शन को फ़िल्टर करने के लिए apply_freq_filter फ़ंक्शन का उपयोग कर सकता हूं। हालांकि, मुझे नहीं पता कि एक दस्तावेज में सभी एन-ग्राम टुपल्स (मेरे मामले में द्वि-ग्राम) की आवृत्तियों को कैसे प्राप्त किया जाए, इससे पहले कि मैं तय करता हूं कि फ़िल्टरिंग के लिए कौन सी आवृत्ति सेट की गई है। जैसा कि आप देख सकते हैं कि मैं nltk collocations क्लास का उपयोग कर रहा हूं।पाइथन nltk

import nltk 
from nltk.collocations import * 
line = "" 
open_file = open('a_text_file','r') 
for val in open_file: 
    line += val 
tokens = line.split() 

bigram_measures = nltk.collocations.BigramAssocMeasures() 
finder = BigramCollocationFinder.from_words(tokens) 
finder.apply_freq_filter(3) 
print finder.nbest(bigram_measures.pmi, 100) 
+3

आप 'finder.ngram_fd.viewitems की कोशिश की है()'? –

+0

धन्यवाद finder.ngram_fd.viewitems() काम करता है! – Rkz

उत्तर

10

finder.ngram_fd.viewitems() समारोह काम करता है

24

NLTK अपनी ही bigrams generator है, साथ ही एक सुविधाजनक FreqDist() समारोह के साथ आता है।

f = open('a_text_file') 
raw = f.read() 

tokens = nltk.word_tokenize(raw) 

#Create your bigrams 
bgs = nltk.bigrams(tokens) 

#compute frequency distribution for all the bigrams in the text 
fdist = nltk.FreqDist(bgs) 
for k,v in fdist.items(): 
    print k,v 

एक बार जब आप BiGrams और आवृत्ति वितरण तक पहुंच प्राप्त कर लेते हैं, तो आप अपनी आवश्यकताओं के अनुसार फ़िल्टर कर सकते हैं।

उम्मीद है कि मदद करता है।

+0

यह मुझे 'फ़ाइल' /usr/local/lib/python3.6/site-packages/nltk/util.py ", लाइन 467, ngrams में छोड़ देता है जबकि n> 1: टाइप एरर: '>' के बीच समर्थित नहीं है 'str' और 'int'' – m02ph3u5

0
from nltk import FreqDist 
from nltk.util import ngrams  
def compute_freq(): 
    textfile = open('corpus.txt','r') 

    bigramfdist = FreqDist() 
    threeramfdist = FreqDist() 

    for line in textfile: 
     if len(line) > 1: 
     tokens = line.strip().split(' ') 

     bigrams = ngrams(tokens, 2) 
     bigramfdist.update(bigrams) 
compute_freq() 
+0

के उदाहरण बस' if 'के बाद इंडेंट डालें; पाइथन 3.5 अगर कोड काम करता है – Vahab

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^