IP Library Granted Patent US 10,657,201
Granted Patent B1
US 10,657,201 · App. 13/464,675 · Granted May 19, 2020

Configurable and portable system for generating narratives

Inventors: Nathan Drew Nichols (Chicago, IL); Lawrence A. Birnbaum (Evanston, IL); Kristian J. Hammond (Chicago, IL)
Assignee: NARRATIVE SCIENCE INC.
G06F17/27G06F17/20
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 10,657,201
App. No.
13/464,675
Granted
May 19, 2020
Kind
B1
Abstract

The subject invention functions to use available data and information to automatically create narrative stories that describes domain events, circumstances and/or entities in a comprehensible and compelling and audience customized, manner. Computer executable instructions provide for generating a narrative story using standard and uniform structures and data for receiving domain related data and a story specification, parsing the story specification to provide constituent components, transforming the constituent components into executable code, instantiating content blocks having at least one feature for the domain according to the story specification and rendering the narrative story using the constituent components specified by the content blocks.

Claims (90)

1. A computer program product for automatically generating a narrative story about a data set, the data set comprising structured data in a plurality of fields and/or categories that describe one or more events, situations, entities, and/or combinations thereof, the computer program product comprising:

a story specification that is resident on a non-transitory computer-readable storage medium, the story specification configured to organize a narrative structure for the narrative story, the story specification comprising (1) specifications of a plurality of data models, and (2) specifications of a plurality of modular angles, each modular angle corresponding to an interpretation of data, the modular angles comprising a plurality of specified applicability condition parameters for testing to determine whether a corresponding interpretation validly characterizes the one or more events, situations, entities, and/or combinations thereof described by the data set, wherein the applicability condition parameters permit the modular angles to be re-used with respect to a plurality of different story types or content verticals, and wherein the specifications of the data models and the modular angles are not expressed as program code directly executable by a processor and are not expressed in a general purpose programming language; and

a plurality of processor-executable instructions for processing the story specification to (1) generate executable code that defines an analytical framework for performing an analysis on the structured data to determine an interpretation of the data set that validly characterizes the one or more events, situations, entities, and/or combinations thereof described by the data set, and (2) generate executable code that defines a narrative generation framework for producing a narrative story about the data set that expresses the determined interpretation, wherein the instructions are resident on a non-transitory computer-readable storage medium; and

wherein the instructions are configured, upon execution by a processor, to cause the processor to:

receive the data set and the story specification as inputs;

generate the executable code for the analytical framework based on the processed story specification, the analytical framework executable code including (1) code that prepares the data set for the analytical framework and the narrative generation framework based on the specified data models, wherein the prepared data set includes data derived from the structured data, and (2) testing code that implements the testing defined by the modular angles such that the specified applicability condition parameters are tied to data within the prepared data set;

execute the analytical framework executable code to (1) generate the prepared data set, and (2) determine, based on execution of the testing code with respect to the prepared data set, an interpretation corresponding to a modular angle for expression in the narrative story, wherein the determined interpretation is deemed by the testing to validly characterize the one or more events, situations, entities, and/or combinations thereof described by the data set;

generate the executable code for the narrative generation framework based on the processed story specification; and

execute the narrative generation framework executable code with respect to the prepared data set and the determined interpretation to automatically generate the narrative story about the data set in natural language text and in accordance with the organized narrative structure such that the narrative story expresses the determined interpretation.

2. The computer program product of claim 1 , wherein the story specification comprises a content block, the content block configured to define how a section of the narrative story is to be generated, the content block comprising:

one or more specified foci for the section; and

wherein the specified data models comprise specifications a plurality of data models for a plurality of entities, activities, situations, and/or circumstances that the section will be about, the specified data models including a plurality of structured data objects that define (1) raw data for the section and (2) a derived feature for the section.

3. The computer program product of claim 1 , further comprising:

a library comprising a plurality of the story specifications, each of at least a plurality of the story specifications being associated with a different story type for a content vertical; and

wherein the instructions are further configured to receive input to select a story specification from the library to define a story type for the narrative story to be automatically generated.

4. The computer program product of claim 1 , further comprising:

a library comprising a plurality of the story specifications, each of at least a plurality of the story specifications being associated with a different content vertical; and

wherein the instructions are further configured to receive input to select a story specification from the library to define a story type for the narrative story to be automatically generated.

5. The computer program product of claim 4 , wherein the instructions are further configured to provide a user-interactive tool for authoring and/or editing of the story specifications in response to input from a user without the necessity of the user authoring, editing or reviewing computer executable code in a general purpose programming language.

6. The computer program product of claim 3 , wherein the instructions are further configured to provide a user-interactive tool for composing the story specifications in response to input from a user without the necessity of the user authoring or reviewing computer executable code in a general purpose programming language.

7. The computer program product of claim 2 , wherein the story specification comprises a plurality of the content blocks.

8. An apparatus for generating a narrative story about a data set, the data set comprising structured data in a plurality of fields and/or categories that describe one or more events, situations, entities, and/or combinations thereof, the apparatus comprising:

a processor configured as a domain-independent general-purpose narrative generation platform, the platform configured to:

receive the data set;

receive a story specification, the story specification configured to organize a narrative structure for a narrative story, the story specification comprising (1) specifications of a plurality of data models, and (2) specifications of a plurality of modular angles, each modular angle corresponding to an interpretation of data, the modular angles comprising a plurality of specified applicability condition parameters for testing to determine whether a corresponding interpretation validly characterizes the one or more events, situations, entities, and/or combinations thereof described by the data set, wherein the applicability condition parameters permit the modular angles to be re-used with respect to a plurality of different story types or content verticals, and wherein the specifications of the data models and the modular angles are not expressed as program code directly executable by a processor and are not expressed in a general purpose programming language; and

execute a plurality of processor-executable instructions for processing the story specification to (1) generate executable code that defines an analytical framework for performing an analysis on the structured data to determine an interpretation of the data set that validly characterizes the one or more events, situations, entities, and/or combinations thereof described by the data set, and (2) generate executable code that defines a narrative generation framework for producing a narrative story about the data set that expresses the determined interpretation, wherein the instructions are configured, upon execution by the processor, to cause the processor to:

generate the executable code for the analytical framework based on the processed story specification, the analytical framework executable code including (1) code that prepares the data set for the analytical framework and the narrative generation framework based on the specified data models, wherein the prepared data set includes data derived from the structured data, and (2) testing code that implements the testing defined by the modular angles such that the specified applicability condition parameters are tied to data within the prepared data set;

execute the analytical framework executable code to (1) generate the prepared data set, and (2) determine, based on execution of the testing code with respect to the prepared data set, an interpretation corresponding to a modular angle for expression in the narrative story, wherein the determined interpretation is deemed by the testing to validly characterize the one or more events, situations, entities, and/or combinations thereof described by the data set;

generate the executable code for the narrative generation framework based on the story specification; and

execute the narrative generation framework executable code with respect to the prepared data set and the determined interpretation to automatically generate the narrative story about the data set in natural language text and in accordance with the organized narrative structure such that the narrative story expresses the determined interpretation;

the platform being adaptable to automatically generate narrative stories of a plurality of different story types and in a plurality of different content verticals by changing the story specification.

9. The apparatus as recited in claim 8 , wherein the story specification comprises a plurality of content blocks, each content block corresponding to a different section of the narrative story and being configured to define how its corresponding section of the narrative story is to be generated, at least a plurality of the content blocks comprising:

one or more specified foci for its corresponding section; and

wherein the specified data models comprise specifications of a plurality of data models for a plurality of entities, activities, situations, and/or circumstances that the corresponding section will be about, the specified data models including a plurality of structured data objects that define at least one of (1) raw data for the corresponding section and (2) a derived feature for the corresponding section.

10. The apparatus as recited in claim 9 , wherein at least a plurality of the content blocks further comprise specifications of the modular angles.

11. The apparatus as recited in claim 10 , wherein the execution of the analytical framework computes a plurality of derived features according to the processed story specification, tests at least one of the applicability conditions associated with the modular angles with respect to the computed derived features, and instantiates the content blocks as a language independent outline of the narrative story.

12. The apparatus as recited in claim 11 , wherein the content blocks further comprise a specification of a blueprint set, and wherein the platform is further configured to automatically render the narrative story from the language independent outline according to the specified blueprint set.

13. The apparatus as recited in claim 12 , wherein the specified blueprint set comprises specifications of a plurality of parameterizable blueprints, wherein one or more of the specified blueprints are configured to be selected and parameterized during the rendering operation to express an interpretation corresponding to a modular angle and/or a derived feature in a natural language, the natural language including one of English, German, Spanish, French or Chinese.

14. The apparatus as recited in claim 13 , wherein a first specified blueprint set is replaceable by a second specified blueprint set.

15. The apparatus as recited in claim 13 , wherein the specified blueprint set provides for multiple expressions of words, phrases or constructions in order to avoid at least one of (1) repetitiveness in the narrative story, and (2) repetitiveness between a plurality of the narrative stories.

16. The apparatus as recited in claim 10 , wherein at least one of the content blocks further comprises a specification of an organizing principle for content in the at least one content block's corresponding section of the narrative story.

17. The apparatus as recited in claim 16 , wherein the specified modular angles are parameterized using raw structured data and derived features.

18. The apparatus as recited in claim 16 , wherein the specified organizing principle comprises a parameter configured to control a selection of at least one applicable modular angle for use in the corresponding section in a situation where a plurality of the specified modular angles are found to be applicable to the data set for the section based on their applicability conditions.

19. The apparatus as recited in claim 10 , further comprising:

a memory configured to store a plurality of the story specifications, each of at least a plurality of the story specifications being associated with a different story type for a content vertical; and

wherein the platform is further configured to receive input to select a story specification from the memory to define a story type for the narrative story to be automatically generated.

20. The apparatus as recited in claim 19 wherein the platform is further configured to switch between different story specifications in the memory to adapt the platform to automatically generate narrative stories of a different story type without the necessity of a user authoring or reviewing computer executable code in a general purpose programming language.

21. The apparatus as recited in claim 16 , wherein the content vertical for the story specification comprises baseball, and wherein a modular angle from among the specified modular angles comprises one of critical plays, critical players, pitching, noteworthy plays, noteworthy players or historically deviant activity.

22. The apparatus as recited in claim 18 , wherein the specified organizing principle comprises at least one of importance, noteworthiness, chronologically, and a fixed order.

23. The apparatus as recited in claim 18 , wherein the specified organizing principle comprises importance, and wherein importance is defined according to an inherent importance of a modular angle or a derived feature in combination with an amount of new data conveyed by the modular angle or derived feature.

24. The apparatus as recited in claim 11 , wherein the plurality of content blocks comprise:

a headline content block configured to parameterize how a headline is to be generated for the narrative story; and

a lede content block configured to parameterize how a lede section is to be generated for the narrative story.

25. The apparatus as recited in claim 24 , wherein the headline content block comprises a first specified blueprint set comprising a plurality of parameters for defining how headline text is to be rendered, and wherein the lede content block comprises a second specified blueprint set different than the first specified blueprint set, the second specified blueprint set comprising a plurality of parameters for defining how lede text is to be rendered.

26. The apparatus of claim 20 , wherein the processor is further configured to provide a user-interactive tool for composing the story specifications in response to input from a user without the necessity of the user authoring or reviewing computer executable code in a general purpose programming language.

27. The apparatus as recited in claim 10 , further comprising:

a memory configured to store a plurality of the story specifications, each of at least a plurality of the story specifications being associated with a different content vertical; and

wherein the platform is further configured to receive input to select a story specification from the memory to define a content vertical for the narrative story to be automatically generated.

28. The apparatus as recited in claim 27 wherein the platform is further configured to switch between different story specifications in the memory to adapt the platform to automatically generate narrative stories in a different content vertical without the necessity of a user authoring or reviewing computer executable code.

29. The apparatus of claim 28 , wherein the processor is further configured to provide a user-interactive tool for composing the story specifications in response to input from a user without the necessity of the user authoring or reviewing computer executable code in a general purpose programming language.

30. The apparatus of claim 9 , wherein the at least plurality of content blocks further comprise specifications a plurality of computational elements based on the specified data models, the specified computational elements including specified computational elements that define how compute a derived feature from the structured data.

31. The computer program product of claim 2 , wherein the story specification further comprises a specification of an organizing principle for the section.

32. The computer program product of claim 31 wherein the content block comprises the specified organizing principle.

33. The computer program product of claim 2 , wherein the story specification further comprises specifications of a plurality of blueprint sets, the specified blueprint sets being associated with the modular angles and comprising a plurality of parameters for defining how text is to be rendered for the section in accordance with its associated modular angle.

34. The computer program product of claim 33 , wherein the story specification comprises a plurality of the content blocks, wherein the specified blueprint sets are further associated with the content blocks.

35. The computer program product of claim 34 wherein the content blocks comprise the specified blueprint sets.

36. The computer program product of claim 2 , wherein the story specification further comprises specifications of angle selection/ranking criteria for the modular angles.

37. The computer program product of claim 2 wherein the content block comprises the specified modular angles.

38. The computer program product of claim 7 wherein at least one of the content blocks includes a content block within it.

39. The computer program product of claim 7 wherein the story specification defines a sequence for the content blocks with respect to a plurality of sections of the narrative story.

40. The computer program product of claim 7 wherein the content blocks comprise a first content block and a second content block, the first and second content blocks comprising different specified organizing principles.

41. The computer program product of claim 7 wherein the content blocks comprise a first content block and a second content block, the first and second content blocks comprising different specified blueprint sets, the specified blueprint sets comprising a plurality of parameters for defining how text is to be rendered.

42. The computer program product of claim 7 , wherein the plurality of content blocks comprise:

a headline content block configured to parameterize how a headline is to be generated for the narrative story; and

a lede content block configured to parameterize how a lede section is to be generated for the narrative story.

43. The computer program product of claim 42 wherein the headline content block comprises a first specified blueprint set comprising a plurality of parameters for defining how headline text is to be rendered, and wherein the lede content block comprises a second specified blueprint set different than the first specified blueprint set, the second specified blueprint set comprising a plurality of parameters for defining how lede text is to be rendered.

44. The computer program product of claim 2 , wherein the content block further comprises specifications a plurality of computational elements based on the specified data models, the specified computational elements including specified computational elements that define how compute a derived feature from the structured data.

45. The computer program product of claim 1 wherein the story specification further comprises a specification of a plurality derived features that are not expressed as program code directly executable by a processor and are not expressed in a general purpose programming language, and wherein the instructions are further configured to process the derived features specification to generate the analytical framework executable code so that the execution of the analytical framework executable code computes the derived features based on the structured data.

46. The apparatus of claim 8 wherein the story specification further comprises a specification of a plurality derived features that are not expressed as program code directly executable by a processor and are not expressed in a general purpose programming language, and wherein the processor is further configured to process the derived features specification to generate the analytical framework executable code so that execution of the analytical framework executable code computes the derived features based on the structured data.

47. The computer program product of claim 1 wherein the story specification comprises a content block configured to define how a section of the narrative story is to be generated, wherein the content block comprises:

a generalized content block data structure that is generalized via a plurality of parameters such that the generalized content block is reusable across a plurality of different story types or content verticals;

a specification of a parameter value for the generalized content block data structure; and

wherein the instructions are further configured to instantiate the generalized content block data structure to a specific story type or content vertical based on the specified parameter value.

48. The computer program product of claim 47 wherein the specified parameter value comprises a plurality of parameter values for a plurality of the generalized content block data structure parameters.

49. The apparatus of claim 8 wherein the story specification comprises a content block configured to define how a section of the narrative story is to be generated, wherein the content block comprises:

a generalized content block data structure that is generalized via a plurality of parameters such that the generalized content block is reusable across a plurality of different story types or content verticals;

a specification of a parameter value for the generalized content block data structure; and

wherein the processor is further configured to instantiate the generalized content block data structure to a specific story type or content vertical based on the specified parameter value.

50. The apparatus of claim 49 wherein the processor is further configured to adapt the platform to automatically generate narrative stories in a new story type or content vertical by changing the specified parameter value.

51. The apparatus of claim 49 wherein the specified parameter value comprises a plurality of parameter values for a plurality of the generalized content block data structure parameters.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 25, 2024
From: NARRATIVE SCIENCE LLC
To: SALESFORCE, INC.
Reel/Frame 067218/0449 →
CHANGE OF NAME Recorded Mar 25, 2024
From: NARRATIVE SCIENCE INC.
To: NARRATIVE SCIENCE LLC
Reel/Frame 066884/0001 →
RELEASE OF SECURITY INTEREST Recorded Mar 1, 2022
From: CIBC BANK USA
To: NARRATIVE SCIENCE INC
Reel/Frame 059640/0008 →
SECURITY INTEREST Recorded Aug 30, 2019
From: NARRATIVE SCIENCE INC.
To: CIBC BANK USA
Reel/Frame 050237/0365 →
CORRECTIVE ASSIGNMENT TO CORRECT THE APPLICATION NUMBER 13464975 TO APPLICATION NUMBER 13464675 PREVIOUSLY RECORDED ON REEL 050021 FRAME 0833. ASSIGNOR(S) HEREBY CONFIRMS THE TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS. Recorded Aug 14, 2019
From: OLESZCZUCK, ANDREW J.
To: NARRATIVE SCIENCE INC.
Reel/Frame 050047/0441 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Recorded Aug 12, 2019
From: OLESZCZUCK, ANDREW J.
To: NARRATIVE SCIENCE INC.
Reel/Frame 050021/0833 →
SECURITY AGREEMENT Recorded Jul 6, 2012
From: NARRATIVE SCIENCE INC.
To: OLESZCZUK, ANDREW
Reel/Frame 028509/0182 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 4, 2012
From: NICHOLS, NATHAN DREW; BIRNBAUM, LAWRENCE A.; HAMMOND, KRISTIAN J.
To: NARRATIVE SCIENCE INC.
Reel/Frame 028160/0740 →
Continuity (1)
Continuation 12986996 · Jan 7, 2011
Cited By (11)
US 12,248,461 US 12,288,039 US 12,314,674 US 12,423,525 US 12,462,114 US 12,468,694 US 12,505,093 US 12,608,416 US 12,614,042 US 12,632,445 US 12,681,997