IP Library › Granted Patent US 12,212,633
Granted Patent B2
US 12,212,633 · App. 18/409,051 · Granted Jan 28, 2025

String processing of clickstream data

Inventors: Sean Ming-Yin Law (Ann Arbor, MI); Kenneth Edward Angel (North Richland Hills, TX)
Assignee: CHARLES SCHWAB & CO., INC.
H04L67/535G06F16/957H04L67/02H04L67/146
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 12,212,633
App. No.
18/409,051
Granted
Jan 28, 2025
Kind
B2
Abstract

A method includes assigning unique symbols to pages of a website, respectively. The method includes obtaining page symbol sequences of browsing sessions, respectively. Each browsing session corresponds to a visitor of the website. For each browsing session, the page symbol sequence of the browsing session is a sequence of symbols that corresponds, respectively, to a sequence of pages of the website visited during the browsing session by the corresponding visitor. The method includes generating a master string including the page symbol sequences, generating a suffix array corresponding to the master string, and generating a longest common prefix (LCP) array corresponding to the suffix array. The method includes, based on the suffix array and LCP array, determining one or more most common n-step subsequences of pages (n is an integer greater than 1).

Claims (68)

1. A method comprising:

assigning a first plurality of unique symbols to a plurality of potential interactions with a website, respectively;

determining whether a change to the website has been made since the first plurality of unique symbols were assigned;

in response to determining that a change to the website has been made, assigning a second plurality of unique symbols to a plurality of potential interactions with a website, respectively; and

obtaining a plurality of asserted interaction symbol sequences of a plurality of browsing sessions, respectively,

each of the browsing sessions corresponding to a visitor of the website, and

for each of the browsing sessions, the asserted interaction symbol sequence of the respective browsing session being a sequence of symbols, from among the second plurality of unique symbols, that corresponds, respectively, to a sequence of asserted interactions with the website visited during the respective browsing session by the corresponding visitor.

2. The method of claim 1 further comprising:

generating a master string including the plurality of asserted interaction symbol sequences; and

defining a plurality of suffixes of the master string.

3. The method of claim 2 wherein

each of the plurality of suffixes is a substring of the master string; and

the defining the plurality of suffixes includes,

assigning indexes to symbols included in the master string, respectively; and

for each of the assigned indexes, defining a suffix corresponding to the assigned index.

4. The method of claim 3 wherein, for each index, from among the assigned indexes, the suffix corresponding to the assigned index is a substring including:

the symbol of the master string to which the assigned index is assigned; and

the symbols of the master string to which any subsequent ones of the assigned indexes are assigned.

5. The method of claim 4 , further comprising:

generating a suffix array, the generating the suffix array including,

arranging the plurality of suffixes lexicographically, and

generating, as the suffix array, an array storing the assigned indexes in a same order as the suffixes, from among the lexicographically arranged plurality of suffixes, that correspond to the assigned indexes, respectively.

6. The method of claim 5 , further comprising:

generating a longest common prefix (LCP) array, the generating the LCP array including,

storing, for each consecutive pair of indexes from among the assigned indexes stored in the suffix array, a corresponding LCP value; and

for each of the consecutive pairs of indexes, the corresponding LCP value in the LCP array indicates a size of an LCP of the consecutive pair of suffixes, from among the lexicographically arranged plurality of suffixes, that correspond to the consecutive pair of indexes.

7. The method of claim 6 wherein each LCP value in the LCP array is a total number of symbols included in the consecutive pair of suffixes that correspond to the consecutive pair of indexes to which the LCP value corresponds.

8. The method of claim 7 further comprising:

based on the suffix array and the LCP array, determining one or more most common n-step subsequences of asserted interactions from among the sequences of asserted interactions with the website visited during the plurality of browsing sessions by the visitors to which the plurality of browsing sessions correspond, n being an integer greater than 1; and

displaying the most common n-step subsequences to a user.

9. The method of claim 8 wherein the determining of the one or more most common n-step subsequences of asserted interactions comprises:

identifying, from among the LCP values stored in the LCP array, one or more consecutive runs of the LCP values that are equal to or greater than n;

for each of the identified consecutive runs of the LCP values, determining a total number of the LCP values in the identified consecutive run of the LCP values;

determining, as one or more top consecutive runs of the LCP values, one or more of the consecutive runs of the LCP values, from among the identified consecutive runs of the LCP values, having the highest total numbers of the LCP values; and

identifying, as the one or more most common n-step subsequences, one or more n-step subsequences corresponding, respectively, to the one or more top consecutive runs of LCP values.

10. The method of claim 9 wherein, for each of the top consecutive runs of the LCP values, the n-step subsequence corresponding to the top consecutive run of the LCP values is a first n symbols held in common by the consecutive pairs of suffixes that correspond to the consecutive pairs of indexes to which the LCP values in the top consecutive run of LCP values correspond.

11. The method of claim 2 wherein the generating of the master string comprises:

concatenating the plurality of asserted interaction symbol sequences and a plurality of sentinel symbols together such that at least one of the sentinel symbols exists between each consecutive pair of the plurality of asserted interaction symbol sequences in the master string.

12. The method of claim 1 wherein, the browsing session corresponds to a beginning of a transmission control protocol session between the visitor of the website and a web server hosting the website and an ending of the transmission control protocol session between the visitor of the website and the web server hosting the website.

13. The method of claim 1 wherein, the browsing session corresponds to a first interaction between the visitor of the website and a last interaction between the visitor of the website prior to the expiration of a period of inactivity by the visitor.

14. A method comprising:

assigning a first plurality of unique symbols to a plurality of potential interactions with a website, respectively;

determining whether a change to the website has been made since the first plurality of unique symbols were assigned;

in response to determining that a change to the website has been made, assigning a second plurality of unique symbols to a plurality of potential interactions with a website, respectively; and

obtaining a plurality of asserted interaction symbol sequences of a plurality of browsing sessions, respectively, each of the browsing sessions corresponding to a visitor of the website and

for each of the browsing sessions, the asserted interaction symbol sequence of a respective one of the browsing sessions being a sequence of symbols, from among the second plurality of unique symbols, that corresponds, respectively, to a sequence of asserted interactions with the website visited during the respective browsing session by the corresponding visitor;

generating a master string including the plurality of asserted interaction symbol sequences;

generating a suffix array corresponding to the master string;

generating a longest common prefix (LCP) array corresponding to the suffix array;

based on the suffix array and the LCP array, determining one or more most common n-step subsequences of asserted interactions from among the sequences of asserted interactions with the website visited during the plurality of browsing sessions by the visitors to which the plurality of browsing sessions correspond, n being an integer greater than 1; and

displaying the most common n-step subsequences to a user.

15. The method of claim 14 wherein the generating of the master string comprises:

concatenating the plurality of asserted interaction symbol sequences and a plurality of sentinel symbols together such that at least one of the sentinel symbols exists between each consecutive pair of the plurality of asserted interaction symbol sequences in the master string.

16. The method of claim 14 further comprising:

defining a plurality of suffixes of the master string, each of the plurality of suffixes being a substring of the master string; and

the defining the plurality of suffixes includes,

assigning indexes to symbols included in the master string, respectively; and

for each of the assigned indexes, defining a suffix corresponding to the assigned index.

17. The method of claim 16 wherein, for each index, from among the assigned indexes, the suffix corresponding to the assigned index is a substring including:

the symbol of the master string to which the assigned index is assigned; and

the symbols of the master string to which any subsequent ones of the assigned indexes are assigned.

18. The method of claim 17 , wherein generating the suffix array comprises:

arranging the plurality of suffixes; and

generating, as the suffix array, an array storing the assigned indexes in a same order as the suffixes, from among the arranged plurality of suffixes, that correspond to the assigned indexes, respectively.

19. The method of claim 18 , wherein generating the LCP array comprises:

storing, for each consecutive pair of indexes from among the assigned indexes stored in the suffix array, a corresponding LCP value; and

for each of the consecutive pairs of indexes, the corresponding LCP value in the LCP array indicates a size of an LCP of the consecutive pair of suffixes, from among the arranged plurality of suffixes, that correspond to the consecutive pair of indexes.

20. The method of claim 19 wherein each LCP value in the LCP array is a total number of symbols included in the consecutive pair of suffixes that correspond to the consecutive pair of indexes to which the LCP value corresponds.

Continuity (4)
Division 17872444 · Jul 25, 2022
Continuation 17202847 · Mar 16, 2021
Continuation 16917678 · Jun 30, 2020
Related Publication 20240146820A1 · May 2, 2024
References Cited (46)
US 6421724B1 · Nickerson et al. · 2002 [cited by applicant]
US 6959286B2 · Perkowski · 2005 [cited by applicant]
US 6996536B1 · Cofino et al. · 2006 [cited by applicant]
US 7877691B2 · Goering et al. · 2011 [cited by applicant]
US 7970887B2 · Nickerson et al. · 2011 [cited by applicant]
US 8069407B1 · Armandpour · 2011 [cited by examiner]
US 8095530B1 · Lloyd · 2012 [cited by applicant]
US 8290973B2 · Flake et al. · 2012 [cited by applicant]
US 8346920B2 · Rothschild · 2013 [cited by applicant]
US 8600968B2 · Holenstein et al. · 2013 [cited by applicant]
US 8955739B2 · Cameron et al. · 2015 [cited by applicant]
US 9292615B2 · Seifert · 2016 [cited by examiner]
US 9400844B2 · Zohar et al. · 2016 [cited by applicant]
US 10885576B2 · Deo · 2021 [cited by examiner]
US 10986200B1 · Law et al. · 2021 [cited by applicant]
US 11288732B2 · Deo · 2022 [cited by examiner]
US 11373103B2 · Jain et al. · 2022 [cited by applicant]
US 11438428B2 · Law et al. · 2022 [cited by applicant]
US 20020112035A1 · Carey et al. · 2002 [cited by applicant]
US 20050182677A1 · Hill · 2005 [cited by applicant]
US 20060172273A1 · Heffernan et al. · 2006 [cited by applicant]
US 20060230343A1 · Armandpour · 2006 [cited by examiner]
US 20080270473A1 · Flake et al. · 2008 [cited by applicant]
US 20080270620A1 · Flake et al. · 2008 [cited by applicant]
US 20090298037A1 · Heffernan et al. · 2009 [cited by applicant]
US 20100082637A1 · Mishne et al. · 2010 [cited by applicant]
US 20100318374A1 · Flake et al. · 2010 [cited by applicant]
US 20120016980A1 · Rothschild · 2012 [cited by applicant]
US 20120016991A1 · Rothschild · 2012 [cited by applicant]
US 20120042237A1 · Armandpour · 2012 [cited by examiner]
US 20120271805A1 · Holenstein et al. · 2012 [cited by applicant]
US 20120331128A1 · Seifert · 2012 [cited by examiner]
US 20130103793A1 · Rothschild · 2013 [cited by applicant]
US 20130200145A1 · Cameron et al. · 2013 [cited by applicant]
US 20150025953A1 · Flake et al. · 2015 [cited by applicant]
US 20150269609A1 · Mehanian et al. · 2015 [cited by applicant]
US 20170244796A1 · Liu et al. · 2017 [cited by applicant]
US 20170270416A1 · Sri et al. · 2017 [cited by applicant]
US 20190205971A1 · Deo · 2019 [cited by examiner]
US 20200134511A1 · Ho et al. · 2020 [cited by applicant]
US 20200380376A1 · Jain et al. · 2020 [cited by applicant]
US 20210209675A1 · Deo · 2021 [cited by examiner]
US 20220253922A1 · Deo · 2022 [cited by examiner]
WO WO2010123705A2 · 2010 [cited by applicant]
International Search Report and Written Opinion for PCT Application No. PCT/IB2020/058503; Dated Mar. 25, 2021; 6 Pages. [cited by applicant]
International Preliminary Report on Patentability Corresponding to International Application No. PCT/IB2020/058503. dated Dec. 13, 2022. [cited by applicant]