как найти следующее слово из набора данных, используя ngram с заданным набором тестов. - PullRequest
0 голосов
/ 02 ноября 2018

дан корпус и тестовый набор. корпус содержит 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 Лучшие пять строк тестового набора

1 Ответ

0 голосов
/ 06 ноября 2018

Я не уверен, что вы запрашиваете алгоритм, подходящий для этой задачи.

Вы можете предсказывать последовательности, используя Марковские модели .

В зависимости от того, сколько у вас данных, вы должны учитывать RNN , LSTM и GRU .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...