Я пишу ниже код для вычисления вероятности различных слов и предложений, но он дает мне одно и то же число, даже если я изменил текст, который я оцениваю, я не знаю почему! (Я скопировал полный код, чтобы вы могли скопировать и запуститьэто.)
from nltk.util import bigrams
from nltk.lm.preprocessing import pad_both_ends
from nltk.util import everygrams
from nltk.lm import Vocabulary
from nltk.lm import MLE
from nltk.lm import Laplace
from nltk.lm.preprocessing import flatten
import codecs
import re
from nltk.lm.preprocessing import padded_everygram_pipeline
from nltk.lm.preprocessing import padded_everygrams
from nltk.tokenize import word_tokenize
from nltk import ngrams
s = "The Internet may be overflowing with new technology but crime in cyberspace is still of the old-fashioned variety."\
"The National Consumers League said Wednesday that the most popular scam on the Internet was the pyramid scheme, in which early investors in a bogus fund are paid off with deposits of later investors."
max_len_ngram = 2;
paddedLine =list(pad_both_ends(word_tokenize(s),n=2));
vocab = Vocabulary(word_tokenize(s),1);
train = [everygrams(paddedLine,max_len = max_len_ngram)];
lm = MLE(max_len_ngram);
lm.fit(train,vocab);
print(lm.score("WHY?"));
независимо от того, что текст insdie score()
, он всегда возвращает 0.03636363636363636, и это абсолютно неправильно!как я могу это исправить?как я могу набрать полное предложение, а не слово?