Почему язык труден для машин

Прежде чем строить модели, важно понять врага: что именно в языке мешает машине понимать его «в лоб».

Неоднозначность — свойство языка, при котором одно и то же слово или предложение можно понять несколькими способами в зависимости от контекста.

Язык не похож на язык программирования

В Python x = 2 + 2 всегда означает одно и то же. Естественный язык устроен иначе: значение слова зависит от соседей, от темы разговора, от того, кто говорит и зачем. Машина, которая видит лишь цепочку символов, должна как-то восстановить этот скрытый смысл. Разберём главные сложности.

1. Лексическая неоднозначность (омонимы)

Одно слово — несколько значений. «Ключ» — это и от двери, и родник, и нотный знак. «Лук» — растение или оружие. Человек выбирает значение по контексту мгновенно; модель должна научиться этому из данных.

senses = {
    "ключ": ["от двери", "родник", "нотный знак", "к разгадке"],
    "лук": ["растение", "оружие для стрельбы"],
}
for word, meanings in senses.items():
    print(word, "->", len(meanings), "значения:", ", ".join(meanings))

Вывод:

ключ -> 4 значения: от двери, родник, нотный знак, к разгадке
лук -> 2 значения: растение, оружие для стрельбы

2. Синтаксическая неоднозначность

Целое предложение может разбираться по-разному. Классика: «Казнить нельзя помиловать» — смысл меняется от запятой. Или «Я видел человека с биноклем»: бинокль у меня или у человека? Структура предложения не всегда однозначна, и это влияет на смысл.

3. Контекст и связи между предложениями

Смысл слова часто определяется не соседним словом, а тем, что было сказано абзацем выше. «Он положил книгу на стол. Она была тяжёлой.» — что было тяжёлым, книга или стол? Чтобы это понять, модели нужна память о контексте — именно отсюда вырастет потребность в рекуррентных сетях и внимании в конце курса.

4. Идиомы, ирония, культурный фон

«Бить баклуши» не про баклуши, «золотые руки» не про золото. Ирония вообще переворачивает буквальный смысл: «Ну отличная погодка» под дождём означает обратное. Буквальное чтение здесь проваливается.

5. Морфологическое богатство

В русском у одного слова десятки форм: «стол, стола, столу, столом, столы…». Для машины это разные строки, хотя для человека — одно слово. Если просто сравнивать строки, «бежал» и «бежит» окажутся «разными словами».

forms = ["бежать", "бежит", "бежал", "бегут", "побежали"]
# наивно: считаем формы разными, если строки не равны
unique_as_strings = len(set(forms))
print("Форм:", len(forms))
print("Разных строк для машины:", unique_as_strings)
print("А по смыслу слово одно: 'бежать'")

Вывод:

Форм: 5
Разных строк для машины: 5
А по смыслу слово одно: 'бежать'

6. Длинный хвост и редкие слова

В любом языке несколько слов встречаются очень часто, а огромное число слов — крайне редко (закон Ципфа). Модель почти не видит редких слов на обучении, а новые слова (неологизмы, имена, опечатки) появляются постоянно. Это называют проблемой «out-of-vocabulary» — слов, которых нет в словаре модели.

Зачем нам это знать

Каждая сложность из списка породила конкретный приём в NLP. С морфологией борются стемминг и лемматизация. С редкими словами — подсловная токенизация (BPE). С контекстом — рекуррентные сети, а затем внимание и трансформеры. Дальше в курсе мы будем встречать эти решения и каждый раз сможем сказать, какую именно трудность языка они снимают.

Итог

  • Язык неоднозначен на уровне слов и предложений — значение зависит от контекста.
  • Идиомы и ирония ломают буквальное прочтение.
  • Богатая морфология плодит много форм одного слова.
  • Редкие и новые слова — постоянная головная боль (out-of-vocabulary).
  • Эти трудности и определяют развитие методов NLP — от стемминга до трансформеров.
Проверьте себя
1. Что такое лексическая неоднозначность?
AКогда предложение можно разобрать по структуре несколькими способами
BКогда одно слово имеет несколько значений (например, «ключ»)
CКогда в тексте есть опечатки
DКогда слово встречается очень редко
2. Почему богатая морфология русского языка осложняет наивное сравнение строк?
AСлова становятся слишком длинными для памяти
BРазные формы одного слова («бежал», «бежит») машина считает разными словами
CМорфология ускоряет обучение, но снижает точность
DИз-за неё нельзя привести текст к нижнему регистру
3. Что означает проблема out-of-vocabulary?
AМодель не умеет работать с числами
BВ тексте слишком много стоп-слов
CПоявляются слова, которых нет в словаре модели (редкие, новые, опечатки)
DСловарь модели слишком большой и не помещается в память
Поддержать проект