IP Library Granted Patent US 11,978,067
Granted Patent B2
US 11,978,067 · App. 17/096,255 · Granted May 7, 2024

Determining patterns within a string sequence of user actions

Inventors: Tung Mai (San Jose, CA); Iftikhar Ahamath Burhanuddin (Bangalore, IN); Georgios Theocharous (San Jose, CA); Anup Rao (San Jose, CA)
Assignee: Adobe Inc.
G06Q30/0201G06F7/08G06Q10/10G06F3/14
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,978,067
App. No.
17/096,255
Granted
May 7, 2024
Kind
B2
Abstract

Techniques are provided for analyzing user actions that have occurred over a time period. The user actions can be, for example, with respect to the user's navigation of content or interaction with an application. Such user data is provided in an action string, which is converted into a highly searchable format. As such, the presence and frequency of particular user actions and patterns of user actions within an action string of a particular user, as well as among multiple action strings of multiple users, are determinable. Subsequences of one or more action strings are identified and both the number of action strings that include a particular subsequence and the frequency that a particular subsequence is present in a given action string are determinable. The conversion involves breaking that string into a sorted list of locations for the actions within that string. Queries can be readily applied against the sorted list.

Claims (85)

1. A method for recognizing an action pattern amongst a plurality of action strings, the method comprising:

receiving, by a string module that is executable by at least one processor, a plurality of S action strings, each action string s of the plurality of S action strings comprising a plurality of actions;

for a given action string s′ of the S action strings, the given action string s′ consisting of a sequence of n unique actions, identifying locations of each of the n unique actions in the given action string s′, wherein each of the n unique actions is performed at a website or in a software application;

generating n sorted lists, one for each of the n unique actions in the given action string s′, wherein a particular one of the n sorted lists comprises a sorted list of locations of a corresponding particular one of the n unique actions within the given action string s′;

receiving, by a pattern count module that is executable by the at least one processor, an action pattern that includes at least a first action and a second action, wherein the first and second actions are included amongst the n unique actions;

for the given action string s′, determining, by the pattern count module, if the action pattern is present as a subsequence within the given action string s′, wherein determining if the action pattern is present comprises

extracting, from one of the generated n sorted lists that is associated with the first action, a first location of the first action in the given action string s′,

setting a pointer location to the first location of the first action, and

extracting, from one of the n sorted lists that is associated with the second action, a first location of the second action in the given action string s′ that is also after the pointer location; and

providing, by a pattern output module that is executable by the at least one processor, a total number of action strings that include the action pattern.

2. The method of claim 1 , wherein each action string s of the plurality of S action strings is performed by a different user.

3. The method of claim 1 , wherein each action string s of the plurality of S action strings is performed at a different time by a same user.

4. The method of claim 1 , wherein generating the n sorted lists comprises sequentially traversing the given action string s′ to identify locations for each of the n unique actions.

5. The method of claim 1 , wherein

prior to receiving the plurality of S action strings, the method further includes generating the given action string s′ by concatenating one or more user actions and storing the given action string s′ in a memory, and

receiving the plurality of S action strings comprises retrieving the given action string s′ from the memory.

6. The method of claim 1 , wherein

receiving the action pattern comprises receiving the action pattern via a user interface, and

providing the total number of action strings comprises displaying the total number of action strings via a display device.

7. The method of claim 1 , further comprising determining if the action pattern is present as a subsequence within each action string s of the plurality of S action strings.

8. A system configured to recognize an action pattern amongst a plurality of action strings, the system comprising:

at least one processor;

a string module, executable by the at least one processor, and configured to receive a plurality of S action strings, each action string s of the plurality of S action strings comprising a plurality of actions;

a unique action list module, executable by the at least one processor, and configured to

for a given action string s′ of the S action strings, the given action string s′ consisting of a sequence of n unique actions, identifying locations of each of the n unique actions in the given action string s′, wherein each of the n unique actions is performed at a website or in a software application, and

generate n sorted lists, one for each of the n unique actions in the given action string s′, wherein a particular one of the n sorted lists comprises a sorted list of locations of a corresponding particular one of the n unique actions within the given action string s′;

a pattern count module, executable by the at least one processor, and configured to

receive an action pattern that includes at least a first action and a second action, wherein the first and second actions are included amongst the n unique actions, and

extracting, from one of the generated n sorted lists that is associated with the first action, a first location of the first action in the given action string s′,

setting a pointer location to the first location of the first action, and

extracting, from one of the n sorted lists that is associated with the second action, a first location of the second action in the given action string s′ that is also after the pointer location; and

a pattern output module, executable by the at least one processor, and configured to provide a total number of action strings that include the action pattern.

9. The system of claim 8 , wherein the pattern count module is configured to provide the total number of action strings that include the action pattern from amongst the plurality of S action strings.

10. The system of claim 8 , wherein each action string s of the plurality of S action strings is performed by a different user.

11. The system of claim 8 , wherein each action string s of the plurality of S action strings is performed at a different time by a user.

12. The system of claim 8 , wherein the unique action list module is configured to sequentially traverse the given action string s′ to identify locations for each of the n unique actions.

13. The system of claim 8 , wherein the string module is further configured to

generate the given action string s′ by concatenating one or more user actions and storing the given action string s′ in a memory, and

receive the plurality of S action strings from the memory.

14. The system of claim 8 , wherein the pattern count module is configured to receive the action pattern via a user interface, and wherein the pattern output module is configured to display the total number of action strings via a display device.

15. The system of claim 8 , wherein the pattern count module is configured to determine if the action pattern is present as a subsequence within each action string s of the plurality of S action strings.

16. A computer program product including one or more non-transitory machine-readable mediums having instructions encoded thereon that when executed by at least one processor cause a process to be carried out for recognizing an action pattern amongst a plurality of S action strings, the process comprising:

receiving, by the at least one processor, the plurality of S action strings, each action string s of the plurality of S action strings comprising a plurality of actions;

for a given action string s′ of the S action strings, the given action string s′ consisting of a sequence of n unique actions, identifying locations of each of the n unique actions in the given action string s′, wherein each of the n unique actions is performed at a website or in a software application;

generating, by the at least one processor, n sorted lists, one for each of the n unique actions in the given action string s′, wherein a particular one of the n sorted lists comprises a sorted list of locations of a corresponding particular one of the n unique actions within the given action string s′;

receiving, by the at least one processor, an action pattern that includes at least a first action and a second action, wherein the first and second actions are included amongst the n unique actions;

for the given action string s′, determining, by the at least one processor, if the action pattern is present as a subsequence within the given action string s′, wherein determining if the action pattern is present comprises

extracting, from one of the generated n sorted lists that is associated with the first action, a first location of the first action in the given action string s′,

setting a pointer location to the first location of the first action, and

extracting, from one of the n sorted lists that is associated with the second action, a first location of the second action in the given action string s′ that is also after the pointer location; and

providing, by the at least one processor, a total number of action strings that include the action pattern.

17. The computer program product of claim 16 , wherein each action string s of the plurality of S action strings is performed by a different user.

18. The computer program product of claim 16 , wherein each action string s of the plurality of S action strings is performed at a different time by a user.

19. The computer program product of claim 16 , wherein generating the n sorted lists comprises sequentially traversing the given action string s′ to identify locations for each of the n unique actions.

20. The computer program product of claim 16 , wherein

the process further comprises generating the given action string s′ by concatenating one or more user actions and storing the given action string s′ in a memory, and

receiving the plurality of S action strings comprises retrieving the given action string s′ from the memory.

21. The computer program product of claim 16 , wherein

receiving the action pattern comprises receiving the action pattern via a user interface, and

providing the total number of action strings comprises displaying the total number of action strings via a display device.

22. The computer program product of claim 16 , further comprising determining if the action pattern is present as a subsequence within each action string s of the plurality of S action strings.

23. A method for recognizing subsequences within an action string, the method comprising:

receiving, by a string module that is executable by at least one processor, the action string, wherein the action string comprises a sequence of m unique actions, wherein each of the m unique actions is performed at a website or in a software application;

identifying locations of each of the m unique actions in the action string;

generating, by a unique action list module that is executable by the at least one processor, m sorted lists, one for each of the m unique actions in the action string, wherein a particular one of the m sorted lists comprises a sorted list of locations of a corresponding particular one of the m unique actions within the action string;

using, by an additional list module that is executable by the at least one processor, at least one of the m sorted lists to generate N groups of action subsequences, an nth one of the N groups having subsequences of n actions, wherein n is an integer that increments from 1 to N;

generating, for a particular one of the action subsequences that comprises a first action and a second action, a list of locations in the action string for each of the first and second actions, wherein generating the list of locations comprises

extracting, from one of the m sorted lists, a first location of the first action in the particular action subsequence,

setting a pointer location to the first location of the first action, and

extracting, from one of the m sorted lists, a first location of the second action in the particular action subsequence that is also after the pointer location;

receiving, by a pattern frequency module that is executable by the at least one processor, a threshold value;

using any of the N groups of action subsequences, determining, by the pattern frequency module, action subsequences that are present within the action string a number of times that is at or above the threshold value; and

providing, by a pattern output module that is executable by the at least one processor, the action subsequences that are present within the action string the number of times that is at or above the threshold value.

24. The method of claim 23 , wherein generating the m sorted lists comprises sequentially traversing the action string to identify locations for each of the m unique actions.

25. The method of claim 23 , wherein:

the action string is one of a plurality of action strings received by the string module; and

each action string of the plurality of action strings is performed by a different user.

26. The method of claim 23 , wherein:

the action string is one of a plurality of action strings received by the string module; and

each action string of the plurality of action strings is performed at a different time by a same user.

27. The method of claim 23 , further comprising generating the action string by concatenating one or more user actions and storing the action string in a memory, wherein receiving the action string comprises retrieving the action string from the memory.

28. The method of claim 23 , wherein:

the action string is one of a plurality of action strings received by the string module; and

the method further comprises receiving an action pattern that includes at least the first action and the second action; and

the method further comprises determining a total number of the plurality of action strings that includes the action pattern.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 12, 2020
From: MAI, TUNG; BURHANUDDIN, IFTIKHAR AHAMATH; THEOCHAROUS, GEORGIOS; RAO, ANUP
To: ADOBE INC.
Reel/Frame 054350/0953 →
Continuity (1)
Related Publication 20220148015A1 · May 12, 2022