Библиотека "Солнца"

Продолжаем разбор текста

Программирование и разработка игр

Пытаюсь научить программу вычленять сюжет. 

Когда написано - Герой украл диадему - это понятно.

Когда написано - Герой открыл сейф. Он украл диадему - тоже понятно, "он" относится к ближайшему предыдущему названию героя. 

А вот как понять из диалогов, что делал герой?

Пока вижу три варианта построения диалога:

Первый

Герой сидел в кресле.

- Я украл диадему – сказал он.

Второй

- Я украл диадему – сказал герой.

Третий:

- Герой, что вы делали? (или вообще любое обращение к герою). 

- Я украл диадему.

А вот тут надо объяснять программе, что такое обращение. Название героя, отделенное запятыми? Но тогда:

- Холмс, туман надвигается, - сказал Ватсон.

И:

- Вот что я вижу, - сказал Ватсон, - поместье Баскервилей, дворецкий, Холмс, туман надвигается, кухарка вышла через заднюю дверь – но собаки я не вижу.

И даже:

- Что вы видите, Ватсон? – спросил Мортимер.

- Холмс, туман надвигается...

Вроде тоже грамотно с точки зрения русского языка.

Еще сложный вариант:

Еще обращение:

- Вы распорядились, чтобы Артура освободили, папа?

- Нет, он украл диадему.

Как программа поймет, что украл диадему Артур, а не папа? Показать, что обращение –

- Вы, ...., существительное?

Но как тогда:

- Вы слышали, что Артур украл диадему, негодяй?

Как тут понять, что негодяй – это не обращение к тому, кто слышал?

А если изменить ситуацию, например, Холмс говорит с Мориарти, Мориарти говорит, что Артур хороший человек, а Холмс:

- Что вы его защищаете? Вы слышали, что Артур украл диадему, негодяй?

Тут "негодяй" - уже обращение к Мориарти. 

И как объяснить разницу?