Как рассчитать вхождение указанного c предложения в текст? - PullRequest
0 голосов
/ 08 апреля 2020

Как я могу использовать приведенный ниже код, чтобы вычислить, как часто биграмма появляется в example_txt? Прямо сейчас я думаю, что возвращаюсь, появляется ли 'order' в общей переменной. Я хотел бы рассчитать процентную долю биграммы в общей сложности.

Итак, учитывая, что мы делаем биграмму общей суммы, это результат: [('order', 'потребление'), ('потребление', 'это '), (' is ',' strong '), (' strong ',' for '), (' for ',' q4 ')] означает, что вывод моего кода должен быть равен 0,20, так как «прием заказов» там 1 / 5.


from nltk import ngrams

example_txt = "order intake is strong for q4"
bi_gram = 'order intake'

#these turns example_txt and bi_gram into bigrams
n_gram_text = ngrams(example_txt.split(), 2)
n_gram = ngrams(bi_gram.split(), 2)


#this is used for extracintg and appending to total and bigram
total =[]
bigram = []
for e in n_gram_text:
    total.append(e)
for i in n_gram:
    bigram.append(i)

#this is supposed to return if bigram exists in total.
for k in bigram:
    for total in k:
        if t in total:
            print('yes')
            print(k)
        else:
            print(t)

Редактировать: новый заголовок

1 Ответ

0 голосов
/ 08 апреля 2020

Вы можете использовать Счетчик из модуля коллекций:

from collections import Counter
bigram = ('order', 'intake')
counter_total = Counter(total)
perc_bigram = counter_total[bigram] / sum(counter_total.values())
perc_bigram

Вывод:

0.2
...