Как стать автором
Обновить
18
0
Дмитрий Николаев @macleginn

Пользователь

Отправить сообщение

Простой алгоритм для поиска всех совпадающих под-текстов в двух текстах

Время на прочтение4 мин
Количество просмотров29K
По долгу службы мне часто нужно находить все пересечения между текстами (например, все цитаты из одного текста в другом). Я достаточно долго искал стандартное решение, которое бы позволило бы это делать, но найти его мне так и не удалось — обычно решается какая-то совсем или немного другая задача. Например, класс SequenceMatcher из difflib в стандартной библиотеке Питона находит самую длинную общую подпоследовательность в двух последовательностях hashable элементов, а потом рекурсивно повторяет поиск слева и справа от нее. Если в одном из текстов будет более короткая подпоследовательность, которая содержится внутри уже найденной (например, если кусок длинной цитаты где-то был повторен еще раз), он ее пропустит. Кроме того, когда я загнал в него «Войну и мир» и «Анну Каренину» в виде списков слов и попросил для начала найти самую длинную подпоследовательность, он задумался на семь минут; когда я попросил все совпадающие блоки, он ушел и не вернулся (в документации обещают среднее линейное время, но что-то в прозе Льва Толстого, по-видимому, вызывает к жизни worst-case квадратичное).

В конечном итоге я придумал свой алгоритм, тем самым наверняка изобретя велосипед, который надеюсь увидеть в комментариях. Алгоритм делает ровно то, что мне нужно: находит все совпадающие последовательности слов в двух текстах (за исключением тех, что в обоих текстах входят в состав более крупных совпадающих последовательностей) и сравнивает «Войну и мир» с «Анной Карениной» за минуту.

Читать дальше →

Простой способ оценки понятности текста на русском языке

Время на прочтение4 мин
Количество просмотров16K
По сути, опубликованное ниже является моим комментарием к публикации «Что такое «Понятный русский язык» с точки зрения технологий. Заглянем в метрики удобочитаемости текстов». Поскольку я не могу оставлять комментарии, то пишу в «Песочницу».

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

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность