Я пытаюсь создать программу для расчета вероятностей биграмм. Мой первый шаг - разработать комбинации предложений.
Каждое из этих предложений начинается с <s>
и заканчивается </s>
. Допустим, мое примерное предложение было <s> my name is python </s>
, мой результат должен быть (у меня есть p тегов, потому что я определю вероятность после)
p(my | <s>)
p(name | my )
p (is | name)
p (python | is)
p (</s> | python)
Но вместо этого я получу такой результат:
Counter({('<', 's'): 1, ('s', '>'): 1, ('>', 'my'): 1, ('my', 'name'): 1, ('name', 'is'): 1, ('is', 'python'): 1, ('python', '<'): 1, ('<', '/s'): 1, ('/s', '>'): 1})
Как бы я разделил <s>
и </s>
как отдельное слово, а не разделял его?
Мой код:
text = "<s> my name is python </s>"
token = nltk.word_tokenize(text)
bigrams = ngrams(token,2)
print(Counter(bigrams))
Редактировать
Допустим, у меня есть текстовый файл
<s> a a b b c c </s> <s> a c b c </s> <s> b c c a b </s>
Затем я открываю этот текстовый файл, выполняю с ним следующую операцию и сохраняю его в виде списка.
temp = re.split("\s+",line.rstrip('\n'))
bigramText.append(temp)
Итак, теперь в моем списке:
[['<s>', 'a', 'a', 'b', 'b', 'c', 'c', '</s>'], ['<s>', 'a', 'c', 'b', 'c', '</s>'], ['<s>', 'b', 'c', 'c', 'a', 'b', '</s>']]
Теперь на этом этапе я хочу выполнить вычисления, чтобы получить вероятности биграммы. Я не знаю, поможет ли мой первоначальный вопрос получить результат, но по сути я пытаюсь выяснить, сколько раз встречаются эти комбинации, т. Е. Вам нужно проверить, сколько раз буква появляется рядом с другой