Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Генерация литературных текстов

Генерация литературных текстов

Бывают такие ситуации, когда работа редактора стоит дороже работы разработчика. Например, когда надо описать около ста тысяч объектов. Мы нашли выход из данной ситуации. Проблемы машинной генерации “литературных” текстов, СЕО и все прочее.

Максим Шаламов
MoscowDjango 28

Moscow Python Meetup

June 24, 2015
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. Боль • У отелей нет уникальных описаний, но нам они

    нужны • Описания должны быть человеко-понятны, индексироваться и обладать большой вариативностью
  2. Рассмотренные пути решения • Использовать труд редакторов • Генерация с

    помощью алгоритмов машинного обучения • Написать алгоритм генерации текстов по шаблонам
  3. Алгоритм • Подготавливаем данные, которые должны попасть в шаблон •

    В config файле указываем пути к шаблонам предложений • Profit
  4. Примеры результатов Четырехзвездочный Отель Novotel Amsterdam City находится в Амстердаме

    Отель Asterisk Hotel находится в 2 км от центра города Амстердам Отель Hotel Europa 92 находится в Амстердаме, рядом с Музеем Кино. К услугам гостей терасса на территории отеля.
  5. Как все устроено - name: "NAME+LOC" conditions: '' probability: 40

    values: - conditions: 'distance > 10 and distance < 20' probability: 10 value: '<name~inflect_case:nomn~capfirst> {разместился|расположен|находится} в [distance] от центра <city~inflect_case:gent~capfirst>.' Для каждого предложения есть шаблоны
  6. Переменные и подшаблоны • name - это имя варианта шаблона,

    указываются разные предложения по набору параметров используемых в них; • conditions - ограничения на значения переменных; • probability - вероятность выбора шаблона; • values - конкретные варианты шаблонов для данного набора параметров; • на каждое value мы так же можем наложить conditions и probability; • < > - внутри указываем переменные, через “~” передаем функции, которые применяются к переменной, а через “:” параметры функции; • [ ] - указываем под-шаблоны, которые будут вставлены в шаблон, указываем название переменной name из sub.yaml
  7. Специфические шаблоны - name: "distance" values: - conditions: "distance <

    50" value: "<distance> метрах" - conditions: "distance > 50 and distance < 1500" value: "<distance> метров"
  8. Планы • Запуск под python 3 • Добавить больше функций

    для работы с морфологией • Работа с английским языком