如何使用ngram和给定的测试集从“数据集”中查找下一个单词。

2024-10-01 09:29:26 发布

您现在位置:Python中文网/ 问答频道 /正文

给定一个语料库和测试集。 语料库包含10000个完整的句子。 测试集包含100个不完整的句子,每个句子有3个连续的单词。 我想用ngrams训练语料库并预测测试集的下一个单词。在

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格式 Top five lines of a test set


Tags: oftextinlenresult单词句子gram