powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Полнотекстовый поиск
8 сообщений из 8, страница 1 из 1
Полнотекстовый поиск
    #39616189
AET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AET
Гость
Добрый день.
Задача обеспечить поиск в текстах считая слова "мышками" и "мышами" одинаковыми.
Русский ispell преобразует "мышками" в "мышка", а "мышами" в "мышь".
Далее, как я предполагаю, можно было бы свести их к одной форме с помощью словаря синонимов, но после того как со словом поработает словарь ispell - оно считается распознанным и не передается дальше.

В документации насчет передачи слова есть такой пункт:

авторСловарь — это программа, которая принимает на вход фрагмент и возвращает:

...

одну лексему с установленным флагом TSL_FILTER для замены исходного фрагмента новым, чтобы следующие словари работали с новым вариантом (словарь, который делает это, называется фильтрующим словарём)

Но как и где устанавливается этот параметр, можно ли его устанавливать для последовательности словарей - не могу найти.
Прошу помощи от знающих или варианты борьбы в полнотекстовом поиске с уменьшительно-ласкательными формами в общем.
...
Рейтинг: 0 / 0
Полнотекстовый поиск
    #39616229
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AET, см. 12.6.3. Synonym Dictionary. Там есть пример.
...
Рейтинг: 0 / 0
Полнотекстовый поиск
    #39616600
AET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AET
Гость
Ы2,

Или я вас не понимаю и действительно не вижу явного примера или не смог донести сути вопроса:
Мне по большому счету нужно чтобы все словоформы слова "мышка" отождествлялись со словоформами слова "мышь".
То есть "мышками" @@ "мыши", "мышью" @@ "мышки" и т.д.

Словарь синонимов у меня есть.
Если я ставлю его в последовательности после ispell то до него просто не доходит. ISpell распознает лексему и останавливает разбор.
Если ставлю перед ispell, то чтобы происходили замены в моем словаре нужно прописать синонимы для всех вариантов:
мышки мышь
мышками мышь
мышкой мышь
и тд...

Но если нужных слов хотя бы 100 - то со всеми из формами это нереальная работа.

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

"мышками" (ispell) "мышка" (syn) "мышь"
...
Рейтинг: 0 / 0
Полнотекстовый поиск
    #39616665
Rutra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AET,

К сожалению TSL_FILTER можно установить только в C коде. Например:
https://github.com/postgres/postgres/blob/master/contrib/unaccent/unaccent.c#L356

Вы можете попробовать модифицировать вот этот словарь синонимов (он более гибкий, чем стандартный словарь синонимов)
https://github.com/postgres/postgres/tree/master/contrib/dict_xsyn
...
Рейтинг: 0 / 0
Полнотекстовый поиск
    #39617208
AET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AET
Гость
Rutra,

Спасибо, поэкспериментирую - отпишусь
...
Рейтинг: 0 / 0
Полнотекстовый поиск
    #39617723
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AET, я по наивности полагал, что все словари по умолчанию фильтрующие… увы.
Но если обозвать словарь замен тезаурусом, он-таки будет работать, как надо:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE TEXT SEARCH CONFIGURATION test ( COPY = pg_catalog.russian );

CREATE TEXT SEARCH DICTIONARY test_dic (
    TEMPLATE = ispell,
    DictFile = ru_utf,
    AffFile = ru_utf,
    STOPWORDS = russian
);

CREATE TEXT SEARCH DICTIONARY test_the (
    TEMPLATE = thesaurus,
    DictFile = test,
    Dictionary = test_dic
);

ALTER TEXT SEARCH CONFIGURATION test
    ALTER MAPPING FOR word, hword, hword_part
    WITH test_the, test_dic;

select to_tsvector('test', 'мышками');



ru_utf.* — словарь и аффиксы, вытащенные из LibreOffice и перекодированные в utf8.
...
Рейтинг: 0 / 0
Полнотекстовый поиск
    #39618734
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AETЫ2,

Или я вас не понимаю и действительно не вижу явного примера или не смог донести сути вопроса:
Мне по большому счету нужно чтобы все словоформы слова "мышка" отождествлялись со словоформами слова "мышь".
То есть "мышками" @@ "мыши", "мышью" @@ "мышки" и т.д.

Словарь синонимов у меня есть.
Если я ставлю его в последовательности после ispell то до него просто не доходит. ISpell распознает лексему и останавливает разбор.
Если ставлю перед ispell, то чтобы происходили замены в моем словаре нужно прописать синонимы для всех вариантов:
мышки мышь
мышками мышь
мышкой мышь
и тд...

Но если нужных слов хотя бы 100 - то со всеми из формами это нереальная работа.

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

"мышками" (ispell) "мышка" (syn) "мышь"


Вообще-то "мышь" и "мышка" не должны быть синонимами, один корень, так можно заколебаться руками добавлять уменьшительные слова в словарь синонимов

авторМышь
-и, мн. -и, -ей, ж. Небольшой грызун с острой мордочкой, усиками и длинным хвостом. Домашняя м. Полевая м. Белая м. Как м. на крупу надулся кто-н. (недоволен, обижен; разг. шутл.). Под каждой крышей свои мыши (посл.). Как церковная м. беден кто-н. (совсем ничего не имеет; устар.). * Мышей не ловит кто (разг. шутл.) — совсем обленился, ничего не хочет делать. II уменьш. мышка, -и, ж. Как м. сидит кто-н. (очень тихо ведёт себя; разг.). II прил. мыший, -ья, -ье (устар.) и мышиный, -ая, -ое. Мышья (мышиная) норка. Мышиная возня (также перен.: о мелких тайных интригах; неодобр.). Мы-шиный цвет (серый). Семейство мышиных (сущ). * Мышиный жеребчик (устар. ирон.) — молодящийся старик, любящий ухаживать за женщинами. Мышиный горошек — травянистое растение сем. бобовых.
...
Рейтинг: 0 / 0
Полнотекстовый поиск
    #39618746
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинВообще-то "мышь" и "мышка" не должны быть синонимами, один корень, так можно заколебаться руками добавлять уменьшительные слова в словарь синонимов
это они про существующий набор абстракций, обвязанных текущей реализацией.

а не про "синонимию" в лингвистическом смысле.

"синонимия" тут -- то, что прокидывает одну лемму (если не вру со словесами) на другую.
и только.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Полнотекстовый поиск
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]