Мне нужно написать программу в NLTK, которая разбивает корпус (большую коллекцию файлов txt) на униграммы, битрамы, триграммы, четыреграммы и пятьграмм. Я уже написал код для ввода моих файлов в программу.
Входные файлы - 300.txt файлов, написанных на английском языке, и я хочу получить выход в виде Ngrams и особенно частоту.
Я знаю, что NLTK имеет модули Биграма и Триграмма: http://www.nltk.org/_modules/nltk/model/ngram.html
но я не настолько продвинутый, чтобы вводить их в мою программу.
input: txt файлы НЕ отдельные предложения
пример вывода:
Bigram [('Hi', 'How'), ('How', 'are'), ('are', 'you'), ('you', '?'), ('?', 'i'), ('i', 'am'), ('am', 'fine'), ('fine', 'and'), ('and', 'you')]
Trigram: [('Hi', 'How', 'are'), ('How', 'are', 'you'), ('are', 'you', '?'), ('you', '?', 'i'), ('?', 'i', 'am'), ('i', 'am', 'fine'), ('am', 'fine', 'and'), ('fine', 'and', 'you')]
Мой код до сих пор:
from nltk.corpus import PlaintextCorpusReader
corpus = 'C:/Users/jack3/My folder'
files = PlaintextCorpusReader(corpus, '.*')
ngrams=2
def generate(file, ngrams):
for gram in range(0, ngrams):
print((file[0:-4]+"_"+str(ngrams)+"_grams.txt").replace("/","_"))
for file in files.fileids():
generate(file, ngrams)
Любая помощь, что нужно сделать дальше?