Russian Qt Forum
Апрель 19, 2024, 04:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Подобные имена  (Прочитано 11130 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #15 : Март 28, 2017, 17:06 »

Пример:

первый список
Цитировать
Some Object   // это "просто имя" (посторонка)
mixamo:Hips    // имя с префиксом
mixamo:Spine    // имя с префиксом
Another Object    // посторонка
mixamo:Spine_Left   // опять имя с префиксом

второй список
Цитировать
prefix1_Hips    // имя с префиксом
Sphere              // посторонка
prefix1_Spine    // имя с префиксом
prefix1_Spine_Left   // опять имя с префиксом
Cube                    // посторонка
...
xyz@Hips    // имена с др префиксом и др разделителем
xyz@Spine   
xyz@Spine_Left   
Сейчас человек видит оба списка в 2 окнах. "Содержательные" имена = Hops, Splne, Spline_Left. Если в первом списке заменить "mixamo:" на "prefix1_" (или "xyz@") - будет совпадение 3 строк в 2 файлах. Вот он и просит: предложите варианты замен, чтобы не вбивать имена руками

Ну и, как уже говорилось, случай общий - вариантов может и вообще не найтись
   
Записан
deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« Ответ #16 : Апрель 07, 2017, 11:51 »

Извиняюсь, давно на форум не заходил. Алгоритм я бы сделал так:
Работа с первым списком для извлечения "mixamo:"
1. Создаем список(сравнивая каждое слово с каждым) начало строки и сколько таких строк: mixamo: - 3 строки, Some - 1 строка...
В процессе создания используем фильтрацию:
- Возможно не стоит учитывать строки если их только 1. (хотя это не универсально)
- Смотрим чтобы строка заканчивалась не на букву, строки "maximo: a" укоротить чтобы оканчивались не буквой.
- обработать строку регуляркой(чтобы хотя бы одна строка или все? соответствовали некоторому формату например"\буквы\символ\буквы"). Возможно удалить строки в которых слов больше двух, нет одного уникального символа для разделения или слова не из предметной области... по хорошему нужно прогнать алгоритм на множестве файлов и определить какие признаки что строка не подходит.

В конце может получиться "mixamo:" - 100 раз, "Some object." - 50 раз, "help-" - 20 раз... возможно mixamo будет самое большое число раз, но универсальнее для каждого слова извлечь слова, потом найти их во втором файле и возможно они там будут для mixamo встречаться чаще, а для других их не будет(хотя и не факт).

2. по второму списку пройтись аналогично, попробовать отыскать наибольшее совпадение из слов для каждого списка первой и второй группы. Хотя чисто теоретически там может "help-" вылезти на первое место, поэтому предложить разные варианты в combobox, отсортировав по количеству совпадений.
« Последнее редактирование: Апрель 07, 2017, 12:05 от deMax » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #17 : Апрель 17, 2017, 13:47 »

Хмм... ну как-то несколько расплывчато, не все дели ясны. В общем я не нашел ничего хорошего, выходит как-то длинно и сложно. Передумал задачу и сделал так

- предъявляется первый список, имена объектов которых нет во втором рисуются красным

- когда юзер дабл-кликает на красный айтем, ему предъвяляется второй список в котором уже выбрана наиболее подходящая строка (во втором находим строку с максимально длинным общим хвостом)

- юзер выбрал во втором (обычно просто Ок), и тут все становится известно: (общий хвост и начала строк в обоих списках). Проверяем в каких строках такая замена прокатит и предлагаем юзеру заменить все найденные
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 22.