ДЕТЕКТИРОВАНИЕ ПОВТОРЯЮЩИХСЯ ПАТТЕРНОВ ДЕЙСТВИЙ В ПОЛЬЗОВАТЕЛЬСКОМ ИНТЕРФЕЙСЕ
DETECTION OF REPEATED PATTERNS OF ACTIONS IN USER INTERFACE

ОБЛАСТЬ ТЕХНИКИ
[0001] Варианты осуществления изобретения в целом относятся к компьютерным системам, более конкретно к системам и способам обнаружения повторяющихся паттернов действий пользовательского интерфейса.
УРОВЕНЬ ТЕХНИКИ
[0002] Взаимодействие пользователя с программным приложением (например, электронной почтой, системой учета, системой онлайн-покупок, системой онлайн-бронирования путешествий) может включать повторяющееся выполнение определенных последовательностей действий пользовательского интерфейса (таких как выбор или активация элемента управления пользовательского интерфейса, нажатие клавиш для ввода одного или более символов и т.д.).
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
[0003] В соответствии с одним или несколькими аспектами настоящего изобретения, иллюстративный способ обнаружения повторяющихся паттернов действий пользовательского интерфейса включает: определение с помощью устройства обработки набора перекрывающихся шинглов в последовательности событий пользовательского интерфейса; группирование шинглов по множеству кластеров шинглов на основе выбранной метрики сходства шинглов; выбор кластера шинглов, имеющего максимальное, среди множества кластеров шинглов, значение выбранной метрики сходства внутри шинглов; а также идентификацию повторяющейся операции пользовательского интерфейса, представленной выбранным кластером шинглов.
[0004] В соответствии с одним или несколькими аспектами настоящего изобретения, иллюстративная система для обнаружения повторяющихся паттернов действий пользовательского интерфейса содержит память и процессор, связанный с памятью, при этом процессор выполнен с возможностью: определения набора перекрывающихся шинглов в последовательности событий пользовательского интерфейса с помощью устройства обработки; группирования шинглов во множество кластеров шинглов на основе выбранной метрики сходства шинглов; выбора кластера шинглов, имеющего максимальное, среди множества кластеров шинглов, значение выбранной метрики сходства внутри шинглов; а также идентификации повторяющейся операции пользовательского интерфейса, представленной выбранным кластером шинглов.
[0005] В соответствии с одним или несколькими аспектами настоящего изобретения, иллюстративный машиночитаемый энергонезависимый носитель данных содержит исполняемые команды, которые при выполнении компьютерной системой обеспечивают, чтобы компьютерная система: определяла с помощью устройства обработки набор перекрывающихся шинглов в последовательности событий пользовательского интерфейса; группировала шинглы во множество кластеров шинглов на основе выбранной метрики сходства шинглов; осуществляла выбор кластера шинглов, имеющего максимальное, среди множества кластеров шинглов, значение выбранной метрики сходства внутри шинглов; а также идентифицировала повторяющуюся операцию пользовательского интерфейса, представленную выбранным кластером шинглов.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0006] Изобретение станет более понятным из подробного описания, приведенного ниже, и из прилагаемых чертежей различных вариантов осуществления изобретения. Однако чертежи не должны использоваться с целью ограничения изобретения конкретными вариантами осуществления, а должны быть предназначены только для пояснения и понимания.
[0007] На фиг.1 приведено схематическое изображение высокоуровневого рабочего процесса автоматизации пользовательского интерфейса на основе обнаружения повторяющихся паттернов действий пользовательского интерфейса в соответствии с аспектами настоящего изобретения;
[0008] На фиг.2 представлены структурные схемы, иллюстрирующие способ обнаружения повторяющихся паттернов действий пользовательского интерфейса в соответствии с аспектами настоящего изобретения;
[0009] На фиг.3 представлено схематическое изображение иллюстративного набора перекрывающихся шинглов, определенных в последовательности событий пользовательского интерфейса, в соответствии с аспектами настоящего изобретения;
[0010] На фиг.4 представлено схематическое изображение процесса регулирования показателя сходства шинглов с помощью дополнительного условия, отражающего положение каждой n-граммы в соответствующем шингле в соответствии с аспектами настоящего изобретения;
[0011] На фиг.5 представлено схематическое изображение перемещения шинглов внутри кластера шинглов в соответствии с аспектами настоящего изобретения;
[0012] На фиг.6 представлено схематическое изображение расширения шинглов на заранее определенное количество элементов в соответствии с аспектами настоящего изобретения;
[0013] На фиг.7 схематично представлена иллюстративная гистограмма кривых, соединяющих соответствующие пары вхождений событий пользовательского интерфейса в последовательности событий пользовательского интерфейса в соответствии с аспектами настоящего изобретения;
[0014] На фиг.8 представлено схематическое изображение маркировки в иллюстративной последовательности событий пользовательского интерфейса элементов, покрытых шинглами, отражающими экземпляры операции пользовательского интерфейса, идентифицированные выбранными кластерами, в соответствии с аспектами настоящего изобретения;
[0015] На фиг.9 схематично представлено объединение двух кластеров шинглов в один кластер в соответствии с аспектами настоящего изобретения;
[0016] На фиг.10 представлена функциональная схема компьютерной системы в соответствии с некоторыми вариантами осуществления настоящего изобретения.
ПОДРОБНОЕ ОПИСАНИЕ
[0017] В рамках настоящего документа приведено описание систем и способов обнаружения повторяющихся паттернов действий пользовательского интерфейса в целях оказания содействия пользователю путем автоматизации определенных многократно выполняемых задач.
[0018] Взаимодействие пользователя с программным приложением (например, электронной почтой, системой учета, системой онлайн-покупок или системой онлайн-бронирования путешествий) может включать повторяющееся выполнение определенных последовательностей действий пользовательского интерфейса, таких как выбор или активация элемента управления пользовательского интерфейса, нажатие клавиш для ввода одного или более символов и т.д. В рамках настоящего документа «операция пользовательского интерфейса» относится к последовательности действий пользовательского интерфейса, осуществляемых с целью выполнения определенной задачи. «Экземпляр операции пользовательского интерфейса» относится к определенной последовательности действий пользовательского интерфейса, осуществляющей операцию пользовательского интерфейса.
[0019] В некоторых случаях повторяющаяся задача может быть изменена. Например, при бронировании пользователем деловой поездки даты и места назначения могут измениться, в то время как остальные действия пользователя с системой (например, имя пассажира, адрес, предпочтения относительно места, способы оплаты) останутся практически такими же. Обнаружение повторяющихся операций пользовательского интерфейса с высокой степенью точности может обеспечить их эффективную автоматизацию. Системы и способы в соответствии с настоящим изобретением улучшают эффективность пользовательского интерфейса за счет обнаружения повторяющихся паттернов действий пользовательского интерфейса с высокой степенью точности.
[0020] Системы и способы в соответствии с настоящим изобретением анализируют зарегистрированные последовательности событий и идентифицируют идентичные или подобные последовательности событий пользовательского интерфейса, соответствующие повторяющимся операциям пользовательского интерфейса. Идентифицированные операции пользовательского интерфейса могут использоваться, например, с целью подготовки модели с последующим использованием для автоматизации пользовательского интерфейса. В качестве наглядного примера пользователю может быть представлен список задач, которые могут быть автоматически выполнены посредством идентифицированных операций пользовательского интерфейса. После выбора пользователем задача может быть выполнена автоматически с использованием соответствующей записанной последовательности событий пользовательского интерфейса согласно подробному описанию, приведенному выше в настоящем документе.
[0021] На фиг.1 представлено схематическое изображение высокоуровневого рабочего процесса автоматизации пользовательского интерфейса на основе обнаружения повторяющихся паттернов действий пользовательского интерфейса в соответствии с аспектами настоящего изобретения. Как схематично показано на фиг.1, компьютерная система, реализующая способ, может использовать компонент 110 записи пользовательского интерфейса для регистрации действий пользовательского интерфейса. Записанный компонент может быть реализован драйвером фильтрации, перехватывающим действия пользовательского интерфейса.
[0022] Перехваченные действия пользовательского интерфейса могут быть преобразованы в последовательность событий, в которой каждое событие может отражать одно или несколько действий пользовательского интерфейса. Примеры событий включают открытие вкладки браузера, открытие страницы, заданной унифицированным указателем ресурса (URL), ввод текста в поле и т.д. Каждое событие может характеризоваться набором параметров, включая, например, тип события (например, щелчок мыши, фокус окна, ввод текста), приложение, связанное с событием (т.е. приложение, получающее команды пользователя), время события, тип элемента пользовательского интерфейса, связанного с событием (например, кнопка, ссылка, текст, пункт меню), относительное положение элемента пользовательского интерфейса по отношению к иным элементам пользовательского интерфейса, координаты элементов пользовательского интерфейса в окне приложения, текст, связанный с событием (например, последовательность символов, полученная с клавиатуры), и (или) иную соответствующую информацию. Каждое событие может быть закодировано соответствующим токеном (например, целым числом), так что идентичные события будут кодироваться одним и тем же токеном, а разные события будут кодироваться разными токенами. Два или более события могут считаться идентичными, если они имеют идентичные значения заранее определенного подмножества параметров события (например, тип события, связанное с событием приложение, тип элемента пользовательского интерфейса и связанный с событием текст). Таким образом, данная последовательность событий может быть представлена массивом токенов, при этом каждый токен будет кодировать соответствующее событие.
[0023] Регистрация событий пользовательского интерфейса может выполняться в ходе одного или нескольких сеансов 120 пользовательского интерфейса, связанных с одним или несколькими пользователями. В некоторых вариантах осуществления все зарегистрированные сеансы объединяются, а остальные операции в соответствии со способом выполняются над объединенной последовательностью событий. В качестве альтернативы зарегистрированные сеансы могут быть сгруппированы в два или более кластера, и каждый кластер сеансов может быть проанализирован отдельно. Таким образом, два сеанса могут быть сгруппированы вместе в один кластер сеансов, если значение их метрики сходства сеансов превышает заранее определенный порог сходства сеансов. В качестве наглядного примера метрика сходства сеансов может быть основана на сходстве гистограмм, отражающих частоты появления n-грамм согласно подробному описанию, приведенному ниже в настоящем документе.
[0024] Зарегистрированные данные сеанса могут быть поданы в движок 130 обнаружения повторяющихся паттернов, который может реализовывать способ 200 обнаружения паттернов (фиг.2). Идентифицированные повторяющиеся паттерны могут использоваться, например, в целях подготовки модели 140 с последующим использованием для автоматизации пользовательского интерфейса. В качестве наглядного примера пользователю может быть представлен список задач, которые могут быть автоматически выполнены посредством идентифицированных операций пользовательского интерфейса. После выбора пользователем задача может быть выполнена автоматически с использованием соответствующей записанной последовательности событий пользовательского интерфейса.
[0025] На фиг.2 представлены структурные схемы, показывающие иллюстративный способ 200 обнаружения повторяющихся паттернов действий пользовательского интерфейса в соответствии с аспектами настоящего изобретения. Способ 200 может выполняться логикой обработки, которая может включать в себя аппаратное обеспечение (например, схему, выделенную логику, программируемую логику, микрокод и т.д.), программное обеспечение (например, команды, выполняемые на устройстве обработки), встроенное программное обеспечение или их комбинацию. В одном из вариантов осуществления способ 200 может выполняться устройством обработки (например, устройством 1002 обработки, показанном на фиг.10). В некоторых вариантах осуществления способ 200 может выполняться с помощью одного потока обработки. В альтернативном варианте осуществления способ 200 может выполняться двумя или несколькими потоками обработки, каждый из которых выполняет одну или несколько отдельных функций, процедур, подпрограмм или операций, относящихся к способу. В качестве наглядного примера потоки обработки, реализующие способ 200, могут быть синхронизированы (например, с помощью семафоров, критических секций и (или) иных механизмов синхронизации потоков). В альтернативном варианте потоки обработки, реализующие способ 200, могут выполняться асинхронно по отношению друг к другу. Таким образом, несмотря на то что на фиг.2 и в соответствующем описании операции способа 200 перечислены в определенном порядке, различные варианты осуществления способов могут выполнять по крайней мере некоторые из описанных операций параллельно и (или) в произвольно выбранном порядке.
[0026] В блоке 210 устройство обработки для реализации способа генерирует алфавит событий пользовательского интерфейса (то есть упорядоченный список уникальных событий пользовательского интерфейса), выбирая уникальные события пользовательского интерфейса из одной или нескольких последовательностей зарегистрированных событий пользовательского интерфейса.
[0027] В блоке 220 устройство обработки генерирует алфавит из n-грамм на основе алфавита событий пользовательского интерфейса. Каждая n-грамма представляет собой непрерывную последовательность из не более чем заранее определенного числа n событий пользовательского интерфейса, извлеченных из алфавита событий пользовательского интерфейса. При n=1 алфавит n-грамм будет соответствовать алфавиту событий пользовательского интерфейса. Например, алфавит из 2-грамм, соответствующий алфавиту «12342642349», будет представлен следующей последовательностью:
{'1', '2', '3', '4', '6', '9', '12', '23', '34', '42', '26', '64', '49'}.
[0028] В блоке 230 устройство обработки определяет в заданной последовательности зарегистрированных событий пользовательского интерфейса набор перекрывающихся шинглов заданного размера с заданным смещением относительно друг друга. В рамках настоящего документа «шингл» относится к последовательности с заранее определенным количеством элементов. В качестве наглядного примера на фиг.3 показан набор перекрывающихся шинглов 310A–310H размера 10 со смещением 4.
[0029] В блоке 240 устройство обработки сравнивает каждый сгенерированный шингл с другим сгенерированным шинглом на основании метрики, отражающей степень сходства двух шинглов. В некоторых вариантах осуществления метрика может быть основана на частотах появления каждой n-граммы в исходном алфавите. Следующая гистограмма отражает частоту 2-грамм в вышеописанном примере алфавита «12342642349»:
{'1': 1, '2': 3, '3': 2, '4': 3, '6': 1, '9': 1, '12': 1, '23': 2, '34': 2, '42': 2, '26': 1, '64': 1, '49': 1}
[0030] В некоторых вариантах осуществления метрика сходства шингла может быть основана на расстоянии Бхаттачария, которое отражает сходство двух распределений вероятностей в одной и той же области. Таким образом, метрика сходства двух шинглов, представленная их соответствующими гистограммами x=(x1, x2,…, xn) и y=(y1, y2,…, yn), может быть вычислена следующим образом:
[0031]
[0032] В некоторых вариантах осуществления метрика сходства шинглов может включать в себя дополнительное условие, отражающее положение каждой n-граммы 410A–410B в соответствующем шингле 420A–420B согласно схематичному изображению, показанному на фиг.4. Соответственно, относительное положение двух идентичных n-грамм можно выразить следующим образом:
[0033], ,
i
1
где  - положение n-граммы внутри первого шингла,
2
i - положение n-граммы внутри второго шингла,
L
1
- размер первого шингла,
L
2
- размер второго шингла.
[0034] В блоке 250 устройство обработки группирует шинглы в два или более кластера. В качестве наглядного примера процесс кластеризации начинается со связывания первого шингла с первым кластером. Затем для каждого последующего шингла ближайший кластер идентифицируется на основании выбранной метрики сходства шинглов. В качестве наглядного примера сходство заданного шингла и заданного кластера может быть определено как среднее значение, вычисленное по всем значениям метрики сходства между заданным шинглом и каждым шинглом в кластере. Соответственно, происходит идентификация значения сходства заданного шингла с каждым из кластеров. Если максимальное среди всех кластеров значение сходства превышает заранее определенный порог, шингл связывается с таким кластером; в противном случае создается новый кластер, и шингл связывается с вновь созданным кластером.
[0035] В блоке 260 устройство обработки выбирает лучший кластер, который представляет собой кластер с максимальным среди всех кластеров сходством шинглов внутри кластера, которое может быть представлено средним сходством, вычисленным для всех пар шинглов, принадлежащих кластеру.
[0036] В некоторых вариантах осуществления при наличии двух или более кластеров с одинаковым внутрикластерным сходством шинглов выбирается самый большой кластер. В некоторых вариантах осуществления с целью выделения более крупных кластеров, даже если их метрики сходства шинглов внутри кластера ниже метрики сходства шинглов внутри кластера меньших кластеров, в метрику сходства шинглов внутри кластера может быть введен множитель. В качестве наглядного примера множитель может быть выражен как tanh(? * n), где n - это размер кластера.
[0037] В некоторых вариантах осуществления устройство обработки может пытаться увеличить сходство шинглов внутри кластера путем итеративного сдвига каждого шингла 510A–510B в выбранном кластере 520 согласно схематическому изображению, показанному на фиг.5. После каждой операции сдвига сходство шинглов внутри кластера вычисляется повторно. Операция сдвига, которая оказывает отрицательное воздействие на сходство шинглов внутри кластера, может быть отменена. Последовательные операции сдвига могут выполняться до тех пор, пока сходство шинглов внутри кластера не увеличится. Некоторые операции сдвига могут привести к полному перекрытию идентичных шинглов, и в таком случае один из двух перекрывающихся шинглов удаляется.
[0038] В некоторых вариантах осуществления устройство обработки может пытаться увеличить сходство шинглов внутри кластера путем итеративного расширения каждого шингла 610A–610B выбранного кластера 620 на заранее определенное количество элементов согласно схематическому изображению, показанному на фиг.6. Последовательные операции расширения могут выполняться до тех пор, пока сходство шинглов внутри кластера не увеличится. Некоторые операции расширения могут привести к полному перекрытию идентичных шинглов, и в таком случае один из двух перекрывающихся шинглов удаляется.
[0039] Операция расширения границ может иногда приводить к чрезмерному разрастанию шингла, что может привести к непреднамеренному объединению нескольких последовательных операций в одну операцию. Во избежание такого нежелательного эффекта экземпляры, соответствующие размеры которых превышают заданный высокий порог (например, 20–30 событий пользовательского интерфейса), в некоторых вариантах осуществления могут быть разделены на две операции с помощью следующей процедуры: для каждого события пользовательского интерфейса из заданного большого экземпляра регистрируются индексы его первого и последнего вхождения в экземпляр. Для каждого события пользовательского интерфейса из экземпляра регистрируется индекс его первого и последнего вхождений в экземпляр. Затем строится гистограмма кривых 710A–710N, соединяющих соответствующие пары вхождений согласно схематическому изображению, показанному на фиг.7. После этого определяется положение элемента, с которым соединено максимальное количество кривых. Если максимальное количество кривых превышает предварительно определенное пороговое количество кривых, экземпляр разделяется после идентифицированного элемента, с которым соединено максимальное количество кривых. Такая процедура может выполняться в обратном порядке для вновь образованных экземпляров. В противном случае, если максимальное количество кривых опускается ниже заданного порогового количества кривых, разделение экземпляров не выполняется.
[0040] Получающийся в результате кластер, созданный в блоке 260, представляет повторяющуюся операцию пользовательского интерфейса, в то время как шинглы такого кластера представляют экземпляры идентифицированной повторяющейся операции пользовательского интерфейса.
[0041] В блоке 270 устройство обработки маркирует в исходной последовательности событий пользовательского интерфейса элементы, охваченные шинглами выбранного кластера, отражающими экземпляры операции пользовательского интерфейса, идентифицированные в блоке 260, и способ возвращается к блоку 230, где создается новый набор шинглов, так что вновь созданный шингл не будет перекрываться с отмеченными элементами последовательности согласно схематическому изображению, показанному на фиг.8. Операции блока 230–270 повторяются несколько раз до тех пор, пока у лучшего идентифицированного кластера значение сходства внутри кластера не опустится ниже заранее определенного нижнего порога (блок 280).
[0042] В некоторых вариантах осуществления устройство обработки может дополнительно выполнять необязательные функции, описание которых приведено ниже в настоящем документе со ссылкой на блоки 290–298.
[0043] В блоке 290 устройство обработки в ряде случаев выполняет поиск возможных «потерянных» (то есть неучтенных) экземпляров операции пользовательского интерфейса. Устройство обработки генерирует для каждого кластера набор шинглов, охватывающих немаркированные элементы последовательности событий пользовательского интерфейса. Размер шинглов выбирается в соответствии со средним размером экземпляров кластера. Затем описанные выше операции сдвига и расширения выполняются в отношении каждого шингла вновь созданных шинглов. Если возникающее в связи с этим сходство внутри кластера превышает заранее определенный высокий порог, вновь созданный шингл добавляется к кластеру.
[0044] В блоке 294 устройство обработки в ряде случаев пытается идентифицировать пары кластеров, которые могут быть объединены. В ответ на определение того, что заданный критерий объединения шинглов удовлетворяется в отношении пары кластеров шинглов, такие кластеры могут быть объединены. В качестве наглядного примера критерий объединения шинглов устанавливает, всегда ли экземпляры j-кластера (или по меньшей мере в заранее определенном количестве случаев) следуют экземплярам i-кластера. Если данное условие выполняется, i-кластер и j-кластер объединяются в один кластер согласно схематическому изображению, показанному на фиг.9.
[0045] В блоке 298 устройство обработки в ряде случаев пытается скорректировать границы кластера. В ответ на определение того, что заданный критерий сдвига границы выполняется по отношению к одной из границ данного кластера шинглов и заданному элементу последовательности событий пользовательского интерфейса, граница может быть сдвинута к заданному элементу последовательности событий пользовательского интерфейса. В качестве наглядного примера в отношении данного кластера соответствующая частота вхождений вычисляется для каждого из элементов, расположенных в пределах заранее определенного количества элементов начального элемента кластера. Затем выбирается заранее определенное количество наиболее часто встречающихся элементов. Для каждого экземпляра его начальный элемент сдвигается к одному из выбранных наиболее часто встречающихся элементов, если такой элемент находится поблизости от начального элемента. Аналогичные операции могут быть выполнены для последнего элемента каждого кластера.
[0046] Получающиеся в результате данного способа кластеры представляют соответствующие операции пользовательского интерфейса, в то время как шинглы таких кластеров представляют собой экземпляры идентифицированных повторяющихся операций пользовательского интерфейса.
[0047] Идентифицированные операции пользовательского интерфейса и их соответствующие экземпляры могут использоваться, например, в целях подготовки модели с последующим использованием для автоматизации пользовательского интерфейса. В качестве наглядного примера пользователю может быть представлен список задач, которые могут быть автоматически выполнены посредством идентифицированных операций пользовательского интерфейса. После выбора пользователем задача может быть выполнена автоматически с использованием соответствующей записанной последовательности событий пользовательского интерфейса.
[0048] На фиг.10 представлен пример компьютерной системы 1000, которая может выполнять описанные в настоящем документе способы. Компьютерная система может быть подключена (например, по сети) к иным компьютерными системам в локальной сети, интрасети, экстрасети или Интернете. Компьютерная система может работать в качестве сервера в сетевой среде «клиент-сервер». Компьютерная система может представлять собой персональный компьютер (ПК), планшет, телевизионную приставку (STB), карманный персональный компьютер (КПК), мобильный телефон, фотоаппарат, видеокамеру или любое устройство, способное выполнять набор команд (последовательных или иных), определяющих действия, которые должны быть выполнены таким устройством. Кроме того, несмотря на наглядное изображение только одной компьютерной системы, термин «компьютер» должен также включать любую совокупность компьютеров, которые индивидуально или совместно выполняют набор (или несколько наборов) команд для реализации любого одного или нескольких способов, раскрытых в настоящем документе.
[0049] Иллюстративная компьютерная система 1000 включает в себя устройство 1002 обработки, оперативную память 1004 (например, постоянное запоминающее устройство (ПЗУ), флэш-память, динамическое оперативное запоминающее устройство (ДОЗУ), такое как синхронное ДОЗУ (СДОЗУ)), статическую память 1006 (например, флэш-память, статическое оперативное запоминающее устройство (СОЗУ)) и устройство 1016 хранения данных, которые взаимодействуют друг с другом по шине 1008.
[0050] Устройство 1002 обработки представляет собой одно или несколько устройств обработки общего назначения, таких как микропроцессор, центральный процессор или т.д. В частности, устройство 1002 обработки может представлять собой микропроцессор со сложным набором команд (CISC), микропроцессор с сокращенным набором команд (RISC), микропроцессор с очень длинным словом команд (VLIW), процессор, реализующий иные наборы команд, или процессоры, реализующие комбинацию наборов команд. Устройство 1002 обработки может также представлять собой одно или несколько устройств обработки специального назначения, таких как специализированная заказная интегральная схема (ASIC), программируемая пользователем вентильная матрица (FPGA), цифровой сигнальный процессор (DSP), сетевой процессор или т.д. Устройство 1002 обработки выполнено с возможностью исполнения команд 1026 для реализации механизма 111 классификации и (или) механизма 161 подготовки, как показано на фиг.1, а также выполнения операций и шагов, описанных в настоящем документе (например, способ 200 обнаружения повторяющихся паттернов действий пользовательского интерфейса).
[0051] Компьютерная система 1000 может также включать в себя устройство 1022 сетевого интерфейса. Компьютерная система 1000 также может включать в себя видеодисплей 1010 (например, жидкокристаллический дисплей (ЖКД) или электронно-лучевую трубку (ЭЛТ)), устройство 1012 буквенно-цифрового ввода (например, клавиатуру), устройство 1014 управления курсором (например, мышь) и устройство 1020 формирования сигнала (например, динамик). В качестве наглядного примера видеодисплей 1010, устройство 1012 буквенно-цифрового ввода и устройство 1014 управления курсором могут быть объединены в один компонент или устройство (например, сенсорный ЖК-экран).
[0052] Устройство 1016 хранения данных может включать в себя машиночитаемый носитель 1024, на котором хранятся команды 1026, воплощающие любой один способ или функцию или несколько способов или функций, описание которых приводится в настоящем документе. Команды 1026 могут также находиться, полностью или по крайней мере частично, в оперативной памяти 1004 и (или) в устройстве 1002 обработки во время их исполнения компьютерной системой 1000, причем оперативная память 1004 и устройство 1002 обработки также представляют собой машиночитаемые носители. В некоторых вариантах осуществления команды 1026 могут дополнительно передаваться или приниматься по сети через устройство 1022 сетевого интерфейса.
[0053] Несмотря на то что на наглядных примерах машиночитаемый носитель 1024 изображен как один носитель, термин «машиночитаемый носитель данных» следует понимать как включающий один носитель или несколько носителей (например, централизованную или распределенную базу данных и (или) соответствующие кэши и серверы), которые хранят один или несколько наборов команд. Термин «машиночитаемый носитель данных» также должен включать в себя любой носитель, который способен хранить, кодировать или нести набор команд для исполнения машиной и обеспечивает, чтобы машина выполняла любой один способ или несколько способов по настоящему изобретению. Термин «машиночитаемый носитель данных», соответственно, включает, помимо прочего, твердотельные запоминающие устройства, оптические носители и магнитные носители.
[0054] Несмотря на то что приведенные в настоящем документе операции способов изображены и описаны в определенном порядке, порядок выполнения операций каждого способа может быть изменен таким образом, что определенные операции могут выполняться в обратном порядке или что определенные операции могут выполняться, по крайней мере частично, одновременно с иными операциями. В некоторых вариантах осуществления команды или подоперации отдельных операций могут выполняться прерывистым и (или) чередующимся образом.
[0055] Следует понимать, что приведенное выше описание является схематическим и не носит ограничительный характер. Многие иные варианты осуществления будут очевидны специалистам в данной области после прочтения и понимания приведенного выше описания. Поэтому объем изобретения должен определяться со ссылкой на прилагаемую формулу изобретения, наряду с полным объемом эквивалентов, на которые распространяется такая формула.
[0056] В приведенном выше описании изложены многочисленные подробности. Однако специалисту в данной области будет очевидно, что аспекты настоящего изобретения могут быть реализованы без таких конкретных деталей. В некоторых случаях известные структуры и устройства показаны в виде блок-схемы, а не подробно во избежание затруднения понимания предмета настоящего изобретения.
[0057] Некоторые части подробного описания, приведенного выше, представлены в терминах алгоритмов и символьных представлений операций над битами данных в памяти компьютера. Такие алгоритмические описания и представления являются средствами, используемыми специалистами в области обработки данных с целью наиболее эффективной передачи сути своей работы иным специалистам в данной области. Как в рамках настоящего документа, так и в целом алгоритм понимается как самосогласованная последовательность шагов, приводящая к желаемому результату. Шаги - это этапы, требующие физических манипуляций с физическими величинами. Обычно, хотя и не обязательно, такие величины принимают форму электрических или магнитных сигналов, которые можно хранить, передавать, комбинировать, сравнивать или использовать иным образом. Иногда, в основном по соображениям общепринятой практики, удобно называть такие сигналы битами, значениями, элементами, символами, знаками, терминами, числами и т.д.
[0058] Однако следует помнить, что все такие и подобные термины должны быть связаны с соответствующими физическими величинами и являются лишь удобными обозначениями, применяемыми в отношении к таким величинам. Если специально не указано иное, как очевидно из последующего обсуждения, следует понимать, что во всем описании обсуждения, использующие такие термины, как «получение», «определение», «выбор», «хранение», «анализ» и т.д., относятся к действиям и процессам компьютерной системы или аналогичного электронного вычислительного устройства, которое использует и преобразует данные, представленные в виде физических (электронных) величин в регистрах и памяти компьютерной системы, в иные данные, аналогично представленные в виде физических величин в памяти или регистрах компьютерной системы или иных подобных устройствах хранения, передачи или отображения информации.
[0059] Настоящее изобретение также относится к устройству для выполнения операций, описанных в настоящем документе. Данное устройство может быть специально сконструировано для требуемых целей или оно может состоять из компьютера общего назначения, избирательно активируемого или реконфигурируемого компьютерной программой, хранящейся в компьютере. Такая компьютерная программа может храниться на машиночитаемом носителе данных, таком как любой тип диска, включая дискеты, оптические диски, компакт-диски и магнитно-оптические диски, постоянные запоминающие устройства (ПЗУ), оперативные запоминающие устройства (ОЗУ), ППЗУ, ЭСППЗУ, магнитные или оптические платы или любой тип носителя, подходящий для хранения электронных команд, каждый из которых соединен с шиной компьютерной системы.
[0060] Алгоритмы и отображения, представленные в настоящем документе, по своей сути не связаны с каким-либо конкретным компьютером или иным устройством. Различные системы общего назначения могут использоваться с программами в соответствии с изложенной в настоящем документе идеей, или может оказаться удобным создание более специализированных устройств с целью выполнения требуемых этапов способа. Необходимая структура для различных систем будет выглядеть таким образом, как указано в описании. Кроме того, аспекты настоящего изобретения не описаны со ссылкой на какой-либо конкретный язык программирования. Следует отметить, что для реализации описанных в данном документе способов по настоящему изобретению можно использовать различные языки программирования.
[0061] Аспекты настоящего изобретения могут быть представлены в виде компьютерного программного продукта или программного обеспечения, которое может включать в себя машиночитаемый носитель, на котором хранятся команды, которые могут использоваться для программирования компьютерной системы (или иных электронных устройств) с целью выполнения процесса в соответствии с настоящим изобретением. Машиночитаемый носитель включает любой механизм для хранения или передачи информации в форме, читаемой машиной (например, компьютером). Например, машиночитаемый (например, читаемый компьютером) носитель включает в себя машиночитаемый (например, читаемый компьютером) носитель данных (например, постоянное запоминающее устройство («ПЗУ»), оперативное запоминающее устройство («ОЗУ»), магнитные дисковые носители, оптические носители, устройства флэш-памяти и т.д.).
[0062] Слова «пример» или «иллюстративный» используются в настоящем документе для обозначения того, что служит примером, образцом или наглядным изображением. Любой аспект или промышленный образец, описанные в настоящем документе как «пример» или «иллюстративный», не обязательно должны толковаться как предпочтительные или преимущественные по сравнению с иными аспектами или промышленными образцами. Напротив, использование слов «пример» или «иллюстративный» предназначено для конкретного представления понятий. Используемый в данной заявке термин «или» предназначен для обозначения включающего «или», а не исключающего «или». То есть, если не указано иное или не ясно из контекста, фраза «X включает A или B» означает любую из естественных включающих перестановок. То есть, если X включает A; X включает B; или X включает и A, и B, то условие «X включает A или B» удовлетворяется в любом из вышеперечисленных случаев. Кроме того, слова в единственном числе, используемые в данной заявке и прилагаемой формуле изобретения, следует толковать как «один или несколько», если не указано иное или если из контекста не ясно, что они относятся к форме единственного числа. Более того, использование термина «вариант осуществления» или «один вариант осуществления», или «вариант осуществления», или «один из вариантов осуществления» во всем тексте не означает одно и то же осуществление или один и тот же вариант осуществления, если они не описаны как таковые. Кроме того, термины «первый», «второй», «третий», «четвертый» и т.д., используемые в настоящем документе, предназначены для обозначения различий между различными элементами и не обязательно имеют порядковое значение в соответствии с их цифровым обозначением.
[0063] Несмотря на то что многие изменения и модификации изобретения, несомненно, станут очевидными для специалиста в данной области после прочтения приведенного выше описания, следует понимать, что любой конкретный вариант осуществления, показанный и описанный в качестве иллюстрации, ни при каких условиях не должен считаться ограничительным. Таким образом, ссылки на детали различных вариантов осуществления не предназначены для ограничения объема формулы изобретения, которая сама по себе описывает только те признаки, которые считаются изобретением.