Ответ
N-грамма — это непрерывная последовательность из N элементов (токенов) в тексте. Элементами обычно являются слова или символы. N-граммы — фундаментальная концепция в статистическом анализе языка.
Типы N-грамм:
- Униграмма (1-gram): Отдельные слова.
["Я", "изучаю", "NLP"] - Биграмма (2-gram): Пары последовательных слов.
["Я изучаю", "изучаю NLP"] - Триграмма (3-gram): Тройки слов.
["Я изучаю NLP"]
Применение:
- Языковое моделирование: Предсказание следующего слова на основе предыдущих N-1 слов.
- Определение темы/жанра текста.
- Поиск и исправление опечаток.
- Построение простых чат-ботов.
Пример кода на Python с использованием NLTK:
from nltk import ngrams
from nltk.tokenize import word_tokenize
text = "Я изучаю обработку естественного языка."
tokens = word_tokenize(text, language='russian')
# Генерация биграмм
bigrams = list(ngrams(tokens, 2))
print(bigrams)
# Вывод: [('Я', 'изучаю'), ('изучаю', 'обработку'), ('обработку', 'естественного'), ...]
# Частотный анализ
from nltk.probability import FreqDist
freq_dist = FreqDist(bigrams)
print(freq_dist.most_common(3))
Ограничения: С ростом N резко увеличивается размер модели (проклятие размерности), а также падает вероятность встретить конкретную N-грамму в новых данных.