спрашиваю на этом форуме как на самом активном в рунете по R .
Я специалист в другой области, но если абстрагироваться от отраслевой специфики, то есть надежда получить ответ мой на вопрос здесь. (на stackoverflow.com ничем не помогли)
есть вектор из неструктурированного и сильно замусоренного текста длиной в 15000 уникальных объектов - это названия алкогольной продукции от крупнейших федеральных розничных сетей РФ.
В этом векторе один и тот же продукт (семантически) может встречаться фактически до 50 раз в следующих вариациях (и в любой комбинации из этих вариаций):
- разный порядок слов в тексте
- разная степень сокращений одних и тех же слов
- разный язык написания одних и тех же слов (могут встречаться как английские так и русские вариации)
- разная интерпретация чисел (XXI век, 21 век, 21-й век, "двадцать первый век",...)
-разный разделитель целой и дробной части числа (0,5 , 0.5, 1/2л,...)
- в русских словах встречаются английские буквы идентичные по написанию с русскими(

Проделал большую работу по созданию алгоритма, который принимает на входе этот ужас, парсит строку, разбивает ее на фрагменты, анализирует фрагменты, ищет аналогии по справочнику, проводит нормализацию по сокращениям слов, переводит слова на русский, переводит буквы на русский, чистит от мусорных символов,приводит числа к нормальному виду и оставляет релевантные фрагменты (я называя их "токенами").
Далее я решил по частоте встречаемости каждого нормализованного токена присвоить ему вес: от 10 баллов - для самого редковстречаемого токена до 1 балла для самых частых. Эти веса токенов планирую использовать для кластеризации текстов по их токенам.
Учитывая размерность вектора и ожидаемое количество токенов по нему, всю бизнес логику алгоритма реализовал процедурами в БД, в итоге получил 2 таблицы: таблица продукции t_prod : уникальный Id продукта и имя продукта=15000 записей, t_tokens : id продукта(ссылка на продукт в t_prod), имя полученного токена, вес токена в баллах=92000 записей
В итоге из 92000 получил 1700 уникальных токенов. Таким образом-если построить кросс таблицу (15000 объектов вниз, 1700 токенов вправо, и веса на пересечении)- то получится сильно разряженная большая матрица.
Писать алгоритм дальше нет смысла ибо это изобретение велосипеда учитывая количество итераций =15000^2-15000=225млн.
Собственно вопрос: как с помощью R разбить объекты на кластеры с учетом той структуры которую я получил, если число кластеров (семантически сходных продуктов) заранее не известно?
краткий пример приложил (там названия продуктов на английском т.к. пример затачивал под stackoverflow.com)