Н_грам частоты питона НТЛК - PullRequest
       27

Н_грам частоты питона НТЛК

0 голосов
/ 10 октября 2019

Я хочу написать функцию, которая возвращает частоту каждого элемента в n-граммах данного текста. Помогите, пожалуйста. Я сделал этот код для подсчета частоты 2 грамма

код:

 from nltk import FreqDist
 from nltk.util import ngrams    
 def compute_freq():
     textfile = "please write a function"
     bigramfdist = FreqDist()
     threeramfdist = FreqDist()
     for line in textfile:
         if len(line) > 1:
             tokens = line.strip().split(' ')
             bigrams = ngrams(tokens, 2)
             bigramfdist.update(bigrams)
      return bigramfdist
  bigramfdist = compute_freq()

1 Ответ

0 голосов
/ 11 октября 2019

Я не вижу ожидаемый выходной раздел, поэтому я предполагаю, что это то, что может понадобиться.

import nltk

def compute_freq(sentence, n_value=2):

    tokens = nltk.word_tokenize(sentence)
    ngrams = nltk.ngrams(tokens, n_value)
    ngram_fdist = nltk.FreqDist(ngrams)
    return ngram_fdist

По умолчанию эта функция возвращает распределение частоты биграмм - например,

text = "This is an example sentence."
freq_dist = compute_freq(text)

Теперь freq_dist будет выглядеть так:

FreqDist({('is', 'an'): 1, ('example', 'sentence'): 1, ('an', 'example'): 1, ('This', 
'is'): 1, ('sentence', '.'): 1})

Отсюда вы можете напечатать ключи и значения примерно так:аргумент при вызове функции. Например,

freq_dist = compute_freq(text, n_value=3) #will give you trigram distribution

('example', 'sentence', '.') 1
('an', 'example', 'sentence') 1
('This', 'is', 'an') 1
('is', 'an', 'example') 1
...