дан корпус и тестовый набор.
корпус содержит 10000 полных предложений.
Тестовый набор содержит 100 неполных предложений, где каждое предложение состоит из 3 последовательных слов.
Я хочу обучить корпус, используя нграммы, и предсказать следующее слово для набора тестов.
text = 'dataset.txt'
# Order of the grams
n = 2
ngrams = {}
words = nltk.word_tokenize(text)
for i in range(len(words)-n):
gram = ' '.join(words[i:i+n])
if gram not in ngrams.keys():
ngrams[gram] = []
ngrams[gram].append(words[i+n])
currentGram = ' '.join(words[0:n])
result = currentGram
for i in range(30):
if currentGram not in ngrams.keys():
break
possibilities = ngrams[currentGram]
nextItem = possibilities[random.randrange(len(possibilities))]
result += ' '+nextItem
rWords = nltk.word_tokenize(result)
currentGram = ' '.join(rWords[len(rWords)-n:len(rWords)])
набор тестов в формате .csv
Лучшие пять строк тестового набора