Комментарии 25
MS SQL Data Quality Services не помогли в разборе и дедупликации?
Не хочу вас расстраивать, но все препараты давно уже отсортированы по МНН в достаточно известных справочниках (доступных как базы данных).
Надо было начать с матчасти, прежде чем городить свои велосипеды :)
Надо было начать с матчасти, прежде чем городить свои велосипеды :)
Поддерживаю, но объединять по МНН тоже не серебряная пуля.
Ну вот например МНН Дротаверина Гидрохлорид.
Под него попадет как собственно сам Дротаверина Гидрохлорид, так и Но-Шпа а продаются они ой как по разному.
Ну вот например МНН Дротаверина Гидрохлорид.
Под него попадет как собственно сам Дротаверина Гидрохлорид, так и Но-Шпа а продаются они ой как по разному.
Думаю стоит взять справочник типа Видаль, построить словарь наименований с формами но без дозировок.
И сводить отплясывая от него, это возможно будет понадежнее чем N-граммы или расстояние редактирования.
И сводить отплясывая от него, это возможно будет понадежнее чем N-граммы или расстояние редактирования.
Соглашусь с Вами, что я не большой специалист в Фармацевтике. Я как, Вы говорите, начал с поиска международных баз данных, содержащих МНН, начал изучать SPARQL. Но потом столкнулся с жестокой реальностью: в нашей покупной базе МНН проставлен только для 70% товаров.
К тому же примерно треть продаж в аптеке приходится на не лекарственные препараты (БАДы, косметика и т.д.) которые просто не имеют МНН.
Буду признателен, если приведете пример «известных справочников (доступных как базы данных)», за исключением ГРЛС.
К тому же примерно треть продаж в аптеке приходится на не лекарственные препараты (БАДы, косметика и т.д.) которые просто не имеют МНН.
Буду признателен, если приведете пример «известных справочников (доступных как базы данных)», за исключением ГРЛС.
На самом деле у этой задачи нет простого и дешевого решения.
Без ручного сведения все равно не обойтись, можно только сократить объем этой ручной работы.
Можно распердоливать сокращения, сводить по МНН Видалю и всему такому с применением LDA итд — но счастья не будет.
Без ручного сведения все равно не обойтись, можно только сократить объем этой ручной работы.
Можно распердоливать сокращения, сводить по МНН Видалю и всему такому с применением LDA итд — но счастья не будет.
Так я и не говорю, что это 100% решение. После работы алгоритма — провизор все равно руками работает со справочником «Группы товаров», добавляя новое или удаляя лишнее (что напортачил алгоритм :)). НО это лучше чем работать с нуля.
Простое и дешевое решение есть.
Берете полный ассортиментный план какого-нибудь федерального дистрибьютора (например Протека). Каждая позиция его АП содержит код — принимаете его основным.
АП каждого последующего поставщика привязываете к кодам прайса ранее определенного основным. Делаете это через таблички соответствия кодов которые есть практически у каждого поставщика или дистрибьютора*. В результате — у вас привязаны и Донормил 15мг Таб. Х30» производства Upsa Laboratoir Франция и «Донормил таб. 15 мг № 30» Aventis/Bristol-Myers Squibb – Франция к одному и тому же коду. Сравнение цены у разных поставщиков таким образом становится тривиальной задачей.
Естественно, очень малая часть позиций будет нуждаться в ручной привязке, но как показывает практика число таких позиций невелико.
*Не факт что вам их дадут сразу, но всегда есть варианты.
Берете полный ассортиментный план какого-нибудь федерального дистрибьютора (например Протека). Каждая позиция его АП содержит код — принимаете его основным.
АП каждого последующего поставщика привязываете к кодам прайса ранее определенного основным. Делаете это через таблички соответствия кодов которые есть практически у каждого поставщика или дистрибьютора*. В результате — у вас привязаны и Донормил 15мг Таб. Х30» производства Upsa Laboratoir Франция и «Донормил таб. 15 мг № 30» Aventis/Bristol-Myers Squibb – Франция к одному и тому же коду. Сравнение цены у разных поставщиков таким образом становится тривиальной задачей.
Естественно, очень малая часть позиций будет нуждаться в ручной привязке, но как показывает практика число таких позиций невелико.
*Не факт что вам их дадут сразу, но всегда есть варианты.
Не подскажете, как обычная аптека может выбросить у того же протека инструмент, который позволит аптеке всегда заказывать препараты по самой низкой цене, а не у протека? При том, что фармдистрибьютеры отлично понимают, что именно системы электронного заказа уронили маржу из-за безумно жёсткой ценовой конкуренции. Особенно в протеке, который этого джинна и выпустил из бутылки.
А что за справочник?
я правильно понимаю, что для справочника групп товаров по сути был переписан стандартный модуль триграмм pgtrgm для MS SQL?
www.postgresql.org/docs/9.1/static/pgtrgm.html
www.postgresql.org/docs/9.1/static/pgtrgm.html
Нужен еще справочник синонимов.
Решения подобного типа есть уже лет так 15, а вы опять с нуля…
Решения подобного типа есть уже лет так 15, а вы опять с нуля…
Я не знаю предметную область, но для группировки помимо уже названных способов первое, что приходит в голову — взять состав двух ЛС, отсортировать и «выровнять» как выравниваются ДНК. Иначе говоря, использовать алгоритм сравнения ДНК, где вместо оснований — составляющие ЛС. Это, конечно, относится только к тем товарам, что имеют состав.
Для решения поставленной задачи есть dqs в ms sql. Даже если он не подходит по причине лицензий, то можно воспользоваться fts, который есть даже в express. Можно банально вытащить термы в таблицу и по совпадениям термов находить похожие препараты. Вообще стоит изучить возможности text mining в ms sql, а потом уже лепить свои велосипеды.
Тоже самое касается и предметной области. Для лекарств уже есть готовые справочники и «инвариантные» наименования.
Описание алгоритмов у вас хорошее, но предметная и техническая область выбраны неверно, ибо в них проблема давно решена.
Тоже самое касается и предметной области. Для лекарств уже есть готовые справочники и «инвариантные» наименования.
Описание алгоритмов у вас хорошее, но предметная и техническая область выбраны неверно, ибо в них проблема давно решена.
У нас стоит MS SQL 2008 R2 Express.
В нем нет Full-text Search technet.microsoft.com/ru-ru/library/ms165636%28v=sql.105%29.aspx
В нем нет Full-text Search technet.microsoft.com/ru-ru/library/ms165636%28v=sql.105%29.aspx
Для сравнения строк, в которых меняются не отдельные символы, а сразу токены, хорошо подходит Расстояние Жаккара.
Сначала бьем две строки на токены, а потом делим количество совпавших на количество уникальных токенов в обеих строках.
Сначала бьем две строки на токены, а потом делим количество совпавших на количество уникальных токенов в обеих строках.
>В базе данных это совершенно два разных препарата имеющих разный идентификатор и разное название, НО это одно и тоже.
У вас ассортиментный план кривой, собственно и все. Обычно все живут через привязки того же Протека.
У вас ассортиментный план кривой, собственно и все. Обычно все живут через привязки того же Протека.
все живут через привязки того же Протека
Но не все же работают в еФарма :) И заказывают товар только через Эприку.
Мы заказываем товары не только в Протеке – в Катрене, Роста, СИА, Пульс, Альянс Хелскеа, Vichy(Мир лечебной косметики), Стелмас, Omron, и т.д.
Как вы видите из списка, так же как и все остальные аптеки мы торгуем, не только фармацевтическими препаратами, но и косметикой, медицинским оборудованием и т.п.
При заказе из сводного прайс листа нужно выбрать товар с минимальной ценой и при этом с подходящим срокам годности.
О том как работает еФарма знаю только из презентаций. Буду признателен, если расскажите как в ней происходит создание автоматического заказа?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Data Mining. Оптимизация заказов товаров в аптеке (аптечном пункте)