Показать полную графическую версию : создание аттрибутов по корню слова
r-studio
15-10-2018, 12:24
Я решил вернутся к прежней теме с корнями слов, но другим путем, полуручным
пример данных прикрепил
Как задать в коде vba что если в слове или фразе содержится корень который я задал, то приписать ему класс
т.е. if слово или фраза содержит макар, то в поле класс поставить аттрибут бакалея
а если слово содержит или фраза содержит пив, то в аттрибут напитки
...
и так далее
как альтернатива я могу создать отдельный vba с указанием слова и класса, и уже используя такой ручной классификатор прогнать его через основной файл
слова класс
макар бакалея
макароны вкусные бакалея
пив напитки
Корни в примере — вижу, три штуки (два из которых — дубликат). А где сами слова?
т.е. if слово или фраза содержит макар, то в поле класс поставить аттрибут бакалея
а если слово содержит или фраза содержит пив, то в аттрибут напитки »
Такой алгоритм реализуется формулами, но с большой долей вероятности он вас не устроит.
В приложенном примере приблизительные (исходя из вашего описания) таблицы оформлены как списки/умная таблица. Синяя - с исходными данными по категориям - называется "Таблица 1". Во вторую вбита формула массива (как водится - объемная)
=ИНДЕКС(Таблица1[класс];МАКС(ЕСЛИ(" " & СТРОЧН( [@Наименование]) & " " <> ПОДСТАВИТЬ(" " & СТРОЧН( [@Наименование]) & " "; Таблица1[слова];"@#$"); СТРОКА(Таблица1[класс])-СТРОКА(Таблица1[[#Заголовки];[класс]]));1))
Приоритет будет у того класса, который ближе к концу. Ключевые слова должны начинаться с маленькой буквы.
Соответственно, результат достаточно предсказуем:
К мясу относится как "Шашл. в вакуумной упаковке" так и "кетчуп шашл.", потому что в них есть ключевое сочетание "шашл."
Аналогично - "сыр" и "сосиски с сыром" - это "молочные продукты".
Соответственно, с 10 категориями можно продумать приоритеты, а если категорий будет 200, то об ошибке вы вероятно даже не узнаете. Как вариант - включайте в слова пробелы до и после (в наименование товаров они автоматом подставляются в начало и конец), а также точки, если могут быть сокращения.
Корни в примере — вижу, три штуки (два из которых — дубликат). А где сами слова? »
Судя по предыдущему примеру - речь пойдет не о корнях, как таковых, а о произвольных фрагментах слов. Извечная проблема программной обработки данных, занесенных как придется/как попало. Затрудняюсь представить себе алгоритм VBA, а формул тут будет явно недостаточно :).
r-studio
18-10-2018, 12:03
a_axe, суть в том, что эти таблички не работают с множественным числом
слова класс
макар бакалея
макароны вкусные бакалея
пив напитки
окей, макароны очень вкусные.
итак
1. vba смотрит что у него в словах
2. в словах видит макар
3. начинает работать с фразой макароны очень вкусные. и увидел макар в макаронах,
4. далее глянул, что макар это бакалея, значит, напротив макароны очень вкусные. ставим бакалею
фраза макароны очень вкусные. лежит в отдельном файле. столбец Goods_names
эта колонка может находится в разныз местах, файлов много и она может быть на первом месте, в другом файле на 4-ом.
зависимости как дата инженер выгрузит
окей, макароны очень вкусные.
итак
1. vba смотрит что у него в словах
2. в словах видит макар
3. начинает работать с фразой макароны очень вкусные. и увидел макар в макаронах,
4. далее глянул, что макар это бакалея, значит, напротив макароны очень вкусные. ставим бакалею »
r-studio, по указанному вами принципу формулы как раз работают - макароны очень вкусные обрабатываются по совпадению "макар".
Речь вероятно идет о том, что "макароны очень вкусные" должны выдавать совпадение с "макароны вкусные"?
фраза макароны очень вкусные. лежит в отдельном файле. столбец Goods_names
эта колонка может находится в разныз местах, файлов много и она может быть на первом месте, в другом файле на 4-ом.
зависимости как дата инженер выгрузит »
Использование таблиц как раз и решает эту проблему - столбец нужно переименовать в соответствии с примером, и тогда не имеет значения, где он лежит. Ну, а инженеру придется овладеть выгрузкой по такому варианту, который потом может быть успешно обработан.
r-studio
20-10-2018, 13:06
a_axe, а Вас можно попросить помочь отредактировать этот код
http://forum.oszone.net/thread-337253.html
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.