Козиев Илья (kelijah) wrote,
Козиев Илья
kelijah

Восстановление согласованного текста из списка лемм с помощью OpenNMT

Иногда возникает задача, обратная лемматизации: имеем список лемм, надо восстановить  исходный согласованный текст. При лемматизации из-за омонимии теряется часть информации:

Из "кошка ловит мышку" после леммаизации получаем "кошка ловить мышка".
Из "кошку ловит мышка" тоже получаем "кошка ловить мышка".

Поэтому обратная лемматизация в еще большей степени должна опираться на семантику и здравый смысл, чем прямая.

Где и почему может возникнуть такая задача? Например, как результат факторизации сложной генеративной модели, где мы хотели бы отделить генерацию "заготовки" текста от финальной полировки (согласование), чтобы облегчить первую модель.

И вот появилась идея попробовать для такого фокуса применить такой инструмент, как машинный перевод. Ведь ничто не мешает рассматривать входной лемматизированный текст как написанный на условном языке "чей-туфля-мое". Для проверки я взял OpenNMT - "an open source ecosystem for neural machine translation and neural sequence learning". Обучающий датасет делается предельно просто и автоматически, достаточно прогнать через лемматизатор (я использую rulemma, но это не принципиально) множество предложений. Затем пары из лемматизированных и исходных предложений скармливаем в тренер OpenNMT.

Я обучил модельку на ~96 тысячах пар. Представление текста - byte pair encoding с 32,000 токенов в словаре. Обучаемся около часа. Вот что получается для более-менее простого текста:

Вход:  голодный черный кошка настойчиво ловить вкусный серый мышка
Выход: голодная черная кошка настойчиво ловила вкусной серой мышка


Да, видны огрехи. Еще сильнее ошибки проявляются, когда модель видит сильно необычный текст:

Вход:

все смешаться в дом облонская

жена узнать , что муж быть в связь с бывший в они дом француженка - гувернантка , и объявить муж , что не мочь жить с ним в один дом

положение этот продолжаться уже третий день и мучительно чувствоваться и сам супруг , и весь член семья , и домочадец

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

дите бегать по весь дом , как потерянный ; англичанка поссориться с экономка и написать записка приятельница , просить приискать она новый место ; повар уйти еще вчера с двор , в время обед ; черный кухарка и кучер просить расчет



Выход:

все смешается в доме обстрарегулярно

жена узнать , что муж был в связи с сомвшем в них доме француженка - гувернантка , гувернантку , и объявили мужа , что не один жить с ним

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

все члены семьи и домочадцев чувствую , что нет смысла в их сожности и что на каждом постояжности и что , чем их , тем семьи и домочадцами облогии , чем , чем их , члены

жена не выходит из своего комнаты , муж третий день не было дома
дети бегали по всей дома , как потерян ; путина чанки ; путина чанки и написали загольрился с экономикой , сняв приготовить ее нового приготовить

Tags: machine translation, neural nets, генерация текста, лемматизатор, нейросети
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 0 comments