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

17.05.13

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

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

Скачать файлы

Наименование Файл Версия Размер
Стеммер
.epf 11,17Kb
74
.epf 11,17Kb 74 Скачать

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

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

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

См. также

Метод Дугласа-Пойкера для эффективного хранения метрик

Математика и алгоритмы Платформа 1C v8.2 Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

30.01.2024    1753    stopa85    12    

33

Алгоритм симплекс-метода для решения задачи раскроя

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

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

19.10.2023    4415    user1959478    50    

34

Регулярные выражения на 1С

Математика и алгоритмы Инструментарий разработчика Платформа 1С v8.3 Мобильная платформа Россия Абонемент ($m)

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

1 стартмани

09.06.2023    7454    4    SpaceOfMyHead    17    

56

Модель распределения суммы по базе

Математика и алгоритмы Платформа 1С v8.3 Россия Абонемент ($m)

Обычно под распределением понимают определение сумм пропорционально коэффициентам. Предлагаю включить сюда также распределение по порядку (FIFO, LIFO) и повысить уровень размерности до 2-х. 1-ое означает, что распределение может быть не только пропорциональным, но и по порядку, а 2-ое - это вариант реализации матричного распределения: по строкам и столбцам. Возможно вас заинтересует также необычное решение этой задачи через создание DSL на базе реализации текучего интерфейса

1 стартмани

21.03.2022    7852    7    kalyaka    11    

44

Изменения формата файлов конфигурации (CF) в 8.3.16

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Дополнение по формату файлов конфигурации (*.cf) в версии 8.3.16.

16.12.2021    4444    fishca    13    

36

Интересная задача на Yandex cup 2021

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

Мое решение задачи на Yandex cup 2021 (frontend). Лабиринт. JavaScript.

12.10.2021    8832    John_d    73    

46

Механизм анализа данных. Кластеризация.

Математика и алгоритмы Анализ учета Платформа 1С v8.3 Анализ и прогнозирование Бесплатно (free)

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

31.08.2021    7797    dusha0020    8    

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

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