Easy To Use Patents Search & Patent Lawyer Directory

At Patents you can conduct a Patent Search, File a Patent Application, find a Patent Attorney, or search available technology through our Patent Exchange. Patents are available using simple keyword or date criteria. If you are looking to hire a patent attorney, you've come to the right place. Protect your idea and hire a patent lawyer.


Search All Patents:



  This Patent May Be For Sale or Lease. Contact Us

  Is This Your Patent? Claim This Patent Now.



Register or Login To Download This Patent As A PDF




United States Patent Application 20170161398
Kind Code A1
Clark; Adam T. ;   et al. June 8, 2017

STRUCTURING NARRATIVE BLOCKS IN A LOGICAL SEQUENCE

Abstract

A computer system may obtain a first knowledge graph that was generated based on a work of authorship having a plurality of narrative blocks. The computer system may identify target narrative blocks, which are narrative blocks that include a target concept. The computer system may also identify related background narrative blocks. The computer system may receive a narrative path for the target concept. The narrative path may include the target narrative blocks and the related background narrative blocks ordered in a sequence that is consistent with their order in the work of authorship. The computer system may output the narrative path to an output device coupled with the computer system.


Inventors: Clark; Adam T.; (Mantorville, MN) ; Huebert; Jeffrey K.; (Rochester, MN) ; Payton; Aspen L.; (Byron, MN) ; Petri; John E.; (St. Charles, MN)
Applicant:
Name City State Country Type

International Business Machines Corporation

Armonk

NY

US
Family ID: 1000001931029
Appl. No.: 14/957647
Filed: December 3, 2015


Current U.S. Class: 1/1
Current CPC Class: G06F 17/30958 20130101; G06F 17/271 20130101; G06F 17/2765 20130101; G06F 17/30719 20130101
International Class: G06F 17/30 20060101 G06F017/30; G06F 17/27 20060101 G06F017/27

Claims



1. A computer-implemented method comprising: obtaining, by a computer system, a first knowledge graph generated based on a work of authorship, the work of authorship containing a plurality of narrative blocks, the first knowledge graph including nodes that represent concepts and edges between nodes that represent links between concepts; identifying target narrative blocks, the target narrative blocks being narrative blocks that contain a target concept; identifying related background narrative blocks, the related background narrative blocks being narrative blocks that contain a related non-target concept, the related non-target concept being related to the target concept, wherein the related background narrative blocks do not contain the target concept; obtaining a narrative path for the target concept, wherein the narrative path includes the target narrative blocks and the related background narrative blocks ordered in a sequence consistent with an ordering of the narrative blocks in the work of authorship; and outputting the narrative path to an output device coupled with the computer system.

2. The method of claim 1, wherein the work of authorship is a textual work.

3. The method of claim 2, the method further comprising: identifying unrelated background narrative blocks, the unrelated background narrative blocks being narrative blocks that do not contain the target concept or a non-target concept, wherein the narrative path does not include the unrelated background narrative blocks.

4. The method of claim 2, wherein the obtaining the first knowledge graph comprises: receiving the textual work by an input device coupled to the computer system, the computer system having a processor and a memory storing one or more natural language processing modules executable by the processor to ingest the textual work; ingesting the textual work using the natural language processing modules; and generating the first knowledge graph.

5. The method of claim 2, wherein the obtaining the narrative path for the target concept comprises generating, by the computer system, the narrative path for the target concept.

6. The method of claim 2, the method further comprising prompting a reader to select the target concept.

7. The method of claim 2, wherein the identifying the related background narrative blocks comprises: identifying a first background narrative block; identifying a first non-target concept; determining that the first non-target concept is a first related non-target concept; and determining that the first background narrative block includes the first related non-target concept.

8. The method of claim 7, wherein the determining that the first non-target concept is the first related non-target concept comprises: determining a relatedness score for the first non-target concept, the relatedness score being based on a relatedness of the first non-target concept to the target concept; and determining that the relatedness score for the first non-target concept exceeds a threshold.

9. The method of claim 8, wherein the determining the relatedness score for the first non-target concept includes determining, using the first knowledge graph, a number of edges that connect the first non-target concept to the target concept.

10. The method of claim 2, wherein the obtaining the narrative path for the target concept comprises receiving the narrative path from a user, the method further comprising: generating a second knowledge graph based on the narrative path; comparing, by the computer system, the first knowledge graph to the second knowledge graph; and determining, based on the comparing and by the computer system, whether the narrative path is approved.

11. The method of claim 10, wherein the outputting the narrative path to the output device coupled with the computer system is in response to determining that the narrative path is approved.

12. The method of claim 10, the method further comprising notifying, in response to determining that the narrative path is not approved, a user that the narrative path is not approved.

13. The method of claim 10, the method further comprising: generating, by the computer system and in response to determining that the narrative path is not approved, a new narrative path for the target concept; and outputting the new narrative path to the output device.

14. The method of claim 10, wherein the determining whether the narrative path is approved comprises: determining a first number of nodes and edges in the first knowledge graph; determining a second number of nodes and edges in the second knowledge graph; determining an overlap percentage for the narrative path by comparing the first number of nodes and edges to the second number of nodes and edges, the overlap percentage being a percentage of nodes and edges from the first knowledge graph that are in the second knowledge graph; and comparing the overlap percentage to an overlap threshold.

15. The method of claim 10, wherein the determining whether the narrative path is approved comprises: identifying potentially important nodes in the first knowledge graph; determining a number of potentially important nodes in the first knowledge graph; determining a number of potentially important nodes in the second knowledge graph; determining a percentage of potentially important nodes in the second knowledge graph by comparing the number of potentially important nodes in the first knowledge graph to the number of potentially important nodes in the second knowledge graph; and comparing the percentage of potentially important nodes to a threshold.

16. The method of claim 15, wherein the identifying potentially important nodes comprises: identifying a first node in the first knowledge graph; identifying a first number of edges connected to the first node; and determining that the first node is a potentially important node by comparing the first number of edges to an important node threshold.

17. The method of claim 10, wherein the determining whether the narrative path is approved comprises: determining a first number of connected components in the first knowledge graph, the connected components being groups of connected concepts that are isolated from other concepts in the first knowledge graph; determining a second number of connected components in the second knowledge graph; determining a difference between the first number of connected components and the second number of connected components; and comparing the difference to a connected components threshold.

18. The method of claim 2, wherein the output device is selected from a group consisting of an e-reader and a tablet.

19. A system comprising: an input device; an output device; a memory having one or more natural language processing modules; a processor in communication with the memory, the processor being configured to perform a method comprising: receiving a textual work by the input device, the textual work containing a plurality of narrative blocks; ingesting the textual work using the one or more natural language processing modules; generating a first knowledge graph based on the textual work, the first knowledge graph including nodes that represent concepts and edges between nodes that represent links between concepts; determining a target concept; identifying target narrative blocks, the target narrative blocks being narrative blocks that contain the target concept; identifying related background narrative blocks, the related background narrative blocks being narrative blocks that contain a related non-target concept, the related non-target concept being related to the target concept, wherein the related background narrative blocks do not contain the target concept; identifying unrelated background narrative blocks, the unrelated background narrative blocks being narrative blocks that do not contain the target concept or a non-target concept; generating a narrative path for the target concept, the narrative path including the target narrative blocks and the related background narrative blocks ordered in a sequence consistent with an ordering of the narrative blocks in the textual work, wherein the narrative path does not include the unrelated background narrative blocks; and outputting the narrative path to the output device.

20. A computer program product comprising a computer readable storage medium having program instructions embodied therewith, the program instructions executable by a processor to cause the processor to perform a method comprising: receiving a textual work by an input device coupled to a computer system, the textual work containing a plurality of narrative blocks; ingesting the textual work using one or more natural language processing modules stored in a memory of the computer system; generating a first knowledge graph based on the textual work, the first knowledge graph including nodes that represent concepts and edges between nodes that represent links between concepts; determining a target concept; identifying target narrative blocks, the target narrative blocks being narrative blocks that contain the target concept; identifying related background narrative blocks, the related background narrative blocks being narrative blocks that contain a related non-target concept, the related non-target concept being related to the target concept, wherein the related background narrative blocks do not contain the target concept; identifying unrelated background narrative blocks, the unrelated background narrative blocks being narrative blocks that do not contain the target concept or a non-target concept; generating a narrative path for the target concept, the narrative path including the target narrative blocks and the related background narrative blocks ordered in a sequence consistent with an ordering of the narrative blocks in the textual work, wherein the narrative path does not include the unrelated background narrative blocks; and outputting the narrative path to an output device coupled with the computer system.
Description



BACKGROUND

[0001] The present disclosure relates generally to the field of natural language processing, and more particularly to generating a narrative path for a target concept in a work of authorship.

[0002] It is common in literature to have a narrative universe of characters and events that appear in a book or movie, or across several different books or movies. When reading material in the narrative universe, a reader could skip portions of the narrative to strike his own path through the story. For example, a reader could read several books in a series of books and skip some books to avoid aspects of the narrative that he has less interest in, or simply to shorten the amount of reading that needs to be done.

SUMMARY

[0003] Embodiments of the present invention disclose a method, computer program product, and system for generating a narrative path for a target concept in a work of authorship. A computer system may obtain a first knowledge graph that was generated based on a work of authorship having a plurality of narrative blocks. The first knowledge graph may include nodes that represent concepts and edges linking the nodes together. The computer system may identify target narrative blocks, which are narrative blocks that include a target concept. The computer system may also identify related background narrative blocks. Related background narrative blocks may be narrative blocks that contain a related non-target concept, but do not contain the target concept. The related non-target concept may be a concept that is related to the target concept. The computer system may receive a narrative path for the target concept. The narrative path may include the target narrative blocks and the related background narrative blocks ordered in a sequence that is consistent with their order in the work of authorship. The computer system may output the narrative path to an output device coupled with the computer system.

[0004] The above summary is not intended to describe each illustrated embodiment or every implementation of the present disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

[0005] The drawings included in the present disclosure are incorporated into, and form part of, the specification. They illustrate embodiments of the present disclosure and, along with the description, serve to explain the principles of the disclosure. The drawings are only illustrative of typical embodiments and do not limit the disclosure.

[0006] FIG. 1 illustrates a block diagram of an example computing environment in which illustrative embodiments of the present disclosure may be implemented.

[0007] FIG. 2 illustrates a block diagram of an example natural language processing system configured to ingest a work of authorship and generate or approve a narrative path, in accordance with embodiments of the present disclosure.

[0008] FIG. 3 illustrates an exemplary knowledge graph for a work of authorship, in accordance with embodiments of the present disclosure.

[0009] FIG. 4 illustrates concept paths for two characters in a book, in accordance with embodiments of the present disclosure.

[0010] FIG. 5 illustrates a flowchart of a method for generating and providing a narrative path for a target concept to a reader, in accordance with embodiments of the present disclosure.

[0011] FIG. 6 illustrates a flowchart of a method for identifying related background narrative blocks, in accordance with embodiments of the present disclosure.

[0012] FIG. 7 illustrates a flowchart of a method for validating a user-provided narrative path, in accordance with embodiments of the present disclosure.

[0013] While the embodiments described herein are amenable to various modifications and alternative forms, specifics thereof have been shown by way of example in the drawings and will be described in detail. It should be understood, however, that the particular embodiments described are not to be taken in a limiting sense. On the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the invention.

DETAILED DESCRIPTION

[0014] Aspects of the present disclosure relate generally to the field of natural language processing, and in particular to generating a narrative path for a target concept based on a work of authorship. While the present disclosure is not necessarily limited to such applications, various aspects of the disclosure may be appreciated through a discussion of various examples using this context.

[0015] A user may wish to follow a single concept (e.g., a character, place) throughout a single work of authorship (e.g., a book, a song, a movie) or across a series of works. As used herein, a work of authorship (also referred to as a "work") includes products of creative or factual expression, such as books, songs, and/or videos. The user may wish to skip sections of the work (e.g., chapters in a book or scenes in a movie) that do not involve the target concept. In some situations, skipping sections of the work that do not contain the target concept may not be ideal because the sections may nevertheless include information that informs the user as to why the target concept's story progresses in the way it does.

[0016] For example, the target concept may be a first character. The first character may be married to a second character. If the second character appears in a scene in a movie, the events of that scene may shape the second character's actions in a way that affects the first character, even if the first character wasn't in the scene. While embodiments of the present disclosure may relate to any kind of work of authorship (e.g., movies, songs, books), aspects of the disclosure are discussed as they relate to the generation and/or approval of narrative paths based on textual works (e.g., books). The present disclosure should not be limited to textual works, however.

[0017] As used herein, background information includes any information relating to concepts other than the target concept. Related background information includes information that is needed to understand the target concept's story, while unrelated background information includes information that can safely be skipped by a reader following a target concept. For example, related background information may include information pertaining to a non-target concept that is related to the target concept. The non-target concept may be considered related to the target concept if, e.g., a computer system determines, using a knowledge graph, that the non-target concept has a relatedness score above a threshold. The use of a relatedness score to determine whether background information is related is discussed more thoroughly in reference to FIG. 6.

[0018] In some embodiments, the computer system may ingest a book using natural language processing techniques to generate a knowledge graph for the book. The book may also be broken up into a plurality of narrative blocks (e.g., paragraphs, chapters, sections). The computer system may prompt a user to select the target concept that the user wishes to read about. The computer system may identify narrative blocks that include the target concept, referred to herein as target narrative blocks, and background narrative blocks (i.e., narrative blocks that do not include the target concept). In order to identify the target narrative blocks, the computer system may generate a concept path for the target concept that indicates the target concept's narrative progression through the narrative blocks. The concept path may include the narrative blocks that the target concept appears in (e.g., the target narrative blocks).

[0019] The computer system may then break the background narrative blocks into at least two groups: unrelated background narrative blocks and related background narrative blocks. The unrelated background narrative blocks may include narrative blocks that do not include the target concept or a related non-target concept, and the related background narrative blocks may include narrative blocks that include at least one related non-target concept. The computer system may then generate a narrative path for the target concept. The narrative path may be a shortened version of the work that only includes the target narrative blocks and the related background narrative blocks. The narrative path for a target concept may differ from the concept path for the target concept because the concept path only includes the target narrative blocks and not the related background narrative blocks. The computer system may then provide the narrative path to the reader.

[0020] In some embodiments, the knowledge graph (also known as a semantic network) may include a plurality of nodes and edges. The nodes may represent concepts found in the book, such as actors, characters, themes, and/or actions. The nodes may be linked together with edges to represent a connection between the nodes. For example, two concepts relating to persons may be linked together with an edge that represents that the persons are married. In some embodiments, actions may also be represented by edges (e.g., an edge between two concepts may indicate that a first character ran after second character).

[0021] In some embodiments, the concept path may indicate which narrative blocks a concept appears in. The concept path may be used to determine which narrative blocks only contain background information (whether related or unrelated) and which narrative blocks are target narrative blocks. The concept path may also indicate the order in which the target narrative blocks should (or can) be read. For example, a series of books may be published out of order; a second book in the series may take place earlier in the series' timeline than a first book in the series. Accordingly, the concept path for a character that appears in both books may indicate that a reader should (or can) read the second book before reading the first book. In some embodiments, a concept path may be generated for a target concept in response to a reader selecting the target concept.

[0022] In some embodiments, the computer system may use the knowledge graph to determine which background narrative blocks must be read and which may be skipped (i.e., which are related background narrative blocks and which are not). For example, the computer system may identify which concepts in the knowledge graph are intricately related to the target concept. The computer system may determine that background narrative blocks that include one of the intricately related concepts are related background narrative blocks and cannot be skipped. The computer system may also determine that narrative blocks containing background information that do not include an intricately related concept can be skipped.

[0023] In some embodiments, the computer system may receive, from the user, a proposed narrative path for a target concept. The user may create the proposed narrative path by identifying chapters in the book that include the target concept. For example, each chapter in a book may be written from the point-of-view of a character. The user may create the proposed narrative path by scanning the table of contents and selecting only the chapters that are written from the point of view of the target concept (e.g., the character they wish to read about). The computer system may generate a knowledge graph for the proposed narrative path and a knowledge graph for the book. The computer system may then determine whether the proposed narrative path is approved by comparing the knowledge graph for the narrative path to the knowledge graph for the book. If the proposed narrative path is approved, the computer system may alert the user that the proposed narrative path is approved. If the proposed narrative path is not approved, the computer system may alert the user that the proposed narrative path is not approved. Alternatively, if the proposed narrative path is not approved, the computer system may generate a new narrative path for the target concept and provide the new narrative path to the user.

[0024] As discussed above, aspects of the disclosure may relate to natural language processing. Accordingly, an understanding of the embodiments of the present disclosure may be aided by describing embodiments of natural language processing systems and the environments in which these systems may operate. Turning now to the figures, FIG. 1 illustrates a block diagram of an example computing environment 100 in which illustrative embodiments of the present disclosure may be implemented. In some embodiments, the computing environment 100 may include a remote device 102 and a host device 112.

[0025] Consistent with various embodiments, the remote device 102 and the host device 112 may be computer systems. The remote device 102 and the host device 112 may include one or more processors 106 and 116 and one or more memories 108 and 118, respectively. The remote device 102 and the host device 112 may be configured to communicate with each other through an internal or external network interface 104 and 114. The network interfaces 104 and 114 may be, e.g., modems or network interface cards. The remote device 102 and/or the host device 112 may be equipped with a display or monitor. Additionally, the remote device 102 and/or the host device 112 may include optional input devices (e.g., a keyboard, mouse, scanner, or other input device), and/or any commercially available or custom software (e.g., browser software, communications software, server software, natural language processing software, search engine and/or web crawling software, filter modules for filtering content based upon predefined parameters, etc.). The host device 112 may, in various embodiments, be connected to an output device. The output device includes any device that may be used to read, listen to, print out, or watch the work. For example, the output device may be a tablet, an e-reader, or a printer. In some embodiments, the remote device 102 and/or the host device 112 may be servers, desktops, laptops, or hand-held devices.

[0026] The remote device 102 and the host device 112 may be distant from each other and communicate over a network 150. In some embodiments, the host device 112 may be a central hub from which remote device 102 can establish a communication connection, such as in a client-server networking model. Alternatively, the host device 112 and remote device 102 may be configured in any other suitable networking relationship (e.g., in a peer-to-peer configuration or using any other network topology).

[0027] In some embodiments, the network 150 can be implemented using any number of any suitable communications media. For example, the network 150 may be a wide area network (WAN), a local area network (LAN), an internet, or an intranet. In certain embodiments, the remote device 102 and the host device 112 may be local to each other, and communicate via any appropriate local communication medium. For example, the remote device 102 and the host device 112 may communicate using a local area network (LAN), one or more hardwire connections, a wireless link or router, or an intranet. In some embodiments, the remote device 102 and the host device 112 may be communicatively coupled using a combination of one or more networks and/or one or more local connections. For example, the first remote device 102 may be hardwired to the host device 112 (e.g., connected with an Ethernet cable) while a second remote device (not shown) may communicate with the host device using the network 150 (e.g., over the Internet).

[0028] In some embodiments, the network 150 can be implemented within a cloud computing environment, or using one or more cloud computing services. Consistent with various embodiments, a cloud computing environment may include a network-based, distributed data processing system that provides one or more cloud computing services. Further, a cloud computing environment may include many computers (e.g., hundreds or thousands of computers or more) disposed within one or more data centers and configured to share resources over the network 150.

[0029] In some embodiments, the remote device 102 may enable users to submit (or may submit automatically with or without user input) electronic documents (e.g., works of authorship such as books) to the host devices 112 in order to generate a narrative path for a target concept. For example, the remote device 102 may include electronic document submission module 110 and a user interface (UI). The electronic document submission module 110 may be in the form of a web browser or any other suitable software module, and the UI may be any type of interface (e.g., command line prompts, menu screens, graphical user interfaces). The UI may allow a user to interact with the remote device 102 to submit, using the document submission module 110, one or more books or other works of authorship to the host device 112. In some embodiments, the remote device 102 may further include a notification receiver module 111. This module may be configured to receive notifications, from the host device 112, regarding whether a proposed narrative path has been approved.

[0030] In some embodiments, a user may scan physical documents into the remote device (or the host device). The remote device (or host device) may then perform optical character recognition on the scanned documents to convert the document to machine-encoded text. The machine-encoded text may, if necessary, be transmitted to the host device using the document submission module 110 and the user interface.

[0031] In some embodiments, the host device 112 may include a natural language processing system 122. The natural language processing system 122 may include a natural language processor 124, a search application 126, and a narrative path consistency module 128. The natural language processor 124 may include numerous subcomponents, such as a tokenizer, a part-of-speech (POS) tagger, a semantic relationship identifier, and a syntactic relationship identifier. An example natural language processor is discussed in more detail in reference to FIG. 2.

[0032] The search application 126 may be implemented using a conventional or other search engine, and may be distributed across multiple computer systems. The search application 126 may be configured to search one or more databases or other computer systems for content that is related to an electronic document (such as a book) submitted by a remote device 102. For example, the search application 126 may be configured to search a corpus (or universe) of books related to the submitted book to identify relationships between the target concept and other concepts to generate a knowledge graph. The narrative path consistency module 128 may be configured to analyze a book to determine which narrative blocks contain background information relating to the target concept, and to analyze those narrative blocks to determine which must be read and which can be skipped. The narrative path consistency module 128 may include one or more modules or units, and may utilize the search application 126, to perform its functions (e.g., to determine which narrative blocks can be skipped and which must be read), as discussed in more detail in reference to FIG. 2.

[0033] While FIG. 1 illustrates a computing environment 100 with a single host device 112 and a single remote device 102, suitable computing environments for implementing embodiments of this disclosure may include any number of remote devices and host devices. The various modules, systems, and components illustrated in FIG. 1 may exist, if at all, across a plurality of host devices and remote devices. For example, some embodiments may include two host devices. The two host devices may be communicatively coupled using any suitable communications connection (e.g., using a WAN, a LAN, a wired connection, an intranet, or the Internet). The first host device may include a natural language processing system configured to generate a knowledge graph for a submitted book, and the second host device may include a software module configured to generate a narrative path for a target concept and to determine which narrative blocks must be included in the narrative path.

[0034] It is noted that FIG. 1 is intended to depict the representative major components of an exemplary computing environment 100. In some embodiments, however, individual components may have greater or lesser complexity than as represented in FIG. 1, components other than or in addition to those shown in FIG. 1 may be present, and the number, type, and configuration of such components may vary.

[0035] Referring now to FIG. 2, shown is a block diagram of an exemplary system architecture 200, including a natural language processing system 212, configured to generate and/or validate a narrative path for a target concept, in accordance with embodiments of the present disclosure. In some embodiments, a remote device (such as remote device 102 of FIG. 1) may submit electronic documents (such as a book) to be analyzed to the natural language processing system 212 which may be housed on a host device (such as host device 112 of FIG. 1). Such a remote device may include a client application 208, which may itself involve one or more entities operable to generate or modify information in the book that is then dispatched to a natural language processing system 212 via a network 215.

[0036] Consistent with various embodiments, the natural language processing system 212 may respond to electronic document submissions sent by the client application 208. Specifically, the natural language processing system 212 may analyze a received book to generate a narrative path for a target concept. In some embodiments, the natural language processing system 212 may analyze a received book and proposed narrative path to determine whether the proposed narrative path is approved. In some embodiments, the natural language processing system 212 may include a natural language processor 214, data sources 224, a search application 228, and a narrative path consistency module 230.

[0037] The natural language processor 214 may be a computer module that analyzes the received books and other electronic documents. The natural language processor 214 may perform various methods and techniques for analyzing electronic documents (e.g., syntactic analysis, semantic analysis, etc.). The natural language processor 214 may be configured to recognize and analyze any number of natural languages. In some embodiments, the natural language processor 214 may parse passages of the electronic documents. Further, the natural language processor 214 may include various modules to perform analyses of electronic documents. These modules may include, but are not limited to, a tokenizer 216, a part-of-speech (POS) tagger 218, a semantic relationship identifier 220, and a syntactic relationship identifier 222.

[0038] In some embodiments, the tokenizer 216 may be a computer module that performs lexical analysis. The tokenizer 216 may convert a sequence of characters into a sequence of tokens. A token may be a string of characters included in an electronic document and categorized as a meaningful symbol. Further, in some embodiments, the tokenizer 216 may identify word boundaries in an electronic document and break any text passages within the document into their component text elements, such as words, multiword tokens, numbers, and punctuation marks. In some embodiments, the tokenizer 216 may receive a string of characters, identify the lexemes in the string, and categorize them into tokens.

[0039] Consistent with various embodiments, the POS tagger 218 may be a computer module that marks up a word in passages to correspond to a particular part of speech. The POS tagger 218 may read a passage or other text in natural language and assign a part of speech to each word or other token. The POS tagger 218 may determine the part of speech to which a word (or other text element) corresponds based on the definition of the word and the context of the word. The context of a word may be based on its relationship with adjacent and related words in a phrase, sentence, or paragraph. In some embodiments, the context of a word may be dependent on one or more previously analyzed electronic documents (e.g., the content of one book may shed light on the meaning of text elements in another book, particularly if they are part of the same corpus or universe). Examples of parts of speech that may be assigned to words include, but are not limited to, nouns, verbs, adjectives, adverbs, and the like. Examples of other part of speech categories that POS tagger 218 may assign include, but are not limited to, comparative or superlative adverbs, wh-adverbs, conjunctions, determiners, negative particles, possessive markers, prepositions, wh-pronouns, and the like. In some embodiments, the POS tagger 218 may tag or otherwise annotate tokens of a passage with part of speech categories. In some embodiments, the POS tagger 218 may tag tokens or words of a passage to be parsed by the natural language processing system 212.

[0040] In some embodiments, the semantic relationship identifier 220 may be a computer module that may be configured to identify semantic relationships of recognized text elements (e.g., words, phrases) in documents. In some embodiments, the semantic relationship identifier 220 may determine functional dependencies between entities and other semantic relationships.

[0041] Consistent with various embodiments, the syntactic relationship identifier 222 may be a computer module that may be configured to identify syntactic relationships in a passage composed of tokens. The syntactic relationship identifier 222 may determine the grammatical structure of sentences such as, for example, which groups of words are associated as phrases and which word is the subject or object of a verb. The syntactic relationship identifier 222 may conform to formal grammar.

[0042] In some embodiments, the natural language processor 214 may be a computer module that may parse a document and generate corresponding data structures for one or more portions of the document. For example, in response to receiving a book at the natural language processing system 212, the natural language processor 214 may output parsed text elements from the book as data structures. In some embodiments, a parsed text element may be represented in the form of a parse tree or other graph structure. To generate the parsed text element, the natural language processor 214 may trigger computer modules 216-222.

[0043] In some embodiments, the output of the natural language processor 214 may be stored as an information corpus 226 in one or more data sources 224. In some embodiments, data sources 224 may include data warehouses, information corpora, data models, and document repositories. The information corpus 226 may enable data storage and retrieval. In some embodiments, the information corpus 226 may be a storage mechanism that houses a standardized, consistent, clean, and integrated copy of the ingested and parsed book(s). The information corpus 226 may also include a list of concepts found in the ingested book(s). The data may be sourced from various operational systems. Data stored in the information corpus 226 may be structured in a way to specifically address analytic requirements. For example, the information corpus 226 may store the ingested book(s) as a plurality of narrative blocks to make narrative path generation easier. In some embodiments, the information corpus 226 may be a relational database.

[0044] In some embodiments, the natural language processing system 212 may include a narrative path consistency module 230. The narrative path consistency module 230 may be a computer module that is configured to generate a knowledge graph for a book, determine which narrative blocks can be skipped for a given target concept, and provide to a reader a narrative path for the target concept that includes only the narrative blocks that must be read. In some embodiments, the narrative path consistency module 230 may be configured to analyze a proposed narrative path received from a user and determine whether the proposed narrative path is acceptable.

[0045] In some embodiments, the narrative path consistency module 230 may contain submodules. For example, the narrative path consistency module 230 may contain a knowledge graph generator 232, a narrative path generator 234, and a narrative path validator 236. The knowledge graph generator 232 may be configured to parse a received book (or proposed narrative path) using the natural language processor 214 and related subcomponents 216-222. The knowledge graph generator 232 may then generate, from the parsed book, a knowledge graph consisting of a plurality of nodes (each relating to a different concept) and edges. In some embodiments, the knowledge graph generator 232 may use a search application 228 to search a set of (i.e., one or more) corpora (e.g., data sources 224) to identify the concepts and relationships between the concepts to generate a knowledge graph.

[0046] The narrative path generator 234 may be configured to identify a target concept and generate a narrative path for the target concept. In some embodiments, the narrative path generator 234 may prompt a user (such as a reader) to select the target concept from, e.g., a list of concepts that appear in the book. The narrative path generator 234 may break the ingested book into narrative blocks using the natural language processor 214 and related subcomponents 216-222. The narrative path generator 234 may then search the narrative blocks using, e.g., a search application 228 to identify which narrative blocks contain the target concept (e.g., which are target narrative blocks) and which narrative blocks do not (e.g., which are background narrative blocks). The narrative path generator 234 may also determine, using the knowledge graph, which concepts are intricately related to the target concept. The narrative path generator 234 may then search the background narrative blocks using, e.g., the search application 228, to determine whether they include a related concept. If a related concept is present in a background narrative block, the narrative path generator 234 may determine that the background narrative block is a related background narrative block. The narrative path generator 234 may then generate the narrative path for the target concept. The narrative path may include the target narrative blocks and the related background narrative blocks.

[0047] The narrative path validator 236 may be a computer module that is configured to analyze a proposed narrative path and determine whether the proposed narrative path is approved. The narrative path validator 236 may receive a proposed narrative path from a user. The narrative path validator 236 may then generate a knowledge graph for the proposed narrative path by calling on the knowledge graph generator 232. The narrative path validator 236 may then compare the knowledge graph for the book to the knowledge graph for the proposed narrative path to determine whether the proposed narrative path is approved, as discussed in more detail in reference to FIG. 7.

[0048] FIG. 3 illustrates a close-up view of a portion 300A of an exemplary knowledge graph 300 for a book, in accordance with embodiments of the present disclosure. The close-up view of the portion 300A includes eleven nodes 301-311, with each node representing a different concept. The nodes 301-311 are connected by edges that represent connections between the concepts. For example, if two connected concepts correspond to characters in a book, an edge connecting them may represent that the characters are married. A computer system may generate the knowledge graph 300 using natural language processing techniques.

[0049] The illustrated portion 300A of the knowledge graph 300 is an undirected part of the knowledge graph, meaning that the edges shown represent symmetric relations between the concepts. For example, two of the concepts may correspond to characters in the book (characters A and B), and an edge between the two concepts may indicate that the characters are married. Because the fact that Character A is married to Character B implies that Character B is likewise married to Character A, the edge represents a symmetric relationship and is undirected. If, however, the edge represented a different relationship, the edge may be a directed edge. For example, if Character A knew Character B, the edge may be directed because the fact that Character A knows Character B does not necessarily imply that Character B knows Character A. In some embodiments, at least a part of the knowledge graph may be directed.

[0050] The illustrated portion 300A of the knowledge graph 300 has two connected components. A connected component of an undirected graph includes a subgraph in which any two nodes in the subgraph are connected to each other by paths (including paths through other nodes), but cannot be connected to at least one other node in the graph. For example, concept 11 311 and concept 10 310 are connected to each other, but no path exists in the illustrated portion 300A of the knowledge graph 300 that can connect either concept 11 or concept 10 to, e.g., concept 9 309. Likewise any two nodes that represent concepts 1 through 9 301--309 can be connected to each other by at least one path, but none of the nodes representing concepts 1 through 9 can be connected to either concept 10 310 or concept 11 311. Because there are two subgraphs that satisfy this criteria, the illustrated portion 300A of the knowledge graph 300 includes two connected components.

[0051] In some embodiments, the knowledge graph 300 (or a portion thereof) may have an isolated node. An isolated node includes a node relating to a concept that does not connect to any other nodes through an edge. Isolated nodes are particularly likely to exist in knowledge graphs generated for a narrative path because portions of the book may be omitted from the narrative path. An isolated node is a type of connected component.

[0052] In some embodiments, the number of edges connecting two concepts may correspond to a level of relatedness between the concepts. For example, concept 1 301 and concept 2 302 are connected with three edges, whereas concept 1 301 is connected to concept 5 305 by a single edge. This may indicate that concept 1 301 and concept 2 302 are more closely related than concept 1 and concept 5 305. The computer system may generate a relatedness score for two concepts using the number of edges connecting the two concepts together.

[0053] In some embodiments, the relatedness score may also consider the relatedness of concepts that, while not directly connected to each other in the knowledge graph 300, are each connected to the same concept. The computer system may look at whether a path can be taken through other concepts to connect the two concepts. For example, a path can be drawn to connect concept 1 301 and concept 6 306 by going through concept 5 305. The length of the path may be considered when determining a relatedness score between two concepts. For example, the relatedness score may be based on the degrees of separation between concepts. Two concepts that are linked together (e.g., concept 1 301 and concept 2 302) may have 1 degree of separation, whereas two concepts that are not linked together but are both linked to a third concept (e.g., concept 1 301 and concept 6 306) may have 2 degrees of separation, for example.

[0054] The computer system may also consider the number of other concepts that the two concepts are connected to in determining a relatedness score. For example, concept 7 307 is not connected by an edge to concept 1 301. However, concept 7 307 and concept 1 301 are both connected to concepts 3 303 and 2 302. The computer system may determine that, despite not being directly connected, concepts 7 307 and 1 301 are somewhat related. Accordingly, the relatedness score between them may be higher than, e.g., the relatedness score between concept 1 301 and concept 9 309, which are distantly connected to each other, or than concept 1 301 and concept 11 311, which cannot be connected.

[0055] In some embodiments, the nodes 301-311 may be generated using "fuzzy logic" and/or concept matching. This may be done to ensure that different words or phrases relating to the same concept are included in a single node. For example, a book may refer to a character's "pet," "dog," and "german shepherd" at different points. A computer system using natural language processing techniques and fuzzy logic may determine that all three words refer to the same concept. Accordingly, all three terms may be represented in the knowledge graph using a single node, and any edges between any of the three terms and other concepts may connect to that node.

[0056] In some embodiments, the nodes 301-311 can be weighted according to their importance. This may be represented in the knowledge graph 300 by, e.g., making the nodes 301-311 larger or smaller. The nodes 301-311 may be weighted according to the number of edges that connect to the nodes. In various embodiments, the nodes 301-311 may be weighted according to the importance of the associated concept. For example, concepts relating to natural elements (e.g., time of day) may be weighted less than concepts relating to actors (e.g., characters) and events (e.g., a wedding or battle).

[0057] In some embodiments, one or more of the nodes 301-311 may be considered potentially important nodes. This may be represented in the knowledge graph by, e.g., making the potentially important nodes larger or smaller, or making them boldface. A node may be a potentially important node if it has a high number of edges connecting to it. For example, a computer system may determine that a node is a potentially important node by comparing the number of edges connected to the node to an important node threshold. In some embodiments, the important node threshold may be set by a user. In some embodiments, the important node threshold may be determined by a computer system based on the number of edges connected to each node. For example, the computer system may determine that 10% of nodes in the knowledge graph have more than 20 edges connected to them. Accordingly, the computer system may set the important node threshold at 20 edges. Any node with more than 20 edges connected to them may be considered potentially important nodes.

[0058] FIG. 4 illustrates concept paths 401 and 411 for two concepts, in accordance with embodiments of the present disclosure. The first concept path 401 is a concept path for a first character in a book (Character A) and the second concept path 411 is a concept path for a second character in the book (Character B). The concept paths 401 and 411 illustrate the narrative progression through a book for Character A and Character B, respectively. Both concept paths 401 and 411 include five narrative blocks 402A-402E. The narrative blocks correspond to chapters in the book. For example, the first narrative block 402A corresponds to the first chapter in the book, the second narrative block 402B corresponds to the second chapter in the book, and so on. The points 404A-C and 414A-C in the concept paths 401 and 411 indicate which chapters Character A and Character B appear in, respectively.

[0059] For example, the first concept path 401 indicates that Character A appears in the first chapter 402A (point 404A), the second chapter 402B (point 404B), and the fifth chapter 402E (point 404C) of the book. The second concept path 411 indicates that Character B appears in the first chapter 402A (point 414A), the third chapter 402C (point 414B), and the fifth chapter 402E (point 414C) of the book. Neither character appears in the fourth chapter 402D of the book.

[0060] In some embodiments, the concept paths 401 and 411 may be used to determine which narrative blocks contain background information for the concepts and which narrative blocks must be read to follow the concepts. For example, because the first narrative path 401 for Character A indicates that Character A does not appear in the third 402C and fourth 402D chapters, a computer system may determine that the third and fourth chapters contain only background information for Character A. Likewise, the computer system may determine that the second chapter 402B and the fourth chapter 402D contain background information for Character B.

[0061] In some embodiments, the computer system may use the concept paths 401 and 411 to determine which narrative blocks are related background narrative blocks and must be read. For example, based on a knowledge graph, the computer system may determine that Character A and Character B are very closely related. Therefore, a reader that is only concerned with reading about Character A will nevertheless need to understand what is going on with Character B to understand Character A's story. The computer system may then determine which, if any, of the background narrative blocks for Character A (402C and 402D) contain related background information (i.e., are related background narrative blocks) for Character A. Even though Character A does not appear in the third chapter 402C, the computer system may determine that the third chapter is a related background narrative block because Character B appears in it. Accordingly, the computer system may generate a narrative path for the Character A that includes the third chapter 402C in addition to chapters that include Character A (e.g., the first chapter 402A, the second chapter 402B, and the fifth chapter 402E). The narrative blocks in the narrative path may be ordered in a sequence consistent with the ordering of the narrative blocks in the book. For example, the narrative path may start with the first chapter 402A, and then proceed to the second chapter 402B, the third chapter 402C, and finally the fifth chapter 402E.

[0062] The concept paths 401 and 411 are shown for illustrative purposes only. Many other ways of representing the information (e.g., using lists, tables, etc.) will be readily apparent to a person of ordinary skill in the art. The disclosure should not be limited to any particular way of representing concept paths.

[0063] In some embodiments, the concepts may not both be characters. For example, the second concept path (e.g., for Character B) may instead be a concept path generated for a City (e.g., City X). Accordingly, the reader may read all narrative blocks that contain either Character A or City X.

[0064] FIG. 5 illustrates a method 500 for generating a narrative path for a target concept and providing the narrative path to a reader, in accordance with embodiments of the present disclosure. The method 500 may be performed by a computer system, such as the host device 112 (shown in FIG. 1). The method 500 may begin at operation 502, where the computer system may ingest a book using natural language processing.

[0065] Natural language processing, as discussed herein, may incorporate any relevant natural processing techniques including, without limitation, those techniques discussed in reference to modules 216-222 in FIG. 2. For example, in embodiments, the natural language processing technique may include analyzing syntactic and semantic content in the book. The natural language processing technique may be configured to parse structured data (e.g., tables, graphs) and unstructured data (e.g., textual content containing words, numbers). In certain embodiments, the natural language processing technique may be embodied in a software tool or other program configured to analyze and identify the semantic and syntactic elements and relationships present in the book. More particularly, the natural language processing technique can include parsing the grammatical constituents, parts of speech, context, and other relationships (e.g., modifiers) of the book. The natural language processing technique can be configured to recognize keywords, contextual information, and metadata tags associated with words, phrases, or sentences related to concepts (e.g., actors, characters, etc.). The syntactic and semantic elements can include information such as word frequency, word meanings, text font, italics, hyperlinks, proper names, noun phrases, parts-of-speech, or the context of surrounding words. Other syntactic and semantic elements are also possible.

[0066] After ingesting the book at operation 502, the computer system may generate a knowledge graph for the book at operation 504. The knowledge graph may have the same or similar characteristics and/or appearance as the knowledge graph 300 discussed in reference to FIG. 3. In some embodiments, for example, the knowledge graph may include a plurality of nodes and edges. The nodes may relate to concepts found in the book, such as characters, themes, and/or actions. The nodes may be linked together with edges to represent a connection between the nodes. For example, two concepts relating to persons may be linked together with an edge that represent that the persons are married. In some embodiments, actions may also be represented by edges (e.g., an edge between two concepts may indicate that a first character chased a second character).

[0067] In some embodiments, the knowledge graph may be generated by parsing the book to identify subject-predicate-object triplets. In some embodiments, this may involve analyzing parse trees generated by a natural language processor, such as the natural language processor 214 (shown in FIG. 2). The subject and objects in the sentence may be represented by nodes in a knowledge graph, whereas the predicate may be represented by an edge. For example, a sentence in a book might read "George II is the King of England." A natural language processing system may parse this sentence to identify a subject ("George II"), a predicate ("is the"), and an object ("King of England"). Based on the parsing, the natural language processing system may generate nodes for "George II" and "King of England." The nodes may be connected by an edge denoting a relationship between the nodes (i.e., indicating that George II is the King of England).

[0068] After generating a knowledge graph at operation 504, the computer system may prompt a user (e.g., a reader) to select a target concept that he wishes to read about at operation 506. In some embodiments, the computer system may provide a list of concepts to the reader. The computer system may include any suitable user interface (UI) for allowing a reader to select a target concept. For example, the UI may be a graphical user interface (GUI) or a command prompt.

[0069] In some embodiments, the reader may select more than one target concept that he wishes to read about. For example, a reader may select two different characters in the book that he wishes to read about. As another example, the reader may select a character that he is interested in reading about and a different concept, such as a battle or a specific location in the book (e.g., everything that happens in a specific city).

[0070] After prompting a user to select a target concept at operation 506, the computer system may identify target narrative blocks for the target concept at operation 508. In some embodiments, the computer system may generate a concept path for the target concept. The concept path may indicate which narrative blocks include the target concept. In some embodiments, the concept path may also indicate the order in which the narrative blocks should be read. For example, if a series of books are published out of order (e.g., the story told in the third book takes place before the story told in the second book), the generated concept path may indicate that the reader should start with the third book and, after finishing it, should move on the second book. The concept path may be similar to the concept paths 401 and 411 discussed in reference to FIG. 4. The computer system may determine that each narrative block that contains the target concept is a target narrative block for the target concept. In some embodiments, the computer system may use a search application (such as search application 228 shown in FIG. 2) to search each narrative block for the target concept without generating a concept path.

[0071] At operation 510, the computer system may identify which background narrative blocks must be read (i.e., are related background narrative blocks) and which narrative blocks can be skipped (i.e., are unrelated background narrative block). The background narrative blocks may be grouped according to, e.g., whether or not they contain a concept that is closely related to the target concept. A method for identifying the related background narrative blocks is discussed more thoroughly in reference to FIG. 6.

[0072] At operation 512, the computer system may generate a narrative path for the target concept. The narrative path may include the target narrative blocks and the related background narrative blocks. The narrative blocks in the narrative path may be ordered in a sequence consistent with the sequence of the narrative blocks in the book. For example, if a first narrative block precedes a second narrative block in the book, and both narrative blocks are in the narrative path, the first narrative block may precede the second narrative block in the narrative path.

[0073] After generating a narrative path for the target concept at operation 512, the computer system may provide the narrative path to the user at operation 514. In some embodiments, the computer system may transmit the narrative path to an output device, such as a tablet or an e-reader. In some embodiments, the computer system may transmit the narrative path to a user's computer system (e.g., the remote device 102 shown in FIG. 1).

[0074] For example, a user may scan a textual work, such as a book. The computer system may use optical character recognition to convert the book to machine-encoded text. The computer system may then generate a narrative path for a target concept that appears in the book by, e.g., performing operations 502-512 of method 500. The computer system may then transmit the shortened version of the work (e.g., the narrative path) to the user by, e.g., sending it to an output device such as a tablet or e-reader. In some embodiments, the computer system may print the shortened version of the work. After providing the narrative path to the user at operation 514, the method 500 may end.

[0075] FIG. 6 illustrates a method 600 for identifying related background narrative blocks for a target concept, in accordance with embodiments of the present disclosure. The method 600 may be performed by a computer system, such as the host device 112 (shown in FIG. 1). The method 600 may begin at operation 602, where the computer system may identify a target concept. In some embodiments, the computer system may prompt a reader to select a target concept.

[0076] After identifying a target concept at operation 602, the computer system may calculate a relatedness score for a non-target concept using the knowledge graph at operation 604. The relatedness score may be based on the relatedness of the non-target concept to the target concept. The computer system may use a knowledge graph to determine the relatedness score. Various aspects of the relatedness score are discussed in more detail and with examples in reference to FIG. 3.

[0077] In some embodiments, the relatedness score may be based on the number of edges between the target concept and the non-target concept. The more edges that connect the concepts, the more closely related they may be, and the higher the non-target concept's relatedness score may be. The computer system may also consider the degrees of separation between concepts that are not directly connected when determining a relatedness score. The fewer degrees of separation between the target concept and the non-target concept, the more closely related they may be.

[0078] In some embodiments, the total number of edges that the non-target concept connects to may impact the relatedness score. For example, concepts that relate to generic entities, such as "United States" or "Male," may link to a large number of other concepts. Because such a generic concept may appear in every (or almost every) narrative block, the computer system may penalize the non-target concept when calculating the relatedness score. In some embodiments, the computer system may be configured to ignore concepts relating to generic entities and may not consider them when determining whether a background narrative block must be read.

[0079] After calculating a relatedness score for a non-target concept at operation 604, the computer system may determine whether the relatedness score exceeds a threshold at decision block 606. The threshold may be the minimum relatedness score that a non-target concept must achieve in order for the computer system to determine that the non-target concept is closely (aka intricately) related to the target concepts. Non-target concepts with a lower score may not be important enough to the target concept to have their narrative blocks read (i.e., they can be skipped). Non-target concepts with a score exceeding the threshold may be important to the target concept, and narrative blocks containing the non-target concept may need to be read. The threshold may be set by a user or system administrator. In some embodiments, the threshold may be set automatically by the computer system based on historical data and the reader's response. For example, if a reader consistently reads narrative blocks that the computer system has decided can be skipped (e.g., because he is confused about subsequent narrative blocks), the computer system may adjust the threshold so that fewer narrative blocks are skipped. Non-target concepts with a relatedness score exceeding the threshold are referred to herein as related non-target concepts.

[0080] If the computer system determines that the relatedness score does not exceed a threshold, the computer system may determine whether there are any unscored non-target concepts at decision block 612. If no unscored non-target concepts remain, the method 600 may end. If non-target concepts still need to be scored, the method 600 may return to operation 604 and a relatedness score may be generated for the next non-target concept.

[0081] If the computer system determines that the relatedness score for a non-target concept exceeds the threshold at decision block 606, the method 600 may progress to decision block 608, where the computer system may determine whether the non-target concept is found in any of the background narrative blocks. If the non-target concept is not found in a background narrative block, the method 600 may progress to decision block 612. If the non-target concept does appear in a background narrative block, the computer system may determine that the background narrative blocks that contain the related non-target concept are related background narrative blocks at operation 610.

[0082] After determining that the background narrative blocks that contain the related non-target concept are related background narrative blocks at operation 610, the computer system may determine whether there are any unscored non-target concepts at decision block 612. If no unscored non-target concepts remain, the method 600 may end. If non-target concepts still need to be scored, the method 600 may return to operation 604 and a relatedness score may be generated for the next non-target concept.

[0083] Referring now to FIG. 7, shown is a flowchart of a method 700 for validating a user-generated narrative path for a target concept, in accordance with embodiments of the present disclosure. The method 700 may be performed by a computer system, such as the host device 112 (shown in FIG. 1). The method 700 may begin at operation 702, where the computer system may ingest a book using natural language processing. The computer system may ingest the book as discussed previously herein, for example as discussed in reference to operation 502 (shown in FIG. 5).

[0084] After ingesting the book using natural language processing techniques at operation 702, the computer system may generate a first knowledge graph at operation 704. The first knowledge graph may be based on the book. The first knowledge graph may have the same or similar characteristics and/or appearance as the knowledge graph 300 discussed in reference to FIG. 3. In some embodiments, for example, the first knowledge graph may include a plurality of nodes and edges. The nodes may relate to concepts found in the book, such as characters, themes, and/or actions. The nodes may be linked together with edges to represent a connection between the nodes. For example, two concepts relating to persons may be linked together with an edge that represent that the persons are married. In some embodiments, actions may also be represented by edges (e.g., an edge between two concepts may indicate that a first character chased a second character).

[0085] After generating the first knowledge graph at operation 704, the computer system may receive a proposed narrative path and target concept from the user at operation 706. In some embodiments, the computer system may provide a list of concepts to the reader. The computer system may include any suitable user interface (UI) for allowing a reader to select a target concept. For example, the UI may be a graphical user interface (GUI) or a command prompt. In some embodiments, the proposed narrative path may include a plurality of narrative blocks that a user wishes to read ordered in a sequence that the user wishes to read them in.

[0086] After receiving the proposed narrative path and the target concept from the user at operation 706, the computer system may generate a second knowledge graph at operation 708. The second knowledge graph may correspond to the proposed narrative path. The computer system may first ingest the narrative path using natural language processing techniques discussed herein. The computer system may then generate the second knowledge graph using a computer module (e.g., the knowledge graph generator 232 discussed in reference to FIG. 2).

[0087] The second knowledge graph may have the same or similar characteristics and/or appearance as the knowledge graph 300 discussed in reference to FIG. 3. In some embodiments, for example, the second knowledge graph may include a plurality of nodes and edges. The nodes may relate to concepts found in the narrative path, such as characters, themes, and/or actions. The nodes may be linked together with edges to represent a connection between the nodes. For example, two concepts relating to persons may be linked together with an edge that represent that the persons are married. In some embodiments, actions may also be represented by edges (e.g., an edge between two concepts may indicate that a first character chased a second character).

[0088] After generating the second knowledge graph at operation 708, the computer system may determine whether the proposed narrative path for the target concept is approved at decision block 710. In some embodiments, the computer system may determine whether there are any target narrative blocks for the target concept that are missing from the proposed narrative path. If the proposed narrative path does not include every target narrative block, the computer system may determine that the proposed narrative path is not approved. Otherwise, the computer system may approve the narrative path. In some embodiments, the computer system may compare the number of missing target narrative blocks to a threshold. If the number of missing target narrative blocks exceeds the threshold, the computer system may determine that the proposed narrative path is not approved.

[0089] In some embodiments, the computer system may determine whether the narrative blocks in the proposed narrative path are arranged in an order consistent with the book. For example, the computer system may determine whether any narrative blocks found in the narrative path precede a narrative block that they follow in the book. If the narrative blocks in the proposed narrative path are not in an order consistent with the book, the computer system may determine that the narrative path is not approved.

[0090] In some embodiments, the computer system may determine what percentage of the book is found in the narrative path. In some embodiments, this may be done based on the percentage of narrative blocks found in the narrative path. For example, the computer system may determine a percentage of included narrative blocks by comparing the number of narrative blocks in the narrative path to the number of narrative blocks in the book. The computer system may then compare the percentage of included narrative blocks to a threshold. If the percentage of included narrative blocks does not meet or exceed the threshold, the computer system may determine that the narrative path is not approved.

[0091] In some embodiments, the computer system may compare the second knowledge graph to the first knowledge graph to determine whether the narrative path is approved. For example, the computer system may determine an overlap percentage for the narrative path. The overlap percentage may correspond to the percentage of nodes and/or edges of the first knowledge graph that are also found in the second knowledge graph. For example, the computer system may determine the number of nodes and edges found in the first knowledge graph and the number of nodes and edges found in the second knowledge graph. The computer system may then divide the number of nodes and edges in the second knowledge graph by the number of nodes and edges in the first knowledge graph to find the overlap percentage. The computer system may then compare the overlap percentage to an overlap threshold. If the overlap percentage exceeds the overlap threshold, the computer system may determine that the narrative path is approved. Otherwise, the computer system may reject the narrative path.

[0092] In some embodiments, the computer system may compare the number of connected components in the first knowledge graph to the number of connected components in the second knowledge graph. The computer system may determine the difference between the numbers of connected components in the two knowledge graphs. The difference may then be compared to a connected components threshold. If the difference exceeds the connected components threshold, the computer system may not approve the narrative path. In some embodiments, the percentage of connected components may be used instead of the difference. If the percentage of connected components is above 100%, indicating that the second knowledge graph has more connected components than the first knowledge graph, the computer system may reject the narrative path. This may be because, e.g., the higher number of connected components may mean that potentially important links (e.g., edges) are missing in the narrative path.

[0093] In some embodiments, the computer system may determine the percentage of the potentially important nodes from the book that are also included in the narrative path. The computer system may identify potentially important nodes from the first knowledge graph by comparing the number of edges that connect to each node to an important node threshold. If the number of edges connected to a particular node exceeds the important node threshold, the particular node may be a potentially important node. The computer system may then determine how many potentially important nodes are in the first knowledge graph. The computer system may then determine how many of those potentially important nodes are also present in the second knowledge graph. The computer system may determine the percentage of potentially important nodes for the proposed narrative path by comparing the number of potentially important nodes in the second knowledge graph to the number of potentially important nodes in the first knowledge graph. The computer system may then compare the percentage of potentially important nodes to a threshold. If the percentage of potentially important nodes exceeds the threshold, the computer system may determine that the proposed narrative path is approved at decision block 710. Otherwise, the computer system may reject the proposed narrative path.

[0094] In some embodiments, one or more of the preceding thresholds (such as the overlap threshold and the important node threshold) may be set by a user. In some embodiments, one or more of the preceding thresholds may be automatically determined by the computer system. If the computer system approves the narrative path at decision block 710, the method 700 may end. Otherwise, the method 700 may proceed to operation 712, where the computer system may generate a new narrative path for the target concept. The computer system may perform the methods 500 and 600 to generate the new narrative path. After generating the new narrative path at operation 712, the computer system may provide the new narrative path to the user at operation 714 and the method 700 may end. The computer system may provide the new narrative path to the user as discussed elsewhere herein, such as in reference to operation 514 of method 500. For example, the computer system may transmit the new narrative path to an e-reader or tablet.

[0095] In some embodiments, the computer system may notify the user that the proposed narrative path is not approved instead of generating a new narrative path. The computer system may then prompt the user to transmit a new proposed narrative path, which the computer system would then analyze. The computer system may also allow the user to choose between sending a new proposed narrative path or allowing the computer to generate its own narrative path.

[0096] As discussed in more detail herein, it is contemplated that some or all of the operations of some of the embodiments of methods described herein may be performed in alternative orders or may not be performed at all; furthermore, multiple operations may occur at the same time or as an internal part of a larger process.

[0097] The present invention may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.

[0098] The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.

[0099] Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers, and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.

[0100] Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the "C" programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.

[0101] Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.

[0102] These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.

[0103] The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.

[0104] The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.

[0105] The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the various embodiments. As used herein, the singular forms "a," "an," and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms "includes" and/or "including," when used in this specification, specify the presence of the stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. In the foregoing detailed description of exemplary embodiments of the various embodiments, reference was made to the accompanying drawings (where like numbers represent like elements), which form a part hereof, and in which is shown by way of illustration specific exemplary embodiments in which the various embodiments may be practiced. These embodiments were described in sufficient detail to enable those skilled in the art to practice the embodiments, but other embodiments may be used and logical, mechanical, electrical, and other changes may be made without departing from the scope of the various embodiments. In the foregoing description, numerous specific details were set forth to provide a thorough understanding the various embodiments. But, the various embodiments may be practiced without these specific details. In other instances, well-known circuits, structures, and techniques have not been shown in detail in order not to obscure embodiments.

[0106] Different instances of the word "embodiment" as used within this specification do not necessarily refer to the same embodiment, but they may. Any data and data structures illustrated or described herein are examples only, and in other embodiments, different amounts of data, types of data, fields, numbers and types of fields, field names, numbers and types of rows, records, entries, or organizations of data may be used. In addition, any data may be combined with logic, so that a separate data structure may not be necessary. The previous detailed description is, therefore, not to be taken in a limiting sense.

[0107] The descriptions of the various embodiments of the present disclosure have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.

[0108] Although the present invention has been described in terms of specific embodiments, it is anticipated that alterations and modification thereof will become apparent to the skilled in the art. Therefore, it is intended that the following claims be interpreted as covering all such alterations and modifications as fall within the true spirit and scope of the invention.

* * * * *

File A Patent Application

  • Protect your idea -- Don't let someone else file first. Learn more.

  • 3 Easy Steps -- Complete Form, application Review, and File. See our process.

  • Attorney Review -- Have your application reviewed by a Patent Attorney. See what's included.