Category: дети

Category was added automatically. Read all entries about "дети".

К вопросу о языковой креативности

В роли креативщика - Миша, 8 лет:

Мама: - Что хочешь на завтрак?
Миша: - Яйца в лепешку

После уточняющего вопроса выяснилось, что (в его картине мира) есть яйца всмятку, есть вкрутую, а есть в лепешку - яичница-глазунья.

Посимвольная генерация ответа в чатботе - иногда это похоже на детский лепет, реально

Просматриваю результаты валидации для нейросетевой модели генерации ответа чатбота по заданной предпосылке (факту) и вопросу. Что бросилось в глаза - много ошибок в "детском стиле", когда примерно подобран ритмический рисунок или чередование гласных и согласных ответа, причем длина слов передана достаточно правильно. Дети обычно так и говорят, когда еще не вполне овладели языковыми средствами, но вырабатываемое миндалиной ожидание негативных последствий ошибки не выросло до блокирующего уровня.

Кстати, касательно чередования гласных и согласных не грех вспомнить, что марковские процессы возникли 100 с лишним лет назад именно как результат изучения статистики чередования букв в Евгении Онегине, о чем есть даже небольшой абзац в вики:

Сам Марков для иллюстрации своих результатов исследовал зависимость в чередовании гласных и согласных в первых главах «Евгения Онегина» и «Детских годов Багрова-внука»

Далее - избранные результаты валидации с ошибками генерации. Premise - это найденная релевантная предпосылка, question - заданный вопрос, model answer - требуемый эталонный ответ, pred. answer - сгенерированный сеткой ответ:
Collapse )

"Детский" режим генерации ответа в чатботе

Есть у детей такая особенность - на вопрос, на который они не знают правильного ответа, часто отвечают не "не знаю", а выдумывают ответ, примерно похожий на правильный, чтобы не уронить самооценку. Например, спросите его про время на стрелочных часах, а он не умеет еще читать их, и будет лепить произвольные часы и минуты, главное, чтобы подходило под "общую концепцию времени".

Именно это приходит на ум, когда вижу в логе валидации нейросетевой модели генерации ответа такие записи ("True answer" это ожидаемый эталонный ответ, "Model answer" это выдача модели.):
Collapse )

Зачем нужна декомпозиция оценки сентимента на полярность и упоминание аспекта (и еще facets)

1. Если мы имеем отдельные алгоритмы для вычисления полярности и для определения упоминания аспекта в предложении, можно без особых модификаций кода сделать замечательный парсинг строки запроса в векторную форму и затем поиск отзывов под запрос.

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

Collapse )

PS:

Collapse )

Кластеризация предложений в векторном пространстве

Если мы для каждого предложения умеем вычислять вектор фиксированной длины, то становится доступна и кластеризация. Именно кластеризация позволяет быстро проверить важную гипотезу,  что существует некоторое относительно небольшое количество предложений (словосочетаний, синтагм), описывающих некоторые типичные ситуации окружающей действительности и деятельности субъекта в этой действительности. Наличие таких текстовых архетипов позволит улучшить работу алгоритма семантического и синтаксического анализа текста, но об этом поговорим в отдельной главе.
Collapse )

Кто такой "бокренок" в "глокой куздре"?

Анализируем слово "бокренка" в предложении "Глокая куздра штеко будланула бокра и курдячит бокрёнка" (см. пред. запись по теме).
Аспект первый - морфологический.
Вот ТОП-10 слов, ближайших по косинусу к аффиксу "~енка":
Collapse )

Бинго! Модель правильно ухватила и морфологический аспект "винительный падеж единственного числа одушевленного существительного", и даже семантический "ребенка".

Новые эксперименты с continuous word representation

Закончился пересчет вероятностной модели по полному корпусу (~205 тысяч предложений). POS Tagger заработал почти в полную силу, да вдобавок после чисток в движке процесс пошел явно бойчее, примерно по 500 Мб в сутки. Поэтому я начал с 0 формирование лемматизированного корпуса текстов, которые обрабатывает word2vec.

Утилита для лемматизации корпуса лежит тут: https://github.com/Koziev/Word2Vec/tree/master/Text2Lemmas. Это простая консольная прожка, написаная на C# и использующая solarix_grammar_dictionary.dll для частеречной разметки.

Чтобы было удобнее оценивать кластеризацию визуально, я добавил в toolchain еще одну утилитку для визуализации результатов: https://github.com/Koziev/Word2Vec/tree/master/PrintClusters. Она читает список кластеров из word2vec, читает использованный корпус для составления частот лемм. Затем выводит кластеры построчно с сортировкой слов по убыванию частоты. В итоге, в начале каждого кластера видны самые частотные элементы, а всякий случайный мусор удачно копиться в хвостах.

На ~628 Мб корпусе результаты в целом такие же полосатые, как и раньше.

Под катом примеры "хороших" кластеров для эксперимента с 2000 классов и векторами размером 200. Список слов в каждом показанном кластере усечен, на самом деле их обычно несколько десятков-сотен. Первое число - это условный номер кластера.
Collapse )
Как можно заметить, глаголы, существительные, прилагательные и наречия идут вперемешку. К ним коварно примешиваются предлоги, хотя это выглядит явным артефактом.