?

Log in

No account? Create an account

Компьютерная лингвистика

Новостная лента www.solarix.ru

Entries by category: лытдыбр

Pentaho Data Integration: первое краткое знакомство
kelijah
Ссылка: http://www.pentaho.com/product/data-integration
Краткое описание Kettle (дизайнер трансформаций и заданий): http://wiki.pentaho.com/display/EAI/Pentaho+Data+Integration+(Kettle)+Tutorial

Read more...Collapse )

Датасет для unsupervised обучения синтаксической модели для русского языка
kelijah
Мой "текстоперегонный" куб сделал очередную итерацию, скушав пару десятков гигабайтов текстов из википедии, новостей и так далее, и выдав примерно 6 Гб с очищенными предложениями.

Если посмотреть на группу самых маленьких предложений по 4 токена, то с одной стороны 90 Мб файл ничего интересного не показывает:

Read more...Collapse )

Поищем теперь среди этих предложений перестановочные ДУБЛИКАТЫ. То есть нас интересуют пары (или группы) предложений, в которых русский почти свободный порядок слов показывает себя во всей силе:

Я был счастлив!
Счастлив я был!
Я счастлив был!

Исходный список содержит почти 3 миллиона предложений, так что он слишком большой для решения задачи в лоб перебором всех со всеми. Но, к счастью, умные дяди давно разработали подходящий алгоритм, см. краткую инфу https://en.wikipedia.org/wiki/MinHash или подробнейшее описание тут http://infolab.stanford.edu/~ullman/mmds/ch3.pdf

Описанный в доке алгоритм нужен для быстрого поиска дубликатов документов в интернете, и умеет даже нечеткое сравнение через Жаккардову меру с заданной релевантностью. Нам пока нечеткое сравнение не нужно, за исключением порядка слов.

Я сделал реализацию алгоритма на C#. Более того, я потом реализовал эту вкусняшку на pl/sql для поиска дублей в базе, хотя мучения с переводом матричных вычислений на временные таблицы отравили все удовольствие. Как бы то ни было, C# реализация кушает многомиллионные коллекции строк и выдает группы дубликатов, которые для коротких предложений очень похожи просто на bag-of-words:

Read more...Collapse )

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

Read more...Collapse )

Как нетрудно видеть, каждая такая группа представляет семантически эквивалентное высказывание. То есть любое предложение в группе с точки зрения латентных семантических репрезентаций эквивалетно любому другому. Что приводит нас к задаче sequence2sequence. Как говорят математики в таких случаях - задача сводится к решенной, бинго.

Всего таких групп - десятки тысяч. Это означает, что у нас есть хороший, достаточно объемный датасет, годный для нейросетевого обучения. По крайней мере, есть резон попытаться.

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