Unigram - новый уровень мессенджеров
Unigram («униграмма») – это простая модель языка, которая разбивает текст на отдельные слова и считает вероятность каждого слова в тексте независимо от других слов. Другими словами, каждое слово рассматривается отдельно и не учитывается контекст, в котором оно используется.
Для того чтобы использовать unigram-модель в коде, необходимо выполнить несколько шагов:
1. Разбить текст на отдельные слова – это можно сделать с помощью метода split() в Python:
text = "This is an example of unigram model in natural language processing"
words = text.split()
print(words)
В результате выполнения этого кода будет выведен список слов из исходного текста:
['This', 'is', 'an', 'example', 'of', 'unigram', 'model', 'in', 'natural', 'language', 'processing']
2. Подсчитать количество вхождений каждого слова в тексте – это можно сделать с помощью словаря в Python:
word_count = {}
for word in words:
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1
print(word_count)
В результате выполнения этого кода будет выведен словарь, в котором для каждого слова из исходного текста хранится количество его вхождений:
{'This': 1, 'is': 1, 'an': 1, 'example': 1, 'of': 1, 'unigram': 1, 'model': 1, 'in': 1, 'natural': 1, 'language': 1, 'processing': 1}
3. Вычислить вероятность каждого слова в тексте – это можно сделать, разделив количество вхождений слова на общее количество слов в тексте:
word_prob = {}
total_words = len(words)
for word, count in word_count.items():
word_prob[word] = count / total_words
print(word_prob)
В результате выполнения этого кода будет выведен словарь, в котором для каждого слова из исходного текста хранится его вероятность:
{'This': 0.09090909090909091, 'is': 0.09090909090909091, 'an': 0.09090909090909091, 'example': 0.09090909090909091, 'of': 0.09090909090909091, 'unigram': 0.09090909090909091, 'model': 0.09090909090909091, 'in': 0.09090909090909091, 'natural': 0.09090909090909091, 'language': 0.09090909090909091, 'processing': 0.09090909090909091}
В результате выполнения всех этих шагов мы получили unigram-модель для исходного текста, которая позволяет вычислить вероятность любого текста, который будет написан на основе этой модели. Например, для текста «This is an example of natural language processing» вероятность будет вычисляться следующим образом:
new_text = "This is an example of natural language processing"
new_words = new_text.split()
new_prob = 1
for word in new_words:
if word in word_prob:
new_prob *= word_prob[word]
else:
new_prob = 0
print(new_prob)
В результате выполнения этого кода будет выведено число, которое показывает вероятность того, что данный текст был написан на основе unigram-модели для исходного текста.