Как подступиться к такой задаче классификации и поиска?
Задача - необходимо разбить на составные части (название, вес, количество, производитель) и (ИЛИ) связать между собой два набора. Один представляет собой запись наименований принятый у поставщика (а поставщиков 2000, и у всех разные правила), а второй уже приведенный к нормализованному наименованию, с соблюдением всех правил.
Второй набор (100к нормализованных наименований), пример:
Банан 1000 штук ящик 100кг
Фига 2000 штук ящик 60кг
Хорошее в том, что большая часть второго набора МНОГОКРАТНО была связана с большей частью первого набора.
Т.е. вариаций названия "Банан 1000 штук ящик 100кг" в первом наборе 50-100 штук, и из них 20-30 уже связано со вторым набором.
Есть уже связанная выборка для обучения на 2,7млн записей.
Старый алгоритм (если коротко - количество вхождений буквенных пар и чисел), использует очень жирный индекс (в данный момент боле 450млн записей и рост 5-7млн записей в неделю) и уже проваливается по скорости и ресурсоемкости.
Коллеги подсказали, что мне стоит смотреть на алгоритмы машинного обучения и ИНС. Что вы посоветуете?
примерно так и подступайтесь - стройте поиск названия, потом поиск упаковки, потом количества и измерений
название, скорее всего, почти всегда легко
затем в паре с ним легко классиицировать цифру (ящики это или штуки или упаковки)
некоторыми функциями можно выполнить предподготовку ("ц" не входит в ящик и упаковку и т.п.)
дальше определить какие содержат все компоненты , а какие нет
ну и посмотрите на нынешний алгоритм, может, проще его оптимизировать
посомтрите Тамита парсер (хз как он для такого, но там можно строить свое)
ivodopyanov: Перебор 7 000 000 * 100 000 строк с помощью регулярки? 0_о
Или 100 000 регуляток, под каждое наименование писать?
Или вы о разборе на составные части? Тогда могу сказать что вес, количество и производителей очень много, 2 года назад составляли справочники по ним, там от 2000 до 12000 записей получается на каждую из частей.
zod ggs: мне просто кажется, что вес и количество должны описываться примерно одинаковым шаблоном - число+единица измерения, опционально с пробелом между ними или 'N' перед числом. Если их выкинуть, останется наименование+производитель, которые можно просто сравнивая со словарем определить.
словарный запас человека составляет 5-7 тыс слов
я не знаю как написать слово "ящик" хотя бы 10 словами
я
ящ
ящи
ящик
ящик! ( тут ! и прочие знаки отбрасываем)
то же - центнер
то же - собственные имена фруктов овощей
dimonchik2013: форм хранения (я про ящики) 2 000. Это нормированных данных, ящик там как ящик, а не "ящ.".
С вашим подходом форм хранения будет 20-25 тысяч.
Задача видится в построении некой многомерной метрики для входных строк.
Т.о. расстояния между уже классифицированной строкой и строкой которая должна быть связана с этой классифицированной должно быть минимально.
Построением этой метрики должна заниматься рекурентная нейронная сеть.