IP Library › Granted Patent US 12,511,307
Granted Patent B2
US 12,511,307 · App. 18/426,192 · Granted Dec 30, 2025

Systems and methods for exploring quantifiable trends in line charts

Inventors: Alexander Elias Bendeck (Boca Raton, FL); Dennis Nathan Bromley (Seattle, WA); Vidya Raghavan Setlur (Portola Valley, CA)
Assignee: Salesforce, Inc.
G06F16/26G06F16/243G06F16/24578G06F16/2474G06F16/285G06F16/287G06F40/169G06F40/205G06F40/284G06F40/30
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,511,307
App. No.
18/426,192
Granted
Dec 30, 2025
Kind
B2
Abstract

A computing device receives a natural language input specifying a first search term and a second search term, directed to a dataset. The device (i) executes, for the first search term, first queries against a search index to retrieve a first set of labeled trend events; and (ii) executes for the second search term, second queries against the search index to retrieve a second set of labeled trend events. Each labeled trend event has a respective chart identifier. The device constructs sequences of labeled trend events based on the retrieved sets of labeled trend events, assigns each sequence into groups according to the respective chart identifier, and ranks the groups. The device retrieves data corresponding to a subset of line charts having the respective chart identifiers of the ranked groups, generates the subset of line charts, and displays one or more line charts of the subset.

Claims (97)

1 . A method for analyzing data trends, performed at a computing device having one or more processors and memory storing one or more programs configured for execution by the one or more processors, the method comprising:

receiving a natural language input specifying a plurality of search terms directed to a dataset, wherein:

the plurality of search terms includes a first search term and a second search term, and the second search term is subsequent to the first search term in the natural language input; and

the dataset comprises a set of time series data;

in response to receiving the natural language input:

in accordance with a determination that the first search term and the second search term specify a first sequence of data trends:

for the first search term, executing one or more first queries against a search index to retrieve a first set of labeled trend events; and

for the second search term, executing one or more second queries against the search index to retrieve a second set of labeled trend events;

wherein each labeled trend event in the first and second sets of labeled trend events (i) corresponds to a respective portion of a respective line chart of a set of line charts representing the time series data and (ii) has a respective chart identifier;

constructing one or more sequences of labeled trend events based on the retrieved first and second sets of labeled trend events;

in accordance with a determination that the constructed one or more sequences of labeled trend events are partial sequence matches of the natural language input, determining, for each sequence of the one or more sequences, a respective sequence score based at least in part on (i) a number of events in the respective sequence and (ii) a respective sequence offset;

assigning each sequence of labeled trend events, of the one or more sequences of labeled trend events, into one or more groups according to the respective chart identifier;

determining, for each group of the one or more groups, a respective final score;

ranking the one or more groups according to one or more determined final scores;

retrieving, from the dataset, data corresponding to a subset of one or more line charts having the respective chart identifiers of the ranked one or more groups in accordance with the ranking;

generating the subset of line charts;

annotating respective segments of the subset of line charts that correspond to the sequences of labeled trend events; and

displaying one or more line charts of the subset of line charts as annotated.

2 . The method of claim 1 , wherein constructing the one or more sequences of labeled trend events based on the retrieved first and second sets of trend events includes:

for each sequence of labeled trend events:

joining a respective first labeled trend event corresponding to the first search term and a respective second labeled trend event corresponding to the second search term, according to (i) a respective chart identifier corresponding to the respective first labeled trend event and the respective second labeled trend event and (ii) respective start and end dates of the respective first labeled trend event and the respective second labeled trend event.

3 . The method of claim 1 , further comprising:

after constructing the one or more sequences of labeled trend events:

determining, for each sequence of the one or more sequences, a respective sequence score by aggregating one or more respective composite scores corresponding to one or more respective labeled trend events in the respective sequence;

wherein the respective final score for each group of the one or more groups is an aggregation of one or more respective sequence scores, from one or more respective sequences of labeled trend events, in the respective group.

4 . The method of claim 3 , further comprising:

for a respective labeled trend event in the respective sequence:

determining a respective composite score for the respective labeled trend event based on (1) a respective label score representing an extent to which a respective search term matches respective labels of a respective set of labeled trend events and (2) a respective visual saliency score.

5 . The method of claim 4 , wherein the respective composite score is a product of the respective label score and the respective visual saliency score.

6 . The method of claim 4 , wherein determining the respective composite score includes:

computing the respective label score according to (i) a frequency with which the search terms occur in the respective labeled trend event and (ii) a label length of the respective labeled trend event.

7 . The method of claim 4 , wherein:

each line chart in the set of time series line charts is a plot of data values of a data field over a predefined timespan; and

determining the respective composite score includes:

computing the respective visual saliency score according to (1) a temporal duration of the respective portion of the respective line chart relative to the predefined timespan and (ii) a first difference in the data values of the data field over the temporal duration relative to a second difference in the data values of the data field over the predefined timespan.

8 . The method of claim 1 , wherein:

the plurality of search terms specified in the natural language input includes a third search term; and

the first sequence of data trends is specified by the first search term, the second search term, and the third search term.

9 . The method of claim 1 , wherein the respective final score for each group of the one or more groups is an aggregate of one or more respective sequence scores, from one or more respective sequences of labeled trend events, in the respective group.

10 . The method of claim 1 , wherein the determination that the first search term and the second search term specify the first sequence of data trends includes:

parsing the natural language input that includes the first search term and the second search term into a plurality of tokens, including assigning (i) a first semantic role to a first token corresponding to the first search term and (ii) a second semantic role to a second token corresponding to the second search term; and

determining, based on the assigned first and second semantic roles, that the first search term and the second search term specify the first sequence of data trends.

11 . The method of claim 10 , wherein:

parsing the natural language input includes determining that an event type corresponding to the natural language input is a multi-sequence event type.

12 . The method of claim 1 , wherein each labeled trend event of the first and second sets of labeled trend events is a respective labeled slope segment of a respective line chart in the set of line charts.

13 . The method of claim 1 , wherein each line chart in the set of line charts has the same time span.

14 . A computing device, comprising:

one or more processors; and

memory coupled to the one or more processors, the memory storing one or more programs configured to be executed by the one or more processors, the one or more programs including instructions for:

receiving a natural language input specifying a plurality of search terms directed to a dataset, wherein:

the plurality of search terms includes a first search term and a second search term, and the second search term is subsequent to the first search term in the natural language input; and

the dataset comprises a set of time series data;

in response to receiving the natural language input:

in accordance with a determination that the first search term and the second search term specify a first sequence of data trends:

for the first search term, executing one or more first queries against a search index to retrieve a first set of labeled trend events; and

for the second search term, executing one or more second queries against the search index to retrieve a second set of labeled trend events;

wherein each labeled trend event in the first and second sets of labeled trend events (i) corresponds to a respective portion of a respective line chart of a set of line charts representing the time series data and (ii) has a respective chart identifier;

constructing one or more sequences of labeled trend events based on the retrieved first and second sets of labeled trend events;

in accordance with a determination that the constructed one or more sequences of labeled trend events are partial sequence matches of the natural language input, determining, for each sequence of the one or more sequences, a respective sequence score based at least in part on (i) a number of events in the respective sequence and (ii) a respective sequence offset:

assigning each sequence of labeled trend events, of the one or more sequences of labeled trend events, into one or more groups according to the respective chart identifier;

determining, for each group of the one or more groups, a respective final score;

ranking the one or more groups according to one or more determined final scores;

retrieving, from the dataset, data corresponding to a subset of one or more line charts having the respective chart identifiers of the ranked one or more groups in accordance with the ranking;

generating the subset of line charts;

annotating respective segments of the subset of line charts that correspond to the sequences of labeled trend events; and

displaying one or more line charts of the subset of line charts as annotated.

15 . The computing device of claim 14 , wherein the instructions for constructing the one or more sequences of labeled trend events based on the retrieved first and second sets of trend events includes instructions for:

for each sequence of labeled trend events:

joining a respective first labeled trend event corresponding to the first search term and a respective second labeled trend event corresponding to the second search term, according to (i) a respective chart identifier corresponding to the respective first labeled trend event and the respective second labeled trend event and (ii) respective start and end dates of the respective first labeled trend event and the respective second labeled trend event.

16 . The computing device of claim 14 , the one or more programs further including instructions for:

after constructing the one or more sequences of labeled trend events:

determining, for each sequence of the one or more sequences, a respective sequence score by aggregating one or more respective composite scores corresponding to one or more respective labeled trend events in the respective sequence;

wherein the respective final score for each group of the one or more groups is an aggregation of one or more respective sequence scores, from one or more respective sequences of labeled trend events, in the respective group.

17 . The computing device of claim 16 , the one or more programs further including instructions for:

for a respective labeled trend event in the respective sequence:

determining a respective composite score for the respective labeled trend event based on (1) a respective label score representing an extent to which a respective search term matches respective labels of a respective set of labeled trend events and (2) a respective visual saliency score.

18 . The computing device of claim 14 , wherein the instructions for determining that the first search term and the second search term specify the first sequence of data trends include instructions for:

parsing the natural language input including the first search term and the second search term into a plurality of tokens, including assigning (i) a first semantic role to a first token corresponding to the first search term and (ii) a second semantic role to a second token corresponding to the second search term; and

determining, based on the assigned first and second semantic roles, that the first search term and the second search term specify the first sequence of data trends.

19 . A non-transitory computer-readable storage medium storing one or more programs, the one or more programs comprising instructions, which when executed by a computing device having one or more processors and memory, cause the computing device to perform operations comprising:

receiving a natural language input specifying a plurality of search terms directed to a dataset, wherein:

the plurality of search terms includes a first search term and a second search term, and the second search term is subsequent to the first search term in the natural language input; and

the dataset comprises a set of time series data;

in response to receiving the natural language input:

in accordance with a determination that the first search term and the second search term specify a first sequence of data trends:

for the first search term, executing one or more first queries against a search index to retrieve a first set of labeled trend events; and

for the second search term, executing one or more second queries against the search index to retrieve a second set of labeled trend events;

wherein each labeled trend event in the first and second sets of labeled trend events (i) corresponds to a respective portion of a respective line chart of a set of line charts representing the time series data and (ii) has a respective chart identifier;

constructing one or more sequences of labeled trend events based on the retrieved first and second sets of labeled trend events;

in accordance with a determination that the constructed one or more sequences of labeled trend events are partial sequence matches of the natural language input, determining, for each sequence of the one or more sequences, a respective sequence score based at least in part on (i) a number of events in the respective sequence and (ii) a respective sequence offset;

assigning each sequence of labeled trend events, of the one or more sequences of labeled trend events, into one or more groups according to the respective chart identifier;

determining, for each group of the one or more groups, a respective final score;

ranking the one or more groups according to one or more determined final scores;

retrieving, from the dataset, data corresponding to a subset of one or more line charts having the respective chart identifiers of the ranked one or more groups in accordance with the ranking;

generating the subset of line charts;

annotating respective segments of the subset of line charts that correspond to the sequences of labeled trend events; and

displaying one or more line charts of the subset of line charts as annotated.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 31, 2024
From: BENDECK, ALEXANDER ELIAS; BROMLEY, DENNIS NATHAN; SETLUR, VIDYA RAGHAVAN
To: SALESFORCE, INC.
Reel/Frame 066313/0777 →
Continuity (3)
Provisional Application 63543070 · Oct 7, 2023
Provisional Application 63463055 · Apr 30, 2023
Related Publication 20240362241A1 · Oct 31, 2024
References Cited (18)
US 8930247B1 · Zhang · 2015 [cited by examiner]
US 9507805B1 · Chechik · 2016 [cited by applicant]
US 10867256B2 · Bugay et al. · 2020 [cited by applicant]
US 11604800B1 · Alubelli et al. · 2023 [cited by applicant]
US 20090204605A1 · Bai · 2009 [cited by examiner]
US 20130038612A1 · Hanumara · 2013 [cited by applicant]
US 20190197404A1 · Wang · 2019 [cited by examiner]
US 20190205305A1 · Hopcroft · 2019 [cited by examiner]
US 20210081818A1 · Fahmy · 2021 [cited by examiner]
US 20220189140A1 · Woodbeck · 2022 [cited by applicant]
US 20220318261A1 · Setlur et al. · 2022 [cited by applicant]
US 20230386672A1 · Zanos · 2023 [cited by examiner]
KR 102191596B1 · 2019 [cited by examiner]
Espacenet English Language Translation of Hong-Joon (Year: 2019). [cited by examiner]
Bendeck, Notice of Allowance, U.S. Appl. No. 18/426,186, filed Sep. 30, 2024, 9 pgs. [cited by applicant]
Salesforce, Inc., International Search Rpt and Written Opinion, PCT/US2024/027076, Jul. 31, 2024, 13 pgs. [cited by applicant]
Setlur, Office Action, U.S. Appl. No. 18/789,009, filed Jun. 17, 2025, 12 pgs. [cited by applicant]
“ShapeSearch: Flexible Pattern-Based Querying of Trend Line Visualizations,” By: Tarique Siddiqui, Published 2018, https://par.nsf.gov/servlets/purl/10075379 (Year: 2018), XX pgs. [cited by applicant]