помогите реализовать

Riv3ro

Новичок
Добрый день

Есть данные tov.jpg , так как они вводились операторами как попало, то получилась проблема с полем Товар он описан как только можно, и структурировать его как либо очень тяжело, а с этой колонки товар надо вытаскивать всяческие параметры название, старана-изготовитель, цвет, и т.д.

помогите структурировать данные.

Не могу сообразить как лучше это реализовать, опыт в php не очень большой. Так что за реализацию камнями прошу не закидывать.
PHP:
///////////// справочники //////////////////


$man = array ("Мужская","Мужск","мужская","м","М");

$woman = array ("Ж","ж","женские","Женские","жен","Жен","жен.","Женский","женский");

$teenager = array ("подр.","ПОДРОСТОК","Подросток","Подростковая");

$color = array ("Черный","черный","черн/сер","черн","чер/бел","чер","цветн.","Синий","Серый","пестрый","оранж","беж","Корич","Джинс","джинс","голубой","Бел.","крас/рыжие","Бордо","сер/бронз","фуксия","Фиолетовый","розовый","Малиновый","крас.","Коричневый","жолтый","голуой","рыжие","Белый","Бел/син","Бежевый","ч","кр","крас","сирень","сер/бел","чер/бел","розов","серебро","беж/чер","ч/сер","зеленый","б","роз","перс"); 

$material = array ("кожа","велюр","Кожа","Замш","Текст","Лак","джинс","Текс.","Текстить","Текстиль","кожа/замш","лак-замш","нубук","и/кожа","кожа/замш");




////////////////////////////////////////////

$items  = "Обувь Мужская Корич нубук 886п Бровары ТМ'ESTE' 41(р) ";


$a = explode(" ", $items);



if ($a[0] == "Обувь")// Сравниваем Тип с Обувью, если это не обувь то в Else просто заносив в другую таблицу.
{
	
	if(isset ($a[1])) // Проверяем если существует, "второе" слово то сравниваем с справочником pol
	{
 
		if ($res = preg_match ("/(Мужская)|(Мужск)|(мужская)|(м)|(М)/", $a[1]))// Проверка на совпадение со справочником $man
			{
				echo "Совпадает ";
				$pol = "Мужская";
				echo $pol;
			}
		
		elseif($res = preg_match ("/(Ж)|(ж)|(женские)|(жен)|(Жен)|(жен.)|(Женский)|(женский)/", $a[1]))// Проверка на совпадение со справочником $woman
			{
				echo "Совпадает ";
				$pol = "Женская";
				echo $pol;
			}
		elseif($res = preg_match ("/(подр.)|(ПОДРОСТОК)|(Подросток)|(Подростковая)/", $a[1]))// Проверка на совпадение со справочником $teenager
			{
				echo "Совпадает ";
				$pol = "Подростковая";
				echo $pol;
			}
//// и тд, так же дальше сравнение по цвету, материалу, городу, поставщику и тд. Опять же есть еще размер к нему справочник не придумал еще
		else 
			{
				echo "По фильтрам совпадения не найдено, значит это артикул <br />";// Артикул по фильтрам не сравнивал так как там все что угодна, и нету смысла.
				$art = $a[1];
				echo $art;
			}

и это только для первого элемента массива, их может быть вроде максимум 10. Для каждого так писать не целесообразно. помогите придумать функцию или цикл.

Как мне кажется надо будет прогонять после этой сортировки, еще по одному виду справочника, из-за того что есть вот такие описания "муж.туф","т.муж","подр.мальч" - которые вместе с точкой. Их разбивать опять експлойтом только по "." и пропускать еще раз через справочники $man $woman и тд.
 

A1x

Новичок
может быть дешевле ввести эти данные нормально вручную
 

Riv3ro

Новичок
Это торговая сеть. Основной магазин принимает и кодирует товар, потом товар расходится по точкам. База очень жирная, за каждым магазином числится более 5 тыс. наименований, магазинов 4. Чтобы перекодировать весь товар в программе понадобится не один битый час, но это пол проблемы, потом придется переклеивать все наклейки с описанием товара и это практически невозможно.
 

Riv3ro

Новичок
Если не найду "нормальное" решение данной проблемы, то буду писать уже через elseif. =\ Но думаю что есть более умное решение. Помогите написать функцию для этого дела.
 

craz

Нестандартное звание
И еще раз спрошу почему вы думаете что если вы впервый раз смотрите в сторону пхп вас это оправдывает???
 

A1x

Новичок
я бы за такую задачу взялся только за очень большие деньги
(и то только для того чтобы взять предоплату и свалить)
 

Riv3ro

Новичок
И еще раз спрошу почему вы думаете что если вы впервый раз смотрите в сторону пхп вас это оправдывает???
Не понял?
я бы за такую задачу взялся только за очень большие деньги
(и то только для того чтобы взять предоплату и свалить)
Я работаю на этой фирме, и в моих интересах выполнить данную задачу.
 

Riv3ro

Новичок
а мы тут при чём?
вам сюда
Я не прошу что бы за меня писали скрипт, если лично Вам не интересно, можете вообще не отписывать.
Может кому то будет интересна сама задача, и поломать голову как ее решить. Ведь не у всех на первом месте деньги, некоторые любят еще головоломки.
 

jonjonson

Охренеть
Riv3ro, у вас получается не программа и то же самое дерево данных, которое опять придёться править после добавления очередной партии товаров. Смысл? Вобщем данные должны быть в хранилищи, а в программе обрабатывающий их код.

Если вы всё это затеяли для организации поиска по фонарно набираемым фразам, то проще изобрести свой русско английский метофон http://www.morfoedro.it/doc.php?n=222&lang=ru#Metaphone На его основе генерите из исходных данных дополнительное поле в БД и ищете по нему.

Если всё это затеяно для каталогизации, то создаёте структуру каталога ручками и ручками разбрасываете товары с привязкой к узлам каталога. Но опять же, человеческий фактор. Куда отнести шнурки? В обувь или галантерею?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Riv3ro, пионеры у нас злые, но обижаться не стоит
это не головоломка, это обычный синтаксический анализ, делается долго, сложно, и ненадежно, как в яндексе
выделяешь лексемы, приводишь к стандартному виду, сопоставляешь со словарем
естественно, нужно еще составление словаря
работа на месяцы или годы
вероятно, дешевле будет нанять пару обезьянок, которые будут сидеть и разбирать текст целыми днями
 

Riv3ro

Новичок
Riv3ro, у вас получается не программа и то же самое дерево данных, которое опять придёться править после добавления очередной партии товаров. Смысл? Вобщем данные должны быть в хранилищи, а в программе обрабатывающий их код.

Если вы всё это затеяли для организации поиска по фонарно набираемым фразам, то проще изобрести свой русско английский метофон http://www.morfoedro.it/doc.php?n=222&lang=ru#Metaphone На его основе генерите из исходных данных дополнительное поле в БД и ищете по нему.

Если всё это затеяно для каталогизации, то создаёте структуру каталога ручками и ручками разбрасываете товары с привязкой к узлам каталога. Но опять же, человеческий фактор. Куда отнести шнурки? В обувь или галантерею?
Вся суть, на входе есть данные в .csv парсером их загоняем , прогоняем и обрабатываем данные перед записью в БД, и после манипулируем уже так как нам надо для анализа.

По Сути надо только разбивать Обувь, а все остальное по умолчанию не интересует в реализации.

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

A1x

Новичок
чтоб не валить все в одну кучу я бы написал по одной функции на каждый параметр который надо извлечь из поля Товар, например

getType($field) // принимает строку описания товара, возвращает тип - обувь, одежда галантерея, etc. или false в случае неудачи
getColor($field) // возвращает цвет - black, red, green etc. или false в случае неудачи
getGender($field), // возвращает пол - man, woman, unisex или false если не может определить
getMaterial($field) // ...
и т.д.
все вряд-ли удастся разобрать, но какой-то процент будет
 

A1x

Новичок
тоже была мысль про синтаксический анализ но в контексте разбора данных записей
которые вводились людьми похоже вполне резонно ненавидящими свою работу искать там какой-то синтаксис показалось неуместным :D
 

Riv3ro

Новичок
тоже была мысль про синтаксический анализ но в контексте разбора данных записей
которые вводились людьми похоже вполне резонно ненавидящими свою работу искать там какой-то синтаксис показалось неуместным :D
Верно подметили, что ненавидящие свою работу. :)
Теперь я ненавижу их и начальство, которому надо такой вид анализа.

Про разные функции тоже вариант, будет проще дописывать и допиливать, а то в куче уже тяжело разобраться. =\
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
по одной функции на каждый параметр - тупиковый путь
Riv3ro для этих ситуаций в мире существуют служебные записки, в которых надо излагать суть проблемы с обоснованием невозможности реализации поставленной задачи.
 
Сверху