Генератор текстов отзывов
Разработка алгоритма автоматического создания отзывов на русском языке с использованием лексико-синтаксических шаблонов. Процесс создания текста при помощи цепей Маркова. Принцип работы Томита-парсера. Применение автоматических генераторов текстов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 27.09.2016 |
Размер файла | 150,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
Автоматическое создание текстов - одна из распространённых задач обработки естественного языка. Генераторы текстов, как правило, применяются в тех случаях, когда к качеству текста не предъявляется жёстких требований, а его написание вручную занимает много времени или является неинтересной задачей - например, составление текстовых сводок данных или написание текстов для поисковой оптимизации веб-страниц.
Среди алгоритмов создания текстов можно выделить два основных подхода: методы, основанные на правилах, позволяют добиться высокого качества текстов, но требуют знания правил языка и являются трудоёмкими в разработке, в то время как методы, основанные на машинном обучении, зависят только от обучающих данных, но чаще допускают грамматические и семантические ошибки в создаваемых текстах.
Наиболее частым подходом к задаче автоматического создания текстов является применение цепей Маркова - вероятностной модели, не зависящей от правил языка и не требующей лингвистических знаний. Модель Маркова относится к методам машинного обучения.
В основанных на правилах подходах к автоматическому созданию текстов применяются лексико-синтаксические шаблоны. Этот метод изучен в применении к текстам на английском языке, наиболее часто анализируемом в публикациях по компьютерной лингвистике. В случае русскоязычных текстов лексико-синтаксические шаблоны уже применяются для таких задач, как извлечение именованных сущностей, но не для создания текстов: работ, описывающих применение шаблонов в генераторах текстов на русском языке, на данный момент не опубликовано.
В данной работе рассматривается генератор текстов отзывов на русском языке, разработанный с применением лексико-синтаксических шаблонов, и его сравнение с другой реализацией генератора отзывов, в основе которой лежат цепи Маркова.
В качестве материала для генератора текстов выбраны отзывы на утюги, доступные на сайтах Яндекс.Маркет и irecommend.ru. Такой выбор был сделан по нескольким причинам: во-первых, относительная простота лексической и синтактической структуры текста отзыва делает удобным применение метода шаблонов, который требуется исследовать. Во-вторых, полученная база сгенерированных отзывов может иметь практическое применение как в поисковой оптимизации, так и в задачах из области opinion mining - таких, как автоматическое выявление поддельных отзывов - что представляется интересным для дальнейшей работы.
1. Обзорно-постановочная часть
1.1 Обзор работ по теме исследования
Поскольку алгоритмы автоматического создания текстов на английском языке широко используются в различных программных системах, существует значительное количество англоязычных публикаций с описаниями таких алгоритмов. Приведём краткий обзор статей, наиболее релевантных теме.
Наиболее распространённым подходом к автоматическому созданию текстов, не зависящим от языка, являются цепи Маркова. Алгоритм, основанный на их применении, представлен в работе Sam Zhang [1]. Работа, проведённая автором, включает реализацию генератора англоязычных текстов на языке программирования Python. В качестве обучающей выборки для модели использованы различные коллекции текстов на английском языке, включая корпус WordNet. Чтобы повысить точность алгоритма, автор использует модель семантического сходства в дополнение к вероятностному подходу.
Ещё одним популярным алгоритмом машинного обучения, применяемым для создания текстов на естественном языке, является использование условных случайных полей. Пример использования данного подхода в разработке генератора англоязычных текстов представлен в работе Wei Lu et al. [3]. Согласно авторам, применение условных случайных полей позволяет эффективным образом генерировать предложения на естественном языке, опираясь на их семантические представления. Предложенный в статье алгоритм состоит из двух этапов. Первый этап включает себя семантический анализ, позволяющий каждому предложению автоматически сопоставить его смысловое представление. На втором этапе происходит само создание текста на основе полученных семантических представлений.
Пример подхода к автоматическому созданию текстов на основе лексико-синтаксических шаблонов описан в работе Kees van Demeter et al. [1] Авторы приводят теоретические основы данного метода и сравнивают его с другими подходами, не основанными на лингвистических знаниях. В статье утверждается, что и основанные на шаблонах, и стандартные генераторы текстов обладают свойством полноты по Тьюрингу. Это означает, что все рекурсивно перечислимые языки могут быть порождены при помощи таких генераторов.
Понятие лексико-синтаксического шаблона в применении к текстам на русском языке представлено в работе Е.И. Большаковой и др. [2]. Авторы приводят определение лексико-синтаксического шаблона как структурного образца языковой конструкции, отображающего её свойства, и представляют свою разработку - язык LSPL, позволяющий описывать текст при помощи шаблонов.
Один из примеров применения автоматических генераторов текстов описан в работе S.G. Sripada et al. [5]. Проект, представленный авторами, относится к системам преобразования данных в текст. Такие системы - один из основных источников спроса на генераторы текстов. Программный комплекс, описанный в статье, принимает в качестве входных параметров автоматически предсказанные данные о погоде и на их основе составляет тексты прогнозов. По словам авторов, автоматическое создание прогнозов погоды - второе по популярности приложение алгоритмов создания текстов на естественном языке.
1.2 Цели и задачи работы
Цель работы - реализовать генератор отзывов, основанный на лексико-синтаксических шаблонах, и сравнить его со стандартным генератором на основе цепеи? Маркова.
В работе над проектом можно выделить следующие задачи:
1. Собрать корпус отзывов с сайтов irecommend.ru и Яндекс.Маркет
2. Разработать шаблоны для основного алгоритма
3. Реализовать генератор отзывов, основанный на шаблонах
4. Реализовать генератор отзывов с применением цепей Маркова и обучить его на собранных данных
5. Сравнить результаты работы двух генераторов
В данном проекте применяется метод автоматического создания текстов, основанный на правилах. Лексико-синтаксические шаблоны текстов задаются вручную и используются алгоритмом, чтобы определить структуру генерируемых предложений. Для подстановки слов в предложения алгоритм использует словарь, сформированный на основе корпуса реальных отзывов. В качестве вспомогательного инструмента для создания словаря применяется Томита-парсер - программный продукт от компании Яндекс. При помощи данного инструмента из текстов отзывов, полученных на этапе скачивания, извлекаются характеристики утюгов и связанные с ними глаголы и прилагательные, которые впоследствии используются для построения текстов по шаблонам.
В современном мире непрерывно растёт количество информации, что приводит к увеличению спроса на автоматические средства её обработки. Программные средства, разработанные для автоматического создания текстов, создаются с целью автоматизировать однообразный и не требующий творческого подхода процесс написания таких вспомогательных текстов, как краткие описания, сводки, материалы для индексации веб-страниц поисковыми механизмами и др. Однако естественный язык сложно формализовать, и в работе алгоритмов могут возникать неточности, из-за которых автоматически сгенерированные тексты уступают по качеству созданным человеком. Исследования в области автоматического создания текстов, направленные на разработку новых алгоритмов и улучшение существующих, позволяют минимизировать количество таких неточностей и получить возможность генерировать тексты, полностью соответствующие правилам языка и не содержащие смысловых ошибок. Задачи таких исследований особенно актуальны для русского языка, который содержит более сложные грамматические конструкции, но при этом реже исследуется компьютерными лингвистами, чем английский.
1.3 Новизна и практическая ценность работы
Задача автоматического создания текстов хорошо изучена для английского языка. Для русских текстов количество описанных алгоритмов значительно меньше, и на данный момент не существует русскоязычных публикаций с описанием генератора текстов, основанного на лексико-синтаксических шаблонах (метод используется только для анализа текста).
Практическое применение генератора отзывов, представленного в работе, возможно в таких задачах, как поисковая оптимизация веб-страниц. Также при небольших модификациях предложенного алгоритма возможно его использование для создания не только отзывов, но и других текстов, что расширяет границы применимости генератора.
2. Теоретическая часть
2.1 Цепи Маркова
Цепь Маркова с дискретным временем - это стохастическая система, которая может быть представлена в виде конечного автомата - набора состояний и переходов между ними. Каждому из переходов присвоено значение вероятности таким образом, что для каждого из состояний сумма вероятностей перехода равна единице. Важным свойством цепи Маркова является тот факт, что распределение вероятностей перехода из каждого состояния зависит только от самого состояния, но не от предшествующих ему. Таким образом, цепь Маркова моделирует случайный процесс «без памяти».
Цепи Маркова могут использоваться в качестве вероятностной модели естественного языка. [1] Состояниями конечного автомата могут быть или отдельные слова, или N-граммы - последовательности из N слов, идущих подряд в тексте. Применение данной модели к задачам автоматического создания текстов относится к методам машинного обучения.
Процесс создания текста при помощи цепей Маркова состоит из двух основных этапов. На первом из них модель обучается при помощи корпуса - коллекции текстов. Процесс обучения включает в себя вычисление вероятностей переходов: для этого вычисляется частота встречаемости последовательных пар (или (N+1)-грамм) слов в текстах корпуса. На втором этапе создания текста выбирается исходное состояние построенного конечного автомата и затем при помощи генератора псевдослучайных чисел совершаются переходы к следующим состояниям, каждое из которых добавляет следующую N-грамму в генерируемый текст. Процесс перехода повторяется, пока не будет достигнута желаемая длина текста. Точность алгоритма зависит от выбранного значения N и от количества текстов в корпусе.
Для наглядности приведём пример схемы цепи Маркова, построенной по входному тексту. Удачный пример представлен в статье [7], где для построения цепи использовался фрагмент текста песни группы The Smiths «How Soon Is Now»:
«I am the son
and the heir
of a shyness that is criminally vulgar
I am the son and heir
of nothing in particular».
Рис. 1. Пример цепи Маркова [7]
Для русского и других языков цепь составляется аналогичным образом: важны не значения слов в тексте, а их порядок и частота. Вместо русскоязычного примера выбрана иллюстрация из статьи [7], поскольку для получения цепи с множественными переходами потребовался бы более длинный текст, и схема получилась бы более громоздкой.
2.2 Лексико-синтаксические шаблоны
Лексико-синтаксические шаблоны позволяют задавать языковые конструкции. Шаблон состоит из логической структуры и семантического описания. Использование лексико-синтаксических шаблонов в задаче создания текстов на естественном языке относится к основанным на правилах методам и требует лингвистических знаний. [4, 2] В данной работе лексико-синтаксическим шаблоном является схема предложения, состоящая из типов слов. Пример шаблона, который используется в алгоритме, представленном в данной работе: схема вида «property person verb», которой соответствует фрагмент отзыва «утюг мне понравился».
2.3 Предложенный алгоритм
В основе алгоритма, разработанного в рамках проекта, лежит основанный на правилах (rule-based) подход к обработке текстов, скомбинированный с элементами машинного обучения: шаблоны предложений строятся на основе прописанных вручную правил, а для сопоставления им слов в процессе создания текста используются данные, извлечённые из реальных отзывов при помощи Томита-парсера.
Шаги алгоритма:
0. Вручную создаются лексико-синтаксические шаблоны предложений
1. Составляется список характеристик модели
2. Из реальных отзывов извлекаются глаголы и прилагательные при характеристиках
3. Формируется текст: слова подбираются в соответствии с шаблонами и с использованием данных, полученных на шагах 1-2
4. Полученный текст обрабатывается таким образом, что все соседние словоформы становятся грамматически согласованными друг с другом
2.4 Принцип работы Томита-парсера
В основе Томита-парсера лежит расширенный алгоритм LR-разбора (GLR - Generalized Left-to-right Rightmost parsing), предложенный Masaru Tomita в 1984 году [6] и позволяющий анализировать входную последовательность в условиях неоднозначности трактовок, часто возникающей при обработке текстов на естественном языке.
Чтобы применить Томита-парсер в своём проекте, пользователь задаёт конфигурационный файл, словари ключевых слов, корневой словарь и формальные грамматики, на основе которых будет проводиться разбор входного текста. Также у парсера есть функция извлечения фактов, но она не применяется в данной работе. [8]
При запуске Томита-парсера на первом этапе происходит распознавание ключевых слов (в данном проекте ими являются характеристики модели утюга: слова «утюг», «подошва», «парогенератор» и др.). Затем из полученных слов выделяются те, которые встречаются в описанных пользователем грамматиках, и после этого происходит GLR-разбор цепочки слов, за которым следует интерпретация полученного дерева разбора.
2.5 Схемы лексико-синтаксических шаблонов
Систему шаблонов, используемую в алгоритме, можно представить в виде ориентированного графа. Генерируемое предложение начинается в служебной вершине с меткой root. Далее на каждом шаге случайным образом с равной вероятностью выбирается одна из следующих (смежных с текущей) вершин, и в соответствии с её меткой подбирается слово из заданного до запуска алгоритма словаря. Генератор заканчивает строить предложение, когда оказывается в вершине, у которой нет исходящих рёбер. Ниже приведён граф лексико-синтаксических шаблонов, которые использовались в работе.
Рис. 2. Схема лексико-синтаксических шаблонов
В первых версиях проекта граф был деревом, и каждый путь от корня до листа соответствовал одной из схем предложения, отмеченных цифрами в метках вершин. Позднее было решено связать две последние ветки циклом: предложения получались слишком короткими, и такое изменение графа позволило добавлять однородные члены, чтобы сделать отзывы более разнообразными и близкими к естественной речи.
Примеры отзывов, полученных при обходе графа по различным путям:
1: Утюг мне понравился.?
2: Я купила утюг. Маму разочаровал парогенератор.
3: Вес небольшой.?
4: Удобная ручка.
3+4: Утюг качественный, металлическая подошва.
2.6 Ограничения алгоритма
Представленный в данной работе алгоритм имеет ряд ограничений. Перечислим основные из них и приведём возможные методы решения при дальнейшей работе:
Таблица 1
Ограничение |
Пояснение |
Возможные методы решения |
|
Ограниченный набор схем предложений в шаблонах |
Для удобства отладки алгоритма в проекте использованы шаблоны, представляющие только четыре базовые схемы предложений. Поскольку в русском языке возможных схем намного больше (даже в таких несложных текстах, как отзывы), сгенерированные тексты выглядят однообразными по структуре |
Решить проблему можно как используя подход на основе правил - для этого необходимо вручную задать больше различных схем - так и при помощи машинного обучения, применив средства для автоматического синтаксического разбора к достаточно большому корпусу текстов и сохранив полученные схемы предложений |
|
Нет согласования между разными предложениями |
При запуске алгоритма генерируется одно предложение. Если создавать длинный текст, он получится бессвязным |
Задача согласования предложений представляется более сложной, чем задача увеличения числа схем в шаблонах. Одним из способов её решения может быть доработка шаблонов таким образом, что одному пути от начальной до тупиковой вершины в графе шаблонов будет соответствовать не одно предложение, как в текущей версии генератора, а несколько согласованных между собой предложений. |
3. Практическая часть
3.1 Программная реализация
Курсовой проект написан на языке Python и состоит из нескольких частей: в него входят скрипты для автоматического скачивания отзывов, реализация цепей Маркова, построение графа лексических шаблонов и его применение к созданию текстов. Для скачивания отзывов использованы библиотеки grab и BeautifulSoup, для согласования форм слов при использовании лексических шаблонов - pymorphy2.
Этапы работы программы, генерирующей отзывы на основе шаблонов:
1. На основе заданных вручную правил строится граф шаблонов. Он представлен в виде структуры dictionary («словарь»), где ключи соответствуют вершинам, а значения - спискам рёбер, исходящих из каждой вершины. Каждой вершине присваивается идентификатор, состоящий из типа слова, соответствующего вершине, и номера пути обхода графа, на котором она находится. Пример: verb_4 - глагол на четвёртом пути.
2. При помощи библиотеки BeautifulSoup разбирается файл PrettyOutput.html, полученный после запуска Томита-парсера и содержащий словосочетания, извлечённые им из входных данных
3. На основе полученных словосочетаний создаётся словарь - лексический запас генератора. Он устроен аналогично графу шаблонов с той разницей, что ключами являются идентификаторы вершин графа (типы слов), а значениями - списки слов, которые можно добавить в предложение, находясь в вершине-ключе
4. Генерируется текст. Чтобы получить каждое предложение, происходит следующая процедура:
4.1. Начинается обход графа шаблонов в стартовой вершине с пометкой root. Создаётся пустой список, в который будут записываться слова
4.2. Случайным образом выбирается следующая вершина. Если ей соответствует пометка end, то обход завершен
4.3. Из словаря случайным образом выбирается слово, соответствующее пометке текущей вершины, и помещается в список
4.4. Повторяется шаг 4.2
4.5. Список со словами итеративно просматривается, и для соседних пары слов запускается процедура грамматического согласования
4.6 Список преобразуется в строку и подаётся на выход.
Шаги 1-3 необходимы только при первом запуске генератора или при изменении файла PrettyOutput.html. Граф отзывов и словарь можно сохранить (например, при помощи встроенной библиотеки pickle, позволяющей записывать в файлы бинарные структуры данных) и использовать, запуская алгоритм с шага 4.
3.2 Данные, извлеченные из реальных отзывов
Чтобы построить словарь для генератора текстов, при помощи Томита-парсера из собранного корпуса отзывов были извлечены словосочетания, состоящие из характеристик утюга (перечисленных в списке ключевых слов) вместе с прилагательными или глаголами. Приведём примеры таких словосочетаний, чтобы дать более полное представление о работе генератора.
Таблица 2
характеристика + прилагательное |
характеристика + глагол |
|
новый утюг |
оставлять накипь |
|
прорезиненная ручка |
выбирать утюг |
|
отличный утюг |
утюг нагрелся |
|
старый утюг |
подошва цеплялась |
|
меньшая мощность |
подавать пар |
|
длинный шнур |
провод не перекручивался |
|
очумелая ручка (пример неточности интерпретации: в оригинале отзыва упоминались «очумелые ручки», а не ручка утюга) |
утюг не разочаровал |
|
нержавеющая подошва |
утюг решил (это не неточность, а реальная фраза из отзыва) |
|
классическая мощность (спорное сочетание, но оно действительно было в одном из отзывов) |
накипь собирается |
|
большой резервуар |
шнур досаждал |
|
продвинутая подошва |
утюг умер |
Видим, что даже при верной интерпретации текста парсером возможны случаи необычных словоупотреблений, которые встречаются в исходных текстах и оказываются частью словарного запаса генератора, в дальнейшем вызывая недоумение пользователей при его работе. Источник этого явления - особенность сайта irecommend.ru, на котором отзывы часто выступают как средство самовыражения и несут не только информационную, но и развлекательную функцию, принимая черты художественных текстов. Если при использовании генератора отзывов по каким-либо причинам требуется, чтобы тексты на выходе были полностью серьёзными, это стоит учесть на этапе обучения генератора. В данном проекте такой задачи не было, поэтому словосочетания, подобные описанным выше, никак не фильтруются - и попадают в выходные данные относительно редко благодаря их небольшому проценту среди всех словосочетаний входного корпуса.
4. Результаты
4.1 Примеры сгенерированных текстов
Генератор отзывов на основе шаблонов подвергался многочисленным изменениям в процессе разработки. На первых этапах не было согласования и пунктуации, и предложения на выходе получались максимально непохожими на грамотную речь.
Примеры курьёзных высказываний ранней версии генератора:
* «я утюг» (Самые первые слова при запуске, после которых работа приобрела неофициальное название «Исследование говорящих утюгов»);
* «парогенератор муж начал накипь я служил шнур я был ручка лучший утюг такой накипь» (Похоже, что генератор пытался поведать историю о семейной драме. Длина текста обусловлена тем, что на этом этапе граф был ближе по структуре к цепям Маркова: из вершин, которые впоследствии стали тупиковыми, выходили рёбра, ведущие обратно в начало предложения);
* «я есть вес я был подошва» (Удачно подобран стихотворный размер, но в задачи проекта это не входит).
После наблюдений за работой первой версии генератора в алгоритм были внесены следующие изменения:
* Добавлено грамматическое согласование соседних слов при помощи библиотеки pymorphy2. Это повысило грамотность получаемых текстов, но остались случаи, когда слова, которые нужно согласовать, не стоят на соседних позициях в тексте. Разбор таких случаев - одна из возможных задач для дальнейшей работы;
* Структура предложений стала более жёсткой, и граф шаблонов приобрёл вид, описанный в п. 3.5 данной работы;
* Добавлено множество, содержащее так называемые стоп-слова - слова, часто встречающиеся в текстах и не несущие смысловой нагрузки («такой», «этот», «сей» и др.). С его помощью генератор предотвращает появление неинформативных характеристик («этот утюг», «такая подошва») в создаваемых отзывах;
* Добавлена проверка сочетаемости слов: для каждого случайно сгенерированного словосочетания программа проверяет, встречалось ли оно во входных данных.
В текущей версии генератора предложения стали более осмысленными. Приведём несколько примеров:
* «Кабель идеальный, утюг недорогой, парогенератор обычный.»
* «Ручка никакая. Длинный шнур»
* «Добротный утюг, ручка советская, обычный утюг.»
* «Мне понравился шнур.»
* «Утюг родителям понравился.»
* «Утюг отличный, ручка удобная.»
* «Хороший шнур, провод чудесный.»
* «Резервуар большой. Шнур длинный.»
* «Утюг хороший, замечательный утюг.»
* «Ручка удобная, пар хороший.»
* «Приличный утюг.»
* «Подошва отличная. Мощность большая.»
Видим, что теперь отдельные предложения в большинстве случаев выглядят как фрагменты реальных отзывов. Однако при этом отсутствует согласование между разными предложениями: если настроить генератор для создания более объёмных текстов, они получатся практически нечитаемыми. Таким образом, практическое применение генератора допустимо для таких задач, как поисковая оптимизация (в этих случаях тексты анализируются автоматически, и их логическая связность не имеет большого значения), но на данном этапе невозможно для создания объёмных и качественных текстов, предназначенных для чтения пользователями. Впрочем, стоит отметить, что в случае генератора отзывов задача создания текстов для чтения людьми представляется неэтичной: пользователи, читая отзывы, рассчитывают на опыт реальных потребителей, который поможет им сделать вывод о товаре, в то время как оптимизация поисковой выдачи не приводит к обману конкретных читателей, пусть и позволяет в какой-то степени манипулировать общественным мнением.
Для более полной информации о проекте приведём также примеры текстов, сгенерированных при помощи алгоритма на основе цепей Маркова. Код генератора практически полностью заимствован из статьи «How to fake a sophisticated knowledge of wine with Markov Chains» [7]. Генератор на основе цепей Маркова обучен на тех же данных, из которых извлекались словосочетания для составления шаблонов. Чтобы минимизировать различия в длине выходных данных двух генераторов, тексты в обучающем корпусе были разбиты на отдельные предложения.
Примеры результатов работы генератора на основе цепей Маркова:
* «Я в диком восторге, включила пар на максимум.»
* «А еще он иногда выключается, и не пользуемся!»
* «Шнур длинный, это удобно, но уже привыкла.»
* «Долгого знакомства с бабушкой он не стоит.»
* «Производитель включил в утюг воду из крана.»
* «Этот утюг очень симпатичный.»
* «Розетка европейская, так что если жесткая вода, то нужно разводить водопроводную с дистиллированной водой.»
* «Очень удобное отверстие для воды, ну в принципе хороший утюг за приемлемую цену.»
* «Тяжёлый и это очень удобно.»
* «В комплекте идет стаканчик для воды очень маленький.»
* «Сломался неожиданно старый утюг и я ему благодарна за дельное предложение.»
* «Автоматическая подача пара регулируется.»
Полученные предложения разнообразны по структуре и на первый взгляд похожи на реальные фрагменты отзывов, но часто содержат смысловые ошибки, что создаёт комический эффект при внимательном чтении. Таким эффектом пользуется популярное приложение «Генератор статусов ВКонтакте», в основе которого также лежат цепи Маркова. Если же рассматривать применение данной реализации алгоритма к задаче поисковой оптимизации, то можно сделать вывод, что сгенерированные алгоритмом отзывы также эффективны для индексации поисковыми роботами, но содержат меньше упоминаний характеристик модели на единицу текста, за счёт чего несколько проигрывают текстам.
4.2 Сравнение генераторов
Таблица 3
Свойства генератора |
Генератор на основе шаблонов |
Генератор на основе цепей Маркова |
|
Нарушение грамматических правил |
Внутри предложения возможно только при ошибках в реализации. При достаточно полном разборе случаев согласования отдельные предложения в выходных данных являются грамматически правильными. Но согласование предложений между собой в данной версии не предусмотрено |
Возможно из-за неоднозначности трактовок многих языковых конструкций |
|
Зависимость от размера и разнообразия входных данных |
Выражена для лексики, но не для грамматики. Структура предложений определена шаблонами, а словарный запас генератора пополняется при обучении на входных данных |
Выражена и для лексики, и для грамматики: единственным источником для построения марковской цепи является входной корпус текстов |
|
Нарушение семантической сочетаемости |
Встречалось в ранних версиях генератора (примеры: «длинный утюг», «керамическая инструкция»). В текущей версии от таких ситуаций защищает проверка согласования: словосочетания, встреченные в обучающем корпусе, заносятся в множество допустимых, и при генерации текста проверяется, есть ли текущее словосочетание в этом множестве. Побочным эффектом проверки является тот факт, что она усиливает зависимость от входных данных и уменьшает разнообразие генерируемых текстов |
Может встречаться внутри предложения. Пример: «Сломался неожиданно старый утюг и я ему благодарна за дельное предложение.» |
|
Разнообразие языковых конструкций |
Низкое в текущей версии генератора. При добавлении новых схем предложений в систему шаблонов можно повысить разнообразие, приблизив тексты по качеству к реальным отзывам. Это одна из возможных задач для дальнейшей работы |
Высокое при достаточном размере обучающей выборки |
алгоритм синтаксический генератор текст
По итогам проведенной работы можно сделать следующие выводы:
1. Генератор отзывов на основе лексико-синтаксических шаблонов позволяет получать грамматически корректные предложения, подобные фрагментам реальных отзывов
2. Согласование между отдельными предложениями в сгенерированных текстах отсутствует, поэтому перед применением к созданию объёмных связных текстов алгоритм требует доработки
3. В задачах создания текстов для последующей автоматической обработки (таких, как поисковая оптимизация) предложенный алгоритм обладает теми же возможностями, что и стандартный генератор на основе цепей Маркова
4. Количество грамматических и семантических ошибок в текстах, сгенерированных при помощи лексико-синтаксических шаблонов, меньше, чем в текстах, сгенерированных при помощи цепей Маркова
Заключение
В ходе работы над проектом были выполнены следующие задачи:
1. Разработана первая версия алгоритма автоматического создания отзывов на русском языке с использованием лексико-синтаксических шаблонов
2. Реализованы краулеры, позволяющие автоматически собирать отзывы с сайтов irecommend.ru и Яндекс.Маркет
3. Собран корпус отзывов на утюги. В ходе сбора данных возникли проблемы из-за предусмотренной на сайтах защиты от автоматического парсинга, поэтому корпус содержит не все доступные отзывы, но может использоваться в задачах анализа и обработки текстов
4. Описаны грамматики для Томита-парсера, позволяющие извлекать из отзывов характеристики утюгов и соответствующие им прилагательные и глаголы
5. Реализован и протестирован генератор отзывов на основе разработанного алгоритма
6. Проведено сравнение результатов работы генераторов на основе шаблонов и на основе цепей Маркова.
Задачи для дальнейшей работы:
1. Увеличить количество схем предложений в шаблонах, используемых генератором
2. Добавить согласование между предложениями
3. Реализовать генератор текстов на основе условных случайных полей [2] и сравнить его с реализацией генератора, описанного в работе
4. Реализовать генератор текстов на основе рекуррентных нейронных сетей [4] и сравнить его с описанным в работе. Предполагается, что при достаточном количестве данных в обучающей выборке нейронная сеть даст не менее точный результат, чем генератор на основе шаблонов.
Список использованных источников
1. Sam Zhang. 2009. Natural Language Generation with Markov Chains and Grammar. Computer Systems Lab, 2009-2010
2. Большакова Е.И. и др. Лексико-синтаксические шаблоны в задачах автоматической обработки текстов //Труды межд. конф. Диалог. - 2007. - С. 70-75.
3. Wei Lu, Hwee Tou Ng, Wee Sun Lee. 2009. Natural Language Generation with Tree Conditional Random Fields. Singapore-MIT Alliance. Department of Computer Science, National University of Singapore.
4. Kees Van Deemter, Emiel Krahmer, and Mari?t Theune. 2005. Real versus Template-Based Natural Language Generation: A False Opposition? Comput. Linguist. 31, 1 (March 2005), 15-24.
5. Sutskever, Ilya, James Martens, and Geoffrey E. Hinton. "Generating text with recurrent neural networks." Proceedings of the 28th International Conference on Machine Learning (ICML-11). 2011.
6. Tomita M., Ng S. K. The Generalized LR parsing algorithm //Generalized LR parsing. - Springer US, 1991. - С. 1-16.
7. How to fake a sophisticated knowledge of wine with Markov Chains. // URL: http://www.onthelambda.com/2014/02/20/how-to-fake-a-sophisticated-knowledge-of-wine-with-markov-chains/
8. Алгоритм работы парсера на одном предложении и одной грамматике. // URL: https://tech.yandex.ru/tomita/doc/dg/concept/overview-docpage/
9. Wei Lu, Hwee Tou Ng, Wee Sun Lee. 2009. Natural Language Generation with Tree Conditional Random Fields. Singapore-MIT Alliance. Department of Computer Science, National University of Singapore.
Размещено на Allbest.ru
Подобные документы
Обзор известных онлайн-переводчиков. Общая характеристика, принцип действия и возможности переводчиков текстов Translate.ru от Promt, Google и META. Электронные словари и мобильные переводчики. Отправка вопросов в техподдержку и отзывов о переводе.
реферат [153,8 K], добавлен 14.07.2010Понятие шаблона документа, анализ последовательности действий для его создания. Несколько замечаний по поводу тактики создания шаблонов. Специфика создания документов с использованием слияния. Особенность использования программы Microsoft Graph.
реферат [17,1 K], добавлен 05.10.2011Понятие семантики; обзор и анализ существующих средств семантического разбора естественно-языковых текстов. Разработка алгоритма работы системы на основе семантического анализа, его реализация на языке программирования; проектирование интерфейса системы.
дипломная работа [1,7 M], добавлен 18.03.2012Морфологические анализаторы (морфологизаторы) на различных языках программирования. Анализ методов и технологий автоматической обработки ЕЯ-текстов. Разработка модуля графематического анализа и создания таблицы лексем. Программная реализация классов.
дипломная работа [3,0 M], добавлен 06.03.2012Состав и принцип работы аппаратуры. Выбор параметров корреляционного анализа и Фурье-анализа. Разработка и применение алгоритма корреляционного анализа. Реализация алгоритма Фурье-анализа на языке С++ и алгоритма корреляционного анализа на языке С#.
дипломная работа [4,6 M], добавлен 30.11.2016Особенности графической среды разработки и Visual C++. Разработка проекта с использованием функций библиотеки MFC для удаления комментариев из текстов программ, автоматического выбора языка, на котором написана утилита и сохранения результата в файл.
курсовая работа [22,7 K], добавлен 07.11.2010Основные компоненты создания текста. Использование текстовых эффектов, редактирование изображений в растровом редакторе Adobe Photoshop. Работа с простым текстом. Создание объемного и сверкающего текстов, теней, огненной, ледяной и золотой надписей.
лабораторная работа [648,4 K], добавлен 18.10.2012Перевод - процесс создания на основе исходного текста на одном языке равноценного ему в коммуникативном отношении текста на другом языке, требования к обеспечению его эквивалентности. Машинные технологии перевода; характеристика систем Translation Memory.
презентация [347,8 K], добавлен 06.01.2014Классификация генераторов пилообразного напряжения со стабилизаторами тока, их применение. Разработка алгоритма и программы функционирования устройства. Результаты эмуляции программы в пакете VMLAB, анализ временных соотношений и оценка погрешностей.
курсовая работа [903,7 K], добавлен 25.12.2010Последовательность работ при разработке объектно-ориентированных программ. Виды синтаксических анализаторов и способы их применения. Описание алгоритма и анализ результативности работы программы, написанной на языке С, ее константы, переменные и функции.
курсовая работа [441,7 K], добавлен 03.07.2011