Страницы: 1
RSS
Объединение в группы ячеек, содержащих текст из нескольких слов
 
Добрый день! Необходимо ячейки содержащие текст объединить в группы, т.е. присвоить каждой ячейке имя её группы. Принцип объединения ячеек в одну группу - максимальное количество одинаковых слов. Нижний порог выделения групп - это слово или сочетания слов которое встречается не менее 10 раз. Пример на 76 ячеек прилагается: черным цветом шрифта (колонка A) выделено дано, красным - правильный ответ, серым - как я сам пытался сделать, но пока не достиг правильного результата. С помощью надстройки !SEMTools (макроса удалить-фразы-список своих фраз) я последовательно из данных удалял слова которые не могут составить имена групп (частотность слов которых ниже 10).
И последнее: например выделяется группа с именем A222V, а другая группа с именем S477N, ячейку содержащую слова A222V S477N относим к той из этих двух групп, частотность которой выше.
 
Если правильно понял, то так (нажмите на кнопку, результат вставляется в столбцы O-Q)
 
Не много не так, но близко к результату. Ячеек содержащих слова L18F и A222V больше 10, поэтому должна быть группа L18F A222V. А ячеек со словом K1073N в Вашем ответе 9, правильно, но по условию задачи все что меньше 10 нужно выкинуть, не формировать группу. Ячейка с именем группы L18F вообще одна, её тоже выкинуть из названий групп. Спасибо за попытку!
 
Я не пойму, что не так?
Цитата
dim284: А ячеек со словом K1073N в Вашем ответе 9
Ячеек с этим словом не 9 а 11
[img]file:///C:/1111/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA_1.JPG[/img]
Цитата
dim284 написал:
Ячеек содержащих слова L18F и A222V больше 10, поэтому должна быть группа L18F A222V.
В первом сообщении:
Цитата
dim284 написал:
например выделяется группа с именем A222V, а другая группа с именем S477N, ячейку содержащую слова A222V S477N относим к той из этих двух групп, частотность которой выше
Поэтому ячейки содержащие L18F A222V относим к группе A222V, так как у неё частота повторения равна 29, а у L18F только 12. По этому принципу Вы относите ячейку A16 (H69- V70- D111N A222V N439K) к группе A222V, хотя у H69-, V70-, N439K показатель частоты равен 13, но Вы их не включаете в группу. В столбце Q я вынес частоту повторений.

Может Вы смотрели не мой результат, а свой. Мой результат выделен синим цветом в столбцах O-Q
PS Немного переписал код, но на результат это не влияет.
Изменено: msi2102 - 12.01.2021 09:45:53
 
Цитата
Ячеек с этим словом не 9 а 11
Все правильно msi2102, слов K1073N в дано 11, а групп с этим словом получилось в ответе 9 и, чтобы не множить количество групп в ответе, нужно задать им нижний порог выделения, у нас он 10, т.е. если в ответе получается меньше 10 одинаковых ячеек, то не выделяем эту группу.
Здесь важно не только количество слов, а словосочетаний - фраз. В дано частота встречаемости фразы L18F A222V = 11, т.е. больше 10, поэтому это должна быть самостоятельная группа, отдельная от группы A222V. Частота же группы A222V соответственно уменьшиться.
А остальное все правильно. С учетом этих поправок имена групп при работе Вашего макроса немного перераспределяться и получиться как в моем ответе.
Изменено: dim284 - 12.01.2021 11:19:19
 
В Вашем примере
Цитата
dim284 написал:
Нижний порог выделения групп - это слово или сочетания слов которое встречается не менее 10 раз.
Нижний порог когда определяется в конце или в начале. Я понял, что вначале определяем общее количество слов из всей базы, потом определяем те слова которые встречаются более 10 раз (это и будет наименование групп), после чего в зависимости от показателя частоты определяем к какой группе относится, если показатель частоты одинаковый, то вставляются все группы.
Если делать как хотите Вы, то где критерий по которому можно определить какую группу использовать, из одного слова или из словосочетания. Например как в примере который приводили Вы:
Цитата
dim284 написал:
Ячеек содержащих слова L18F и A222V больше 10, поэтому должна быть группа L18F A222V.
Такое словосочетание попадается 11 раз, а отдельно A222V встречается 29 раз, что должно быть в приоритете. Ячейка с L18F встречается 12 раз, если 11 из них будет в группе из словосочетания, то что делать с оставшейся одной ячейкой, если это будет отдельная группа то количество у нее будет меньше 10, значит мы ее должны исключить?
Слишком много остается непоняток.
 
Цитата
Нижний порог когда определяется в конце или в начале.
Когда определяется в конце.
Цитата
Такое словосочетание попадается 11 раз, а отдельно A222V встречается 29 раз, что должно быть в приоритете
В приоритете делаем словосочетание L18F A222V.
Цитата
что делать с оставшейся одной ячейкой
Ячейку содержащую L18F не включаем ни в какую группу, она получается одна.
Вы все правильно понимаете! Осталось чуть-чуть. Заранее спасибо!
 
А почему у Вас в примере ячейки A42-A44 (значение A222V S477N) принята группа S477N, ведь у A222V явно больше количество.

Навтыкал костылей, с ответом практически сошлось кроме ячеек A42-A44. Но гарантий не даю, что на остальном массиве будет всё правильно, нужно вставить ещё одно условие. При выборе словосочетания выбор идет по количеству слов, количество повторений не учитывается. Исправлять нет времени и желания, тоже нет.
Изменено: msi2102 - 12.01.2021 15:56:08
 
Почти отлично! Вот с ними-то и проблема: как я писал в первом письме,  если "выделяется группа с именем A222V, а другая группа с именем S477N,  ячейку  содержащую слова A222V S477N относим к той из этих двух групп,   частотность которой выше". То есть в ответе получается, что ячеек группы  A222V 15 штук (без спорных трех), а ячеек принадлежащих группе S477N 18  штук, поэтому спорные ячейки относим к той группе, которой больше, т.е.  к группе S477N.
 
Цитата
dim284 написал:
В приоритете делаем словосочетание L18F A222V.
Тогда ячейка A16 (H69- V70- D111N A222V N439K) после всех манипуляций должна быть отнесена к группе H69- V70- N439K (словосочетание - 3 слова), а не к A222V хотя у этой группы и частота выше.
Изменено: msi2102 - 13.01.2021 09:56:21
 
В ответе ячеек со словом A222V 14 штук (без спорной A16), а ячеек с фразой H69- V70- N439K 12 штук (без спорной A16), поэтому спорная ячейка по условию задачи   отправляется в большую группу - A222V.
Предлогаю оставить это как есть, буду искать решение сам и если найду, то попрошу объединить алгоритм действия в один макрос. Спасибо!
Страницы: 1
Наверх