Стеммер Портера или нечеткое сравнение слов

17.05.13

Разработка - Математика и алгоритмы

Стеммер позволяет организовать нечеткое сравнение слов путем выделения из них некоторой значащей части, которые затем и подлежат сравнению. Алгоритм реализован для 8.2, но может быть перенесен на любую платформу 1С.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Стеммер
.epf 11,17Kb
75 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

Попытка найти готовое решение в интернете привела меня на страницу http://snowball.tartarus.org/algorithms/russian/stemmer.html, где описан алгоритм выделения значащего куска слова. Алгоритм работает не со 100% точностью, тем не менее он не требует громоздких словарей и работает достаточно быстро. Реализация в коде в интернете есть, но использует регулярные выражения, которые 1С (сама по себе) не понимает.

В обработке приведен код, получающий стем слова использующий только простейшие конструкции обработки строк 1С и не подключающий внешних объектов. Таким образом, хотя обработка написана для платформы 8.2, она легко может быть портирована на любую другую платформу 1С.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Математика и алгоритмы Программист 1С 8.3 Абонемент ($m)

Данная внешняя обработка для платформы 1С:Предприятие реализует усовершенствованный алгоритм Левенштейна для вычисления схожести строк с учетом различных лингвистических особенностей русского языка. В отличие от классической реализации, этот алгоритм учитывает фонетические, визуальные и контекстные особенности набора текста.

1 стартмани

07.11.2025    4832    13    InFlach    17    

26

Математика и алгоритмы Запросы Программист 1С:Предприятие 8 Бесплатно (free)

Рассмотрим быстрый алгоритм поиска дублей с использованием hash функции по набору полей шапки и табличных частей.

08.07.2024    4955    ivanov660    9    

24

Математика и алгоритмы Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Абонемент ($m)

На написание данной работы меня вдохновила работа @glassman «Переход на ClickHouse для анализа метрик». Автор анализирует большой объем данных, много миллионов строк, и убедительно доказывает, что ClickHouse справляется лучше PostgreSQL. Я же покажу как можно сократить объем данных в 49.9 раз при этом: 1. Сохранить значения локальных экстремумов 2. Отклонения от реальных значений имеют наперед заданную допустимую погрешность.

1 стартмани

30.01.2024    13079    stopa85    12    

43

Математика и алгоритмы Бесплатно (free)

Разработка алгоритма, построенного на модели симплекс-метода, для нахождения оптимального раскроя.

19.10.2023    20626    user1959478    57    

40

Математика и алгоритмы Разное 1С:Предприятие 8 1C:Бухгалтерия Россия Абонемент ($m)

Расширение (+ обработка) представляют собою математический тренажер. Ваш ребенок сможет проверить свои знание на математические вычисление до 100.

2 стартмани

29.09.2023    12432    maksa2005    8    

27

Математика и алгоритмы Инструментарий разработчика Программист 1С:Предприятие 8 Россия Абонемент ($m)

Что ж... лучше поздно, чем никогда. Подсистема 1С для работы с регулярными выражениями: разбор выражения, проверка на соответствие шаблону, поиск вхождений в тексте.

1 стартмани

09.06.2023    21031    11    SpaceOfMyHead    20    

65

Математика и алгоритмы Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Три задачи - три идеи - три решения. Мало кода, много смысла. Мини-статья.

03.04.2023    14001    RustIG    9    

30

Механизмы платформы 1С Математика и алгоритмы Программист 1С:Предприятие 8 Россия Бесплатно (free)

В статье анализируются средства платформы для решения системы линейных уравнений в 1С. Приводятся доводы в пользу некорректной работы встроенных алгоритмов, а значит потенциально некорректного расчета себестоимости в типовых конфигурациях.

23.11.2022    13090    gzharkoj    15    

27
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Alex_Japanese_Student 460 18.05.13 00:02 Сейчас в теме
Можно чуточку подробнее описать. Вы пишете, что не используете словари - то есть от сравнений по синонимам отказались? Или следующим этапом будет? Потому что выделения куска слова чаще всего не достаточно для сравнения фраз по смыслам.. Или так широко задача не стояла?
2. Kobra_RU 249 20.05.13 08:02 Сейчас в теме
Нет, пока более широко задача не стоит. Это просто программная реализация на 1С алгоритма получения стема русского языка. На форумах этот алгоритм достаточно широко обсуждался. Отмечается, что он не на 100 процентов может выделить именно то что нужно, но достаточно компактный и быстрый. Т.е. с неточностями придется смириться.
В публикации есть ссылка на страницу алгоритма, на ней приведен список слов и их стемы. По этому списку можно сделать предварительный вывод об использовании алгоритма.
3. serega3333 22.05.13 13:05 Сейчас в теме
(2) подкрутив словарь в этот стеммер по сути можно будет синонимайзер сделать? заменяя корни слов...
4. Alex_Japanese_Student 460 22.05.13 13:25 Сейчас в теме
да вот и я думал, что одного стеммера маловато, надо словари синонимов прикручивать, иначе задача получается половинчатой.
а словари они чаще всего платные, да и качеством часто не блещут
5. Kobra_RU 249 22.05.13 14:26 Сейчас в теме
Словарь подразумевает наличие объекта для его хранения, что сразу ограничивает использование решения, во внешних обработках уже не применишь...
6. Alex_Japanese_Student 460 22.05.13 14:34 Сейчас в теме
(5)
Словарь подразумевает наличие объекта для его хранения, что сразу ограничивает использование решения, во внешних обработках уже не применишь...

в теории правильно
на практике макет можно добавить в обработку и закинуть словарь туда
и потом считывать
скорость правда будет не гуд, но как вариант...
7. fixin 4327 03.02.17 14:57 Сейчас в теме
ок. полюбопытстсвуем
Для отправки сообщения требуется регистрация/авторизация