172 похожих чатов

О, а дайте-как я тоже спрошу, пока @obartunov здесь (если

кто знает — тоже не стесняйтесь). ;)
Какая сейчас ситуация с русскими словарями для FTS, где брать самые адекватные?
Есть ли какое-то [техническое] описание того, какими они должны быть и т.п., кроме документации PostgreSQL?

20 ответов

9 просмотров

На гитхабе postgrespro есть две репы со словарями.

Yaroslav-Schekin Автор вопроса
Oleg Bartunov
На гитхабе postgrespro есть две репы со словарями.

Спасибо, поищу! А по второму вопросу есть что-то?

Oleg Bartunov
На гитхабе postgrespro есть две репы со словарями.

Описание стеммера читайте snowball, описание ispell/hunspell тоже есть.

Yaroslav-Schekin Автор вопроса
Oleg Bartunov
Интересует описание апи ?

Тоже интересует, да. Эти? https://github.com/postgrespro/hunspell_dicts/tree/master/hunspell_ru_ru Это, насколько я вижу, старый словарь, работы ещё Александра Лебедева, так? https://github.com/postgrespro/hunspell_dicts/tree/master/hunspell_ru_ru_aot А это — старая версия от AOT group (из LibreOffice), да? И вот это? https://github.com/postgrespro/rusmorph Но вопрос-то у меня был, скорее, по содержанию словарей. Вот к примеру, должны ли они быть в идеале максимально полны? Т.е. должны они включать все устаревшие, диалектные и специальные термины — которые, если попадаются в современном тексте, почти наверняка являются тупо опечатками общеупотребительных слов? Так же и с самими распространёнными очепятками, кстати. ;) Т.е. меня интересует, какой подход к наполнению словарей именно для FTS — правильный?

Yaroslav Schekin
Тоже интересует, да. Эти? https://github.com/postg...

По словарям ты все правильно написал - Лебедев и аот для словоформ.

Oleg Bartunov
По словарям ты все правильно написал - Лебедев и а...

Наполнение словаря - это философский выбор. Мое мнение, что нужно сделать словарь на основе n-gram переменной длины и индексировать всё, а при поиске задавать степень соответствия.

Yaroslav-Schekin Автор вопроса
Oleg Bartunov
Наполнение словаря - это философский выбор. Мое мн...

Да это же не словарь, в таком случае... нет? Т.е. сгенерируйте все сочетания букв длины 1, 2, 3... N — и вот он "словарь". Или я не понял, что Вы имели в виду?

Yaroslav Schekin
Да это же не словарь, в таком случае... нет? Т.е. ...

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

Oleg Bartunov
Наполнение словаря - это философский выбор. Мое мн...

Но специфические словари терминов конечно тоже нужны.

Yaroslav-Schekin Автор вопроса
Oleg Bartunov
Словарь - это любая программа, которая из входа чт...

Нет, подождите. :) Это обычные n-gramms, такое можно "на коленке запилить" в PostgreSQL хоть сейчас... но к настоящим орфографическим словарям это не имеет никакого отношения... Т.е. Вы имеете в виду, что настоящие словари не нужны? > Но специфические словари терминов конечно тоже нужны. Хмм... но зачем, учитывая вышенаписанное?

Yaroslav Schekin
Нет, подождите. :) Это обычные n-gramms, такое мож...

Ярослав, просто все зависит от задачи. Я не видел моральной идеального морфологического словаря. Мы проектировали fts как возможность матчинга запроса и документов с возможностью ранжирования, конкретную реализацию со словарями и конфигурациями можно рассматривать как одну из возможных. На самом деле основное это два типа данных и оператор для них, дальше все можно делать руками, т.е., самому делать tsquery, tsvector, хоть во внешнем клиенте.

Yaroslav-Schekin Автор вопроса
Oleg Bartunov
Ярослав, просто все зависит от задачи. Я не видел ...

Это я всё умозрительно понимаю (реального опыта с FTS у меня мало), но мне кажется, что подход с n-граммами в реальности будет плох. Вот для примера (первое, что пришло в голову): при поиске по слову "меч" так можно выдавать "мечусь" (словоформу "далёкого" по n-граммам "метаться"), а вот "брошь" и "брошу" — почти одно и тоже. Так вот меня как раз интересует, какими должны быть словари, чтобы "русский" FTS был качественным на практике.

Yaroslav Schekin
Это я всё умозрительно понимаю (реального опыта с ...

> Так вот меня как раз интересует, какими должны быть словари, чтобы "русский" FTS был качественным на практике. Тогда нужно стремиться к полноте словарей, но проблему омонимии они не решат - Путин, путин, Путина, путина ? Я не в курсе, кто-нибудь вообще занимается поддержкой машинной морфологии русского языка, имеется ввиду открытой. Я вижу только aot.ru

Yaroslav-Schekin Автор вопроса
Oleg Bartunov
> Так вот меня как раз интересует, какими должны б...

> Тогда нужно стремиться к полноте словарей, Почему нужно-то? Вот то, что я написал про совпадающие с "левыми" словами опечатки — как в идеале должен к ним относиться FTS? > но проблему омонимии они не решат - Путин, путин, Путина, путина ? Ну так это реальная проблема (в самом языке), а не проблема качества словарей. > то-нибудь вообще занимается поддержкой машинной морфологии русского языка, имеется ввиду открытой. А никто, насколько я знаю (по крайней мере, я больше вообще не нашёл ни одного активного проекта). :( Причём то, что делает AOT, мне крайне не нравится — я вижу, что туда просто внесено много опечаток; кроме того, словарь набит топонимами, фамилиями, диалектизмами, устаревшими словами и "редкими" терминами. Даже для его, по идее, основной цели (проверки правописания) это всё совсем не хорошо.

Yaroslav-Schekin Автор вопроса
Oleg Bartunov
> Так вот меня как раз интересует, какими должны б...

А, и ещё про этот "прекрасный" словарь — заметно, что он сделан по принципу "да ладно, и так сойдёт!" — к примеру, нередко вместо основы и правил словоизменения сделано вот так (реальный пример): аркаден аркадна аркадная аркадно аркадного аркадное аркадной аркадном аркадному аркадную аркадны аркадные аркадный аркадным аркадными аркадных Т.е. для проверки правописания это сойдёт, а вот для FTS получается, что каждая форма здесь — основа, т.е. "аркадному" и "аркадный" — это совершенно разные слова.

Yaroslav Schekin
А, и ещё про этот "прекрасный" словарь — заметно, ...

Мы взяли ispell-кие словари для морфологии от бедности. Буду рад, если кто возьмется за создание нормального морфологического словаря.

Yaroslav-Schekin Автор вопроса
Oleg Bartunov
Мы взяли ispell-кие словари для морфологии от бедн...

А брать-то больше почти и нечего... Есть, впрочем, существенно доработанный/переработанный (но тоже уже брошенный, к сожалению) Александром Клюквиным словарь Лебедева (и он всё ещё качественнее, чем "обновляемый" от AOT group, по моему нескромному мнению ;) ). Но на этом и всё. > Буду рад, если кто возьмется за создание нормального морфологического словаря. Да, неплохо бы... только это большая работа, пойди найди энтузиастов. ;) А вообще, опять-таки, AOT group тихо и незаметно "подложила свинью" всем русскоязычным пользователям проверки правописания и FTS (потому что почти все берут их словари).

Yaroslav-Schekin Автор вопроса
Oleg Bartunov
Мы взяли ispell-кие словари для морфологии от бедн...

И всё-таки мне любопытно, какими для "идеального" FTS должны быть ответы на вопросы про опечатки и "левые" (редкие и т.п., см. выше) слова. ;)

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
12
У тебя в конфиге нигде нет deny all; или вообще любого deny?
Alexander Sherbakov
10
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Есть Pipeline для GitLab Runner (executor = "shell") В нём есть: default: before_script: - set -eo pipefail - source "$(~/bin/trdl use werf 2 stable)" - source...
Aleksandr Karabanov
1
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Ребят, чет я уже не догоняю... Крч в коде на асм там происходит нечто вроде a+число (a+1, a+2 и т.д.). Но почему строка lea ecx, [edx+1] работает как a+1?? В edx берется адрес...
Alan 🔝 Бэброу
4
Карта сайта