lqp - анти-grep
September 25th, 2017
09:56 pm

[Link]

Previous Entry Add to Memories Tell A Friend Next Entry
анти-grep
Существует ли какая-нибудь коммандлайновая тулза, которая бы показывала не различия между файлами, а напротив, их сходство?

Формальные требования описать не возьмусь, но практическая задача такова. Имеются два файла, предположительно содержащие текст и снабженные разметкой на некоем языке. Требуется понять, являются ли эти файлы вариантами одного и того же текста (возможно, независимо оцифрованными с разных бумажных изданий текста), или же разными текстами или разными (возможно, пересекающимися) фрагментами одного большого текста.

Tags: ,

(12 comments | Leave a comment)

Comments
 
From:(Anonymous)
Date:September 25th, 2017 - 03:41 pm
(Link)
meld?
From:[info]lqp
Date:September 25th, 2017 - 03:54 pm
(Link)
См апдейт.
From:(Anonymous)
Date:September 25th, 2017 - 04:09 pm
(Link)
это задачка для ии, хехе
[User Picture]
From:[info]perfect_kiss
Date:September 25th, 2017 - 05:20 pm
(Link)
нет, это делается прекрасно и без АИ, нужен только стеммер хороший, но можно и без него

0. (опционально) проводим стемминг текстов, т.е. приводим все лексемы (слова) к канонической форме
1. бъём оба текста на n-грамы (типо так), n ∈ (2,3,4,5) обычно хватает
2. проводим количественный анализ совпадений по n-грамам
3. выводим средний процент

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

если работаем много, и есть специалисты-языковеды, то в зависимости от языка, лексики либо тематики текстов для каждого набора n-грамм добавляем спец множитель, который влияет на средний процент - типо если в языке много артиклей, совпадение по 2-грамамм менее влияет на результирующий скор, нежели совпадение по 3-грамамм

всё это описывается прекрасно императивными правилами, никаких градиентных спусков не надо, так сравнивают тексты уже много лет.
[User Picture]
From:[info]perfect_kiss
Date:September 25th, 2017 - 05:21 pm
(Link)
сорян за грамм ошибки мало сплю чёт
From:(Anonymous)
Date:September 25th, 2017 - 05:37 pm
(Link)
>приводим все лексемы (слова) к канонической форме

дохуяж работы. учитывая синонимы. где взять базы?
[User Picture]
From:[info]perfect_kiss
Date:September 25th, 2017 - 06:18 pm
(Link)
Стеммеров готовых опенсорсных туева хуча в тч с хорошими базами исключений
[User Picture]
From:[info]jahr
Date:September 26th, 2017 - 08:51 am
(Link)
Не могли бы Вы поделиться ссылками или ключевыми словами для поиска? Если это имеет значение - интересуют технические английские тексты.
[User Picture]
From:[info]perfect_kiss
Date:September 26th, 2017 - 11:18 pm
(Link)
Если по стеммингу в целом, то хорошее введение вот здесь, там в конце много ссылок на ещё более лучшие тексты, ну и сам проект snowball долгое время был чуть ли не единственным опенсорсным рабочим стеммером, и реализованный там алгоритм Портера утащили в кучу известных продуктов потом, lucene/es и nltk, например, до сих пор юзают.

По поводу специфики текстов - разумеется, текст, написанный на человеческом языке в общем случае алгоритмически к набору слов в канонической форме не приводится, потому что в живой речи всегда есть исключения и особые случаи; для технических текстов база исключений будет отличаться от базы для, например, нормативно-правовых актов, тут вопрос в том, чтобы эту базу где-нибудь взять - пробуйте спрашивать в чятах, связанных с проектом NLTK, во всяком случае я так делал, и люди делились, а сейчас наверняка на гитхабах такие базы выложенные есть.
[User Picture]
From:[info]jahr
Date:September 27th, 2017 - 07:31 am
(Link)
Спасибо.)
From:(Anonymous)
Date:September 25th, 2017 - 04:33 pm
(Link)
comparesuite.ru
From:(Anonymous)
Date:September 25th, 2017 - 09:14 pm
(Link)
Может ssdeep (есть в Debian) подойдёт?
Powered by LJ.Rossia.org