![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 18.04.2008
Сообщений: 41
|
![]()
Подскажите, пожалуйста, как с помощью формул (или макроса) описать содержание текста, содержащегося в ячейке, в нескольких других ячейках. Речь идет об описании товара в БД, а нужно вычленить его характеристики...
Пример есть в прикрепленном файле. Первая строка прокодирована вручную. Остальные нужно прокодировать также, но автоматически (всего таких ячеек - 60 тысяч. ![]() P.S. Проблема еще в том, что описание одной характеристики товара может быть написано разными вариантами (например слово "полусладкое" может быть написано как "полусладкое", как "п/сладкое", как "п/слад." или как "п/сл")... И можно ли это как-то совместить с каталогом возможных вариантов написания??? Очень большая просьба помочь!!! Последний раз редактировалось Zorg; 18.04.2008 в 12:38. |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 06.03.2008
Сообщений: 352
|
![]()
Ну, это голая эвристика. За один проход такое не обрабатывается.
Не похоже, чтобы таблица формировалась из базы данных: в одних ячейках перечисление типа "НАТУРАЛЬНОЕ СТОЛОВОЕ ОРДИНАРНОЕ ТИХОЕ П/СЛАДКОЕ БЕЛОЕ" через запятые после каждого слова, в других - без запятых вообще, в третьих - где есть, где нет... Так что - только методом последовательных приближений. Выдвигается серия гипотез: 1) в каждой ячейке есть название; 2) название ограничено кавычками; 3) в каждой ячейке только две кавычки. Далее на всём объёме проверяется, так ли это. Если так, то уже каждая ячейка распадается на три строки: до названия, название, после названия. Теперь выдвигаются гипотезы для "до названия" - что там и только там (или не только?) содержатся такие-то характеристики в такой-то последовательности (или вперемешку?); причём такая-то характеристика может (не может?) отсутствовать. Разделители между некоторыми (но не всеми?) характеристиками, как мы уже видим, хаотичны, следовательно заменяются унифицированным etc. Гипотезы проверяются, уточняются, после этого строка делится. И так далее. При поступлении новых исходных данных накопленный "опыт" перед использованием обязательно проверяется с индикацией всего, что ему противоречит, и уточняется. Характеристик не так много, словари синонимов допустимых значений для них не так уж многочисленны и не так уж объёмны ![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 18.04.2008
Сообщений: 41
|
![]()
Дмидми, спасибо за оперативный ответ...
Наверное разделить структуру текста на три части не получится, так как проблема еще и в том, что в ряде названий вообще нет кавычек... ![]() А можно ли это сделать автоматически с использованием такого условия: если содержит "красное", то в соответствующей ячейке помещается "красное" если содержит "красн.", то "красное" если содержит "белое", то... "белое" если не содежит "красное" или "белое", то "пусто" и т.д. То есть задать ряд условий и получить исходя из этого ряд ответов Вручную это делается отфильтровкой, а автоматически как? |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 06.03.2008
Сообщений: 352
|
![]()
Вот же я и говорю: только методом последовательных приближений, многопроходной обработки. Главное - не пропустить момент нарушения какой-либо гипотезы. Вычленили то, что вроде бы несомненно, убедились в том, что нигде не ошиблись, - новый проход, по оставшемуся.
Автоматически? Только после того, как в таком полуавтоматическом режиме обработали данную таблицу до конца, накапливая гипотезы, автоматически обработается - но только именно эта таблица, с этими данными. При поступлении новых данных автомат должен немедленно указывать на все подозрительные моменты, чтобы можно было уточнить гипотезы, пополнить словари etc. Для сомнительных и принципиально неразрешимых ситуаций должен быть предусмотрен запрос к оператору. P.S. На всякий случай: учтите, что, например, в слове "BСЕГО" первая буква - латинская (b). |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 18.04.2008
Сообщений: 41
|
![]()
Дмидми,
а как в прикладном варианте проверить такую гипотезу? Желательно алгоритмом... ![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 06.03.2008
Сообщений: 352
|
![]()
Вот ты сам себе и ответил
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 18.04.2008
Сообщений: 41
|
![]()
Понятней, увы, не стало...
Особенно как конкретно пошагово должен выглядеть этот алгоритм... ![]() |
![]() |
![]() |
#8 | |
Форумчанин
Регистрация: 26.11.2006
Сообщений: 584
|
![]()
Zorg,
дмидми прав Цитата:
http://www.programmersforum.ru/showthread.php?t=16871 Последний раз редактировалось ZORRO2005; 18.04.2008 в 18:57. |
|
![]() |
![]() |
#9 |
Пользователь
Регистрация: 18.04.2008
Сообщений: 41
|
![]()
Спасибо, ZORRO2005!
Вот это значительно понятней. ![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 18.04.2008
Сообщений: 41
|
![]()
Кстати, если кто столкнется - добрые люди подсказали макрос на эту тему. С ним еще проще...
![]() Sub tomanyrow() Cells(1, 1).Select For r = 1 To 20 Cells(r, 1).Select StrValue = LCase(ActiveCell.Value) 'Ищем тип вина col = 2 strsearch = "натур" f = InStrRev(StrValue, strsearch, , vbTextCompare) If f > 0 Then Cells(r, col).Select ActiveCell.Value = "нат" End If Next End Sub Ну и так далее по всем вариантам |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите с текстом | Кронос | Общие вопросы Delphi | 2 | 07.05.2008 22:18 |
Помогите с текстом прграммы. | anuego | Помощь студентам | 1 | 25.04.2008 14:02 |
при пустой ячейке выскакивает "is not a valid floating point value" ПОМОГИТЕ | serserser | Помощь студентам | 17 | 14.11.2007 07:46 |
помогите с текстом radiobutton! | KlErik | Общие вопросы Delphi | 3 | 22.05.2007 08:27 |