User-centered AI knowledge base

Through the graph data structure and application-independent data format, the complexity problem of building and maintaining a user-centric artificial intelligence knowledge base in the existing technology is solved, and efficient storage and query interactions of multiple computer services are realized, improving the efficiency of user interactions. The interactive experience between the user and the computer.

CN111886608BActive Publication Date: 2024-12-31MICROSOFT TECHNOLOGY LICENSING LLC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN201980020630.6
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2018-03-22
Filing Date
2019-03-14
Publication Date
2024-12-31
Estimated Expiration
2039-03-14

AI Technical Summary

Technical Problem

The prior art is difficult to effectively build and maintain a user-centered AI knowledge base, especially when dealing with multiple different computer services interactions, and previous solutions are too complex and unsuitable to provide enhanced user-computer interactions.

Method used

Using graph data structures, including multiple application-specific constitutive graph structures, the subject graph nodes, object graph nodes and edges connecting them can realize user-centric fact storage and query, and support cross-multiple computer services. Data distribution and cross-reference, using application-independent data formats for easy storage and processing.

Benefits of technology

It realizes efficient storage and query user-centric facts, supports user interaction of multiple computer services, simplifies the construction and maintenance of knowledge bases, and improves the interactive experience between users and computers.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN111886608B_ABST
    Figure CN111886608B_ABST
Patent Text Reader

Abstract

A graph data structure for an artificial intelligence knowledge base includes a plurality of user-centric facts associated with a user. Each user-centric fact has an application-independent data format and includes a subject graph node, an object graph node, and an edge connecting the subject graph node to the object graph node. The graph data structure is designed to accommodate facts from different application-specific data providers using the same application-independent data format even when the different application-specific data providers use different inherent data formats.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] Artificial intelligence is an emerging field with almost unlimited applications. It is believed that as artificial intelligence technology advances, user-centric artificial intelligence applications will have great utility for individual computer users. The creation and maintenance of a robust artificial intelligence knowledge base has been a major constraint in providing useful artificial intelligence applications to individual computer users. Summary of the invention

[0002] This summary is provided to introduce a series of concepts in a simplified form, which are further described in the detailed description below. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. In addition, the claimed subject matter is not limited to implementations that address any or all of the shortcomings noted in any part of this disclosure.

[0003] A graph data structure for an artificial intelligence knowledge base includes a plurality of user-centric facts associated with a user. Each user-centric fact has an application-independent data format and includes a subject graph node, an object graph node, and an edge connecting the subject graph node to the object graph node. The graph data structure is designed to accommodate facts from different application-specific data providers using the same application-independent data format even when the different application-specific data providers use different inherent data formats. BRIEF DESCRIPTION OF THE DRAWINGS

[0004] Figure 1A-1B A simplified graph data structure comprising a small number of user-centric facts is shown.

[0005] Figure 2A-6B shows a focus on specific user-centric facts Figure 1A and Figure 1B The graph data structure of .

[0006] Figures 7A-9B Shows Figure 1A and Figure 1B The graph data structure focuses on the cross-references between multiple constituent graph structures included in the graph data structure.

[0007] Figures 10A-12B Shows Figure 1A and Figure 1B An exemplary implementation of a constituent graph structure of a graph data structure.

[0008] Fig.13 An exemplary computing environment for a user-centric artificial intelligence knowledge base is shown.

[0009] Fig.14 A method for maintaining a user-centric artificial intelligence knowledge base is shown.

[0010] Fig.15 A method for querying a user-centric artificial intelligence knowledge base is shown.

[0011] Fig.16 An exemplary computing system for maintaining and querying a user-centric artificial intelligence knowledge base is schematically illustrated. DETAILED DESCRIPTION

[0012] Computer services can enhance interaction with users by collecting and / or analyzing user-centric data. As used in this article, "computer services" broadly refer to any software and / or hardware process with which a user can interact directly or indirectly via interaction with another computer service, such as a software application, an interactive website, or a server implementing a communication protocol. As used in this article, "user-centric" broadly refers to any data (representing user interests, user relationships, and interactive facts and / or computer data structures of a user and a computer service) that is associated with or relates to a specific computer user.

[0013] User-centric data can be supplied as input to an artificial intelligence (AI) program, which can be configured to provide enhanced interaction between a user and a computer based on analysis of the supplied user-centric data. For example, providing enhanced interaction can include predicting an action that a user may take and facilitating the action. However, in order to meaningfully enhance the interaction between a user and a computer, the AI ​​program requires a very large amount of data. In addition, the data must be centrally available in an appropriate data format.

[0014] For example, the intelligent assistant program may include a natural language processing engine for processing natural language queries submitted by users (e.g., through a natural user interface (NUI) configured to receive audio and / or text natural language queries). In order to serve natural language queries, the intelligent assistant program requires a knowledge base of facts. In some embodiments, a "knowledge base" may include a collection of facts expressed as subject-predicate-object triples. The knowledge base can be generated using a combination of human-labeled data and data mining techniques to aggregate information from public sources such as the Internet. Previous schemes for building knowledge bases have imposed very large computational burdens (e.g., running data mining tasks for each of multiple different users) and / or extensive human design and supervision (e.g., manually labeled data) to achieve good results.

[0015] In this way, the previous scheme for building and maintaining a knowledge base may not be suitable for using AI to provide enhanced user interaction with a computer. On the contrary, the user-centric AI knowledge base as described in this article extends the concept of the knowledge base to support a collection of user-centric facts involving one or more specific users (e.g., individual computer users or a group of users of an enterprise computer network). The user-centric AI knowledge base may include user-centric facts (e.g., data providers associated with an intelligent assistant program and data providers associated with an address book program) derived from various different application-specific data providers. The user-centric AI knowledge base can distribute the storage of user-centric facts across multiple storage locations associated with different applications, thereby efficiently storing multiple user-centric facts. In addition, the user-centric AI knowledge base may include various application-independent enrichments made to user-centric facts, which can facilitate AI processing of the knowledge base, for example, answering queries.

[0016] A single user can interact with a plurality of different computer services, and each computer service can identify and store information about the user. A computer service can summarize the data related to the interaction with the user, and a plurality of different computer services can summarize a large amount of data about the user together. Each computer service in a plurality of computer services can store information about the user in different application-specific locations. "Application-specific" used in this article means that it is specific to any computer service. In addition, each computer service in a plurality of computer services may only identify and store a limited subset of possible information about the user, which is different from the information stored by the different computer services of a plurality of computer services. Like this, information about the user can be distributed across a plurality of different storage locations.

[0017] In addition, the application-specific data associated with the computer service can be stored in an application-specific storage format. In this way, even when two different computer services have related functions, the computer services may not be able to share data. In some cases, a third-party provider provides a set of related computer services (e.g., a document editing suite) that can share storage formats. However, even if the computer services within such a suite can share data with each other, utilizing the data to enhance interaction with the user can further depend on data from an external knowledge source, such as a global knowledge source (e.g., the Internet), third-party software applications provided by different third-party software providers, and / or other users' usage data (e.g., in the context of an enterprise software application, or in the context of a social network application).

[0018] Software providers may wish to automatically aggregate information from different sources in order to build a user-centric AI knowledge base to facilitate improved interactions with users. However, previous approaches to building AI knowledge bases have focused only on global data, rather than on user-centric data that may be particularly utilized in the context of interacting with a particular user. As such, previous approaches to building knowledge bases are not suitable for building user-centric AI knowledge bases for users of multiple computer services.

[0019] Figure 1A An exemplary graph data structure 100 for representing a collection of user-centric facts that may be associated with application-specific data distributed across multiple different computer services is shown. The graph data structure 100 allows centralized querying and is suitable for implementing a user-centric AI knowledge base.

[0020] The graph data structure 100 includes a plurality of different constituent graph structures 102, such as constituent graph A, constituent graph B, etc. Each constituent graph structure may be an application-specific constituent graph structure associated with a different computer service. For example, application-specific constituent graph structure A may be associated with a calendar planning program, while application-specific constituent graph structure B may be associated with an email program.

[0021] Each constituent graph structure includes a plurality of user-centric facts 104, for example, a user-centric fact F stored in a constituent graph A. A.1 、F A.2 etc., and the user-centric facts F stored in the constitutive graph B B.1 、F B.1 Etc. User-centric facts include subject graph nodes 106, object graph nodes 108, and edges 110 connecting subject graph nodes to object graph nodes. Subject graph nodes and object graph nodes may be generally referred to as nodes. A node may represent any noun, wherein "noun" is used to refer to any entity, event, or concept, or any suitable application-specific information (e.g., details of a previous action performed by a user using a computer service). Similarly, "subject noun" and "object noun" used in this article refer to nouns represented by a subject graph node or an object graph node, respectively. Representing a set of user-centric facts as a graph data structure may facilitate manipulation and traversal of the graph data structure (e.g., to respond to a query).

[0022] As in Figure 1B It is instructive to visualize the user-centric facts as shown in Figure 150. Figure 1BIn the graph 150 depicted in FIG, nodes 152 are depicted as solid circles, and edges 154 are depicted as arrows. Solid circles with outgoing edges (where the arrow points away from the solid circle) depict subject graph nodes, while solid circles with incoming edges (where the arrow points into the solid circle) depict object graph nodes. Multiple constituent graphs can be treated as a single graph by treating the edges between constituent graphs as edges in a larger graph. Therefore, Figure 1B A single combined graph 150 is shown that includes multiple constituent graph structures. To simplify the explanation, the exemplary graph 150 includes only two constituent graphs with twelve nodes. In actual implementations, the user-centric graph will include many more other nodes (e.g., hundreds, thousands, millions, or more) interspersed between many more constituent graphs.

[0023] Figure 2A-2B Depicted Figure 1A-1B A graph data structure that focuses on specific user-centric facts F A.1 . User-centric facts F A.1 quilt Figure 2A The thick rectangle in the figure is surrounded by Figure 2A Other user-centric facts of the graph data structure are not shown in detail in FIG. Similarly, in subsequent figures, bold shapes are used to draw attention to specific facts. User-centric facts F A.1 Including the subject graph node S A.1 , Edge E A.1 and object graph node O A.1 For example, the subject graph node S A.1 can represent the user's employer, and the object graph node O A.1 It can represent a task assigned to a user by his employer. A.1 It can be described in the subject graph node S A.1 and object graph node O A.1 Any appropriate relationship between them. In the above example, edge E A.1 It can represent the “new task assigned” relationship. User-centric facts F A.1 The subject-side-object triple of as a whole represents the fact that the user's employer assigns her a new task.

[0024] The subject graph node of a first fact can represent the same noun as the object graph node of a second, different fact. For example, Figure 3A-3B Shows Figures 1A-2B The same graph data structure of A.3 . User-centric facts F A.3 Define the subject graph node S A.3 , Edge E A.3 and object graph node O A.3. Object graph node O A.3 Can be expressed with Figure 2B The subject graph node S A.1 The same noun. Therefore, the graph data structure can be used to A.3 The object graph node O A.3 And the fact that A.1 The subject graph node S A.1 Identified as a single node, Figure 2B and Figure 3B 150. By recognizing that a particular object graph node and a subject graph node represent the same noun, the graph data structure may be able to represent user-centric facts as complex relationships between multiple different nouns, which can be visualized as paths on graph 150. For example, when a particular node is an object graph node for a first fact and a subject graph node for a second, different fact, it may be possible to derive an inference from the combination of the two facts, similar to a logical syllogism.

[0025] A subject graph node of a first user-centric fact may represent the same noun as a subject graph node of a second different user-centric fact. When two different subject graph nodes represent the same noun, the graph data structure may identify the two subject graph nodes as a single node. For example, Figures 4A-4B Shows Figures 1A-3B The same graph data structure of A.4 . User-centric facts F A.4 Define the subject graph node S A.4 , Edge E A.4 and object graph node O A.4 . Subject graph node S A.4 Can be expressed with Figure 3B The subject graph node S A.3 The graph data structure can therefore identify two subject graph nodes as a single node, which Figure 3B and Figure 4B 150 is shown in the same position. Although the subject graph node S A.4 and S A.3 Identified as a single node, but edge E A.4 With edge E A.3 Different, and similarly, the object graph node O A.4 and object graph node O A.3 Therefore, even if the subject graph node S A.4 and S A.3 It means the same noun, but the triple (S A.4 ,E A.4 ,O A.4 ) and (S A.3 ,EA.3 ,O A.3 ) represent two different facts.

[0026] Similarly, an object graph node of a first user-centric fact may represent the same noun as an object graph node of a second, different user-centric fact. In other words, the same noun may be the object of multiple different user-centric facts that have different subject graph nodes and may have edges representing different relationship types. For example, Figure 5A-5B Shows Figures 1A-4B The same graph data structure of A.5 . User-centric facts F A.5 Define the subject graph node S A.5 , Edge E A.5 and object graph node O A.5 . Object graph node O A.5 Can be expressed with Figure 2B The object graph node O A.1 The graph data structure can therefore identify two object graph nodes as a single node, which Figure 2B and Figure 5B 150 is shown in the same position.

[0027] A specific pair of subject nouns and object nouns may be involved in two or more different user-centric facts. For example, the subject nouns and object nouns may be represented by a subject graph node S A.5 , Edge E A.5 and object graph node O A.5 The first user-centric fact F A.5 At the same time, as in Figure 6A-6B As depicted in the figure, the subject graph node S A.6 can represent the same subject noun, object graph node O A.6 It can also express the same object noun, as in Figure 6B S A.6 and O A.6 The location and Figure 5B S A.5 and O A.5 Therefore, it is possible to pass through the first side E A.5 The subject graph node S A.5 Connect to object graph node O A.5 , and can be reached via a second different edge E A.6 The subject graph node S A.6 Connect to object graph node O A.6 . Like the subject graph node and the object graph node, Figure 6B The edge E A.6Depicted with Figure 5B The edge E A.5 same position. However, side E A.5 and E A.6 are different edges, for example, representing different relationships between subject graph nodes and object graph nodes. In this example, the subject graph node S A.5 and S A.6 Can correspond to the first user account (e.g., identified by an email address). In the same example, the object graph node O A.5 and O A.6 May correspond to a second different user account. In the example, edge E A.5 can represent the “send email to” relationship, and the edge E A.6 represents a different "schedule a meeting" relationship. Thus, the graph data structure includes two or more user-centric facts with the same subject and object nouns.

[0028] In other examples, two nouns may be involved in two different user-centric facts, but the roles between subject and object are exchanged. In other words, the first noun is the subject noun of the first fact and the second noun is the object noun of the first fact, while the first noun is the object noun of the second fact and the second noun is the subject noun of the second fact. For example, a pair of nouns representing "Alice" and "Bob" may be involved in the first fact expressing "Alice arranged a meeting with Bob", and this pair of nouns is also involved in the second fact expressing "Bob arranged a meeting with Alice". In addition to exchanging the roles of subject and object, two facts using two nouns can also have different types of edges, for example, "Alice" and "Bob" may be additionally involved in the third fact expressing "Bob sent an email to Alice".

[0029] As described above and as in Figure 1A , 2A , 3A, 4A, 5A and 6A, the graph data structure includes a plurality of application-specific constituent graph structures (eg, corresponding to different computer services). For example, Figure 7A-7B Shows Figure 1A-6B The same graph data structure of F, focusing on two different user-centric facts F A.6 and F B.1 . User-centric facts F A.6 The subject graph node S A.6 , Edge E A.6 and object graph node O A.6 is positioned as part of the constitutive graph structure A. Similarly, the user-centric fact F B.1 The subject graph node S B.1, Edge E B.1 and object graph node O B.1 Positioned as part of the constitutive graph structure B.

[0030] The graph data structure may identify a noun from one constituent graph and a noun from a different constituent graph as a single node. For example, Figures 8A-8B Shows Figure 1A-7B The same graph data structure of B.3 . User-centric facts F B.3 Define the subject graph node S B.3 , Edge E B.3 and object graph node O B.3 . Object graph node O B.3 Can be expressed with Figure 2B The object graph node O A.1 , Figure 5B The object graph node O A.5 , Figure 7B The object graph node O A.5 and Figure 8B The object graph node O B.3 The graph data structure can therefore identify the four object graph nodes as a single node, which Figure 2B , 5B , 7B and 8B are shown in the same position in Figure 150. It should be noted that the object graph node O B.3 In the constitutive graph structure B, the object graph node O A.1 , O A.5 and O A.5 In a constituent graph structure A. In this document, such identification that two or more nodes correspond to the same noun may be referred to as a "node cross-reference" between two nodes. A subject graph node or an object graph node representing a particular noun may store a node cross-reference to other nodes of the same constituent graph structure or any other constituent graph structure.

[0031] Similarly, a user-centric fact in a first constituent graph structure may define a subject graph node in the first constituent graph structure together with an edge (referred to herein as a "cross-reference edge") pointing to an object graph node in a second, different constituent graph structure. For example, Figures 9A-9B Shows Figures 1A-8B The same graph data structure of A.2 . User-centric facts F A.2 Including the subject graph node S A.2 and edge E AB.2 However, the side E AB.2 Points to object graph node O B.2Instead of pointing to different object graph nodes in the constitutive graph structure A. Edge E AB.2 Connections between constituent graphs may be indicated in any suitable manner, such as by storing constituent graph identifiers indicating connections to object graph nodes in constituent graph B and object graph node identifiers indicating specific object graph nodes in constituent graph B.

[0032] Node cross-references and cross-reference edges connect multiple constituent graph structures. For example, node cross-references and cross-reference edges can be traversed in the same manner as edges, allowing traversal of the graph data structure to traverse paths across multiple constituent graph structures. In other words, the graph data structure 100 promotes a comprehensive artificial intelligence knowledge base that includes facts from different computer services and / or facts across different computer services. Node cross-references and cross-reference edges can be collectively referred to as cross-references in this article. Similarly, when a cross-reference within multiple constituent graph structures involves a node, the node can be referred to as being cross-referenced across a constituent graph structure.

[0033] In addition, in addition to connecting two different constituent graph structures via cross-references, the constituent graph structure may also include one or more user-centric facts relating to the subject graph node in the constituent graph structure and an object graph node in an external knowledge base (e.g., an enterprise software application based on the Internet, a social network, or a network). As in the case of a cross-reference edge, for example, by storing a pair of identifiers indicating an external graph and an object graph node within the external graph, an outgoing edge connected to a subject graph node may indicate a connection to an external object graph node by any appropriate means. In some cases, the external graph may not store any user-centric data, for example, when the external graph is a global knowledge base derived from published knowledge on the Internet.

[0034] By including cross-references between constituent graph structures, facts about a particular noun (e.g., an event or entity) can be distributed across multiple constituent graph structures while still supporting centralized reasoning about relationships between user-centric facts in different constituent graph structures and in external databases (e.g., by traversing multiple constituent graph structures via cross-references and cross-reference edges).

[0035] Each user-centric fact can be stored in a predictable shared data format that stores user-centric facts including application-specific facts associated with a computer service without changing the format of the application-specific data of the computer service. Such a predictable shared data format is referred to as an "application-independent data format" in this article. The application-independent data format can store the information required to query the user-centric AI knowledge base while avoiding redundant storage of application-specific data. The graph data structure can be implemented using a complementary application programming interface (API) that allows read and write access to the graph data structure. The API can restrict access to the graph data structure to ensure that all data written to the graph data structure is in an application-independent data format. At the same time, the API can provide a mechanism that any computer service can use to add new user-centric facts to the graph data structure in an application-independent data format, thereby ensuring that all data stored within the graph data structure can be used predictably by other computer services using the API. In addition to providing read / write access to user-centric facts stored in the graph data structure, the API can also provide data processing operations including both read and write, such as query operations and caching of query results.

[0036] A graph data structure including user-centric facts involving multiple different computer services can be implemented in various ways, such as Figure 1A The graph data structure 100 may be modified without departing from the subject matter of the present disclosure. Fig. 10A One such non-limiting embodiment of a node-centric data structure 200 is schematically illustrated, comprising a node record for each noun. Each node record represents one or more subject and / or object graph nodes associated with the noun. When a node record represents a subject graph node, the node record additionally represents outgoing edges connecting the subject graph node to one or more object graph nodes. For example, Fig. 10A Two node records are shown, i.e., the complete representation Figure 1A-9B The data structure of all nodes required multiple node records node record NR A

[42] and node record NR A

[43] The above describes a more general graph data structure 100 to broadly introduce the features of a user-centric multi-service AI knowledge base. In practice, a more efficient data storage method, such as a node-centric data structure 200, can be used to implement the general features introduced above.

[0037] The node-centric data structure 200 stores each node of the constituent graph structure at a node record storage location defined by a consistent node record identifier associated with the node. The node record identifier may be a numeric and / or textual identifier, a reference to a computer storage location (e.g., an address in a computer memory or a file name on a computer disk), or any other suitable identifier (e.g., a uniform resource locator (URL)). For example, a node record NR A

[42] The node record NR may be identified by a node record identifier “A

[42] ” that includes a node field identifier “A” that identifies the node record as part of a constituent graph structure A and includes an additional numeric identifier 42. Thus, the graph data structure may store a node record NR at a node record storage location defined by the identifier “A

[42] ”. A

[42] For example, the graph data structure may store a node record NR in row #42 of a database table associated with the constituent graph structure A. A

[42] It should be noted that the bracket nomenclature, e.g., A

[42] , is illustrative and is used to emphasize that the specific implementation of the node data structure 200 is different while the node-centric data structure 200 ultimately defines the same node / graph as a more general graph data structure 100. However, the graph data structure described herein may be implemented using any suitable nomenclature.

[0038] exist Fig. 10A In the example, the node records NR A

[42] The subject graph node S representing the more general graph data structure 100 A.3 and S A.4 , and the node records NR A

[43] The subject graph node S representing the more general graph data structure 100 A.7 and S A.8 and object graph node O A.4 Therefore, in Fig. 10B In, respectively Figure 3B and Figure 4B The subject graph node S A.3 and S A.4 Draw the node record NR at the same position in the diagram A

[42] . Return to Fig. 10A , node record NR A

[42] is extended to show the subject graph node S in an application-independent data format A.3 and S A.4In an example, the user-centric facts stored in the graph data structure are application-specific facts. In addition to the application-specific facts, the user-centric facts may also include one or more mechanisms, wherein enrichment is additional data including application-independent facts associated with the application-specific facts.

[0039] The application-independent data format for user-centric facts allows efficient storage of application-specific facts in addition to the application-independent representation of connections in the graph data structure. A.3 The subject may represent an application-specific fact (e.g., the fact that a new meeting is scheduled). Therefore, the graph data structure stores facet pointers for application-specific facts, which indicate auxiliary application-specific data associated with the application-specific fact. In the example, the facet pointer P A

[42] Is the instruction with S A.3 An identifier (e.g., a numeric identifier) ​​of the storage location of the associated auxiliary application-specific data, such as the storage location of a calendar entry representing details of a meeting. A

[42] A face pointer may be associated with a particular type of data (e.g., calendar data) based on its inclusion in an application-specific graph structure A, because the application-specific graph structure A is associated with calendar planning software. In other examples, a face pointer may include additional identification information that identifies the type of the specified auxiliary application-specific data, so that a face pointer may be used to represent different kinds of auxiliary application-specific data (e.g., multiple file types that can be used by a word processing application). The graph data structure may be used to locate auxiliary application-specific data via a face pointer while avoiding redundant storage of the auxiliary application-specific data within the graph data structure.

[0040] In addition to the face pointers stored in the subject graph nodes, application-specific facts are represented by edges connecting the subject graph node to one or more object graph nodes. Although a single subject graph node may be included in more than one user-centric fact, the graph data structure 200 efficiently stores only a single node record for the subject graph node. The node record includes a list of all outgoing edges for the node, which can reduce storage space requirements compared to storing a copy of the subject graph node for each user-centric fact in which it occurs. The list of outgoing edges can be empty for some nodes, for example, for nouns that are only object graph nodes. The list of outgoing edges for a subject graph node includes one or more edge records that define one or more edges. The one or more edges can be stored in an edge record, such as an ER graph node. A

[261] and ER A

[375] .although Fig. 10A A node record is shown with two outgoing edges, but a node record may include any number of edges to suitably represent relationships with other nodes of the graph data structure, eg, zero, one, or three or more edges.

[0041] An edge from a subject graph node to an object graph node specifies a node record NR A

[42] The object graph node record identifier associated with the object graph node ID "A

[55] " of the object graph node. The object graph node record identifier is a node record that indicates a definition of an object graph node, such as NR A

[55] The edge can further specify the object domain identifier of the constitutive graph structure storing the object graph node, for example, indicating NR A

[55] The node record NR stored in the constitutive graph structure A A

[42] The object domain ID is "A". Therefore, Fig. 10B Shows the recorded ER A

[261] and ER A

[375] The edge connected to the node record NR A

[55] and NR A

[21] The node record NR of the node represented by A

[42] . Return to Fig. 10A , an edge from a subject graph node to an object graph node (e.g., as represented in an edge record) can further specify the type of relationship between the subject graph node and the object graph node. A

[261] Define the relationship type R A

[261] , which may indicate a "schedule a meeting" relationship, while the edge records the ER A

[375] Define the relationship type R A

[375] , which may indicate a "make a promise" relationship.

[0042] In addition to representing application-specific facts via face pointers and lists of outgoing edges, the subject graph nodes may also represent one or more enrichments of application-specific facts. In an example, the one or more enrichments include a node confidence value, e.g., a node record NR A

[42] The node confidence C A

[42] Node confidence C A

[42] Can instruct the node to record C A

[42] (and the subject graph nodes it represents) to the user. For example, the confidence value can be determined by a machine learning model trained to recognize relevance to the user by learning to distinguish labeled samples of relevant data from labeled samples of irrelevant data. For example, training the machine learning model can include supervised training and / or unsupervised training using user-labeled samples (e.g., derived from direct user feedback during application). Fig. 10AIn the example, the node records NR A

[42] The node confidence C A

[42] Can be compared to the node record NR A

[55] A higher value of the node confidence CA

[55] indicates that the node record NR is believed to be A

[42] NR than node record A

[55] More relevant to users.

[0043] exist Fig. 10A In the example shown in , one or more enrichments also include edge confidence values ​​associated with each edge, such as the edge record ER A

[261] The edge confidence K A

[261] Like node confidence values, edge confidence values ​​can indicate whether a particular edge (e.g., ER A

[261] ) is relevant to the user. Different edges between a pair of nodes can have different confidence values. For example, an edge indicating the “schedule a meeting” relationship records ER A

[261] Can have an edge record ER than indicates "make a commitment" A

[375] The edge confidence K A

[375] Lower confidence K A

[261] , for example, if it is believed that a scheduled meeting is more relevant to the user than a commitment.

[0044] In addition to node confidence values ​​and edge confidence values, one or more enrichments of application-specific facts may also include other application-independent and / or application-specific data. A

[42] Includes access metadata M A

[42] , which indicates the access node record NR A

[42] The associated information and the associated application-specific data (eg, represented by the face pointer P A

[42] Access metadata M A

[42] A timestamp indicating the time and date of the most recent access, a delta value indicating changes resulting from the most recent access, or any other suitable metadata may be included.

[0045] The graph data structure may additionally store one or more tags for user-centric facts, which define auxiliary data associated with the user-centric facts. A

[42] Also includes label T A

[42] , which may include any other appropriate auxiliary data associated with the node. A

[42] When representing a person (e.g., associated with a contact book entry), the tag T A

[42] You can include a nickname for the person and an alternate email address for the person.

[0046] The extra semantics stored in the label can be utilized to enrich the user-centric facts and the nodes / edges of the user-centric facts. For example, labels can be used to store one or more enrichments of user-centric facts. The labels stored in the node records can be associated with the user-centric facts that the node records represent subject graph nodes or the node records represent object graph nodes. Alternatively or additionally, the labels stored in the node records can be associated with the node records themselves (for example, associated with the subject graph nodes represented by the node records and / or with the object graph nodes represented by the node records), or associated with one or more edges connected to the node records. In other examples, labels can be used to store the metadata of user-centric facts (for example, to replace or supplement the access metadata of user-centric facts). For example, when user-centric facts are associated with timestamps, timestamps can be optionally stored between the labels of user-centric facts.

[0047] In some examples, one or more tags may be calendar tags, and the graph data structure is configured to allow discovery of user-centric facts by searching among searchable tags (e.g., searching for tags storing search strings or searching for tags storing multiple types of data).

[0048] The graph data structure may be represented as a plurality of application-specific constituent graph structures, wherein nodes of the constituent graph structures are cross-referenced between the constituent graph structures (e.g., via cross-reference edges and node cross-references, as described above with reference to Figures 8A-9B described). Fig.11A Shows Fig. 10A Another exemplary view of the same node-centric data structure 200 shown in FIG. 2 focuses on representing the subject graph node S A.7 , S A.8 and object graph node O A.4 Node NR A

[43] . From NR A

[43] The list of outgoing edges includes an edge record ER indicating the object graph node ID "A

[61] " A

[213] , representing nodes in the same constitutive graph structure A. From NR A

[43] The list of outgoing edges also includes an edge record ER indicating the object domain ID "B" and the object graph node ID "B

[61] ". A

[435] , represents a node in the constitutive graph structure B. Therefore, the edge records ER A

[435] is a cross-reference edge. Fig. 11B Diagrammatically depicts the Figure 1A-9B The same graph data structure, including NR A

[43] And its direction to NR A

[61] and NR B

[25] The outgoing side.

[0049] Fig. 12A Shown in Fig. 10A Another exemplary view of the node-centric data structure 200 is shown, focusing on the node O representing the object graph. A.1 , O A.5 , O A.6 and O A.7 Node NR A

[67] It should be noted that from the node NR A

[67] The list of outgoing edges of is empty because NR A

[67] represents only object graph nodes, which have only inbound edges. A

[67] Also includes the identification of the graph data structure O A.1 , O A.5 , O A.6 and O A.7 Represents O with a constitutive graph structure B B.3 Therefore, the cross-reference specifies the reference domain ID "E" indicating the constituent graph structure B and the cross-reference node O. B.3 A node record NR stored in another node-centric data structure representing the constituent graph structure B B

[76] The reference node ID in is “B

[76] ”. Fig. 12B Diagrammatically depicting the Figure 1A-9B The same graph data structure as shown in . Note that the node records NR A

[67] Depicted with Figure 5B and Figure 6B The object graph node O A.5 and O A.6 The same location, which is also Figure 8B The object graph node O A.5 Same location.

[0050] The node-centric data structure 200 is application-independent because it can be used to track facts from two or more potentially unrelated computer services that may have different inherent data formats. The node-centric data structure 200 can store application-specific facts for any computer service by storing face pointers so that user-centric facts can include application-specific facts even when application-specific facts can be stored in an application-specific format. In addition, the node-centric data structure 200 stores cross-references in the form of domain identifiers (e.g., object domain identifiers in the outgoing edge list of each subject graph node, or reference domain identifiers in the representation of node cross-references) and node identifiers (e.g., object graph node identifiers and reference node identifiers), so that user-centric facts defined in the context of two or more computer services can be represented. In addition, the node-centric data structure 200 is user-centric because different node-centric data structures 200 can be defined for each user. The node-centric data structure 200 can be suitable for storing user-centric facts in the context of multiple different users interacting with a shared computer service (e.g., a web browser). Because the node-centric data structure 200 stores application-specific facts via facet pointers and represents relationships to facts in other data structures via cross-references, user-centric facts about a user can be stored in the user-specific user-centric graph data structure without requiring write access to application-specific data of a shared computer service.

[0051] Fig.13An exemplary computing environment 1300 for maintaining a user-centric AI knowledge base is shown. The computing environment 1300 includes a graph storage machine 1301 that is communicatively coupled to multiple application-specific data provider computers (e.g., application-specific data provider computers 1321, 1322, and 1329, etc.) via a network 1310. The graph storage machine 1301 and the multiple application-specific data provider computers are further communicatively coupled to one or more user computers of the user (e.g., user computer 1340 and user computer 1341) via the network 1310. For example, user computer 1340 may be a user's desktop computer, and user computer 1341 may be a user's mobile computing device. Network 1310 may be any appropriate computer network (e.g., the Internet). The graph storage machine 1301 may be implemented as a single machine (e.g., a computer server). Alternatively, the functionality of the graph storage machine 1301 may be distributed across multiple different physical devices (e.g., by implementing the graph storage machine 1301 as a virtual service provided by a computer cluster). Each application-specific data provider computer (e.g., application-specific data provider computer 1321) can be associated with one or more computer services used by a user, such as a social networking application, an email application, a calendar planner application, an office suite, an Internet of Things appliance function, a web search application, etc.

[0052] When a user interacts with one or more computer services via user computer 1340 and / or user computer 1341, the application-specific data provider computer can aggregate information related to the user's interaction with one or more computer services. In an example where a user interacts with a social networking application, the application-specific data provider computer 132 can be communicatively coupled to a server that provides the functionality of the social networking application. Thus, when a user interacts with the social networking application, the server can provide an indication of the interaction to the application-specific data provider computer 1322. In turn, the application-specific data provider computer 1322 can provide one or more user-centric facts to the graph storage machine 1301. In an example, the user computer 1340 can execute one or more applications that can provide additional user-centric facts aggregated at the user computer 1340 to the graph storage machine 1301, causing the user computer 1340 to act as an additional user-centric fact provider. In an example, the user computer 1340 can execute one or more applications that can request user-centric facts from the graph storage machine 1301 by, for example, sending a query. While the above examples include a user interacting with one or more computer services via user computer 1340, in other examples, the user may interact with one or more computer services via user computer 1341 instead of or in addition to user computer 1340. For example, when user computer 1340 acts as an application-specific data provider by providing one or more facts to graph storage machine 1301, user computer 1341 may execute one or more applications to request user-centric facts from graph storage machine 1301. In this way, graph storage machine 1301 may aggregate user-centric facts from multiple different user computers of a user while also allowing each of the different user computers to request and utilize user-centric facts.

[0053] In the example, the user computer 1340 may execute an intelligent assistant program configured to communicate with the graph storage machine 1301 via the network 1310. The intelligent assistant program may receive queries from the user via a NUI configured to receive audio and / or text natural language queries. The intelligent assistant program may send one or more queries to the storage machine 1301 to receive one or more user-centric facts in response to the queries. Alternatively or in addition, the intelligent assistant program may aggregate user-centric facts (e.g., user interests indicated in a conversation via the NUI) to enable the user computer 1340 to act as an application-specific data provider. In some cases, the graph storage machine 1301 and the application-specific data provider may be managed by a single entity or organization, in which case the application-specific data provider may be referred to as a "first party" application-specific data provider. In other cases, the graph storage machine 1301 and the application-specific data provider may be managed by different entities or organizations, in which case the application-specific data provider may be referred to as a "third party" application-specific data provider.

[0054] Fig.14 An exemplary method 1400 for maintaining a user-centric artificial intelligence knowledge base is shown. The user-centric AI knowledge base may be suitable for storing user-centric facts about a user interacting with multiple different, possibly unrelated computer services. In addition, the user-centric AI knowledge base may not be able to be used to answer queries about user-centric facts. Maintaining the user-centric AI knowledge base includes building a knowledge base by storing one or more user-centric facts, updating the user-centric AI knowledge base by adding additional facts, and updating the user-centric AI knowledge base when queried and used (e.g., to store cached answers to queries so that queries can be quickly answered next).

[0055] At 1401, method 1400 includes maintaining a graph data structure including a plurality of user-centric facts associated with a user. Each user-centric fact may have an application-independent data format, for example, including a subject graph node, an object graph node, and an edge connecting the subject graph node to the object graph node. The graph data structure may be represented as a plurality of application-specific constituent graph structures, wherein nodes of the constituent graph structures are cross-referenced across the constituent graph structures. The graph data structure may be stored using any suitable application-independent data format, such as the one described above with reference to FIG. Figures 10A-12B A node-centric data structure 200 is described.

[0056] At 1402, method 1400 optionally includes automatically sending a request to an application-specific data provider to provide user-centric facts. The request may be sent to the application-specific data provider in any suitable manner, for example, via an API of the application-specific data provider over a computer network. The request may indicate that specific user-centric facts should be provided (e.g., user-centric facts from a specific time and / or date range, user-centric facts that have not yet been provided by the application-specific data provider, and / or user-centric facts with specific associated tags). Alternatively, the request may indicate that all available user-centric facts should be provided. Sending a request to an application-specific data provider and receiving user-centric facts in response to the request may be referred to herein as "pulling" data from the application-specific data provider. Additional user-centric facts may be requested periodically, for example, according to any suitable arrangement. In addition to providing additional user-centric facts in response to a request, an application-specific data provider of multiple application-specific data providers may send user-centric facts without a request to do so, which may be referred to herein as "pushing" user-centric facts to a user-centric AI knowledge base.

[0057] At 1403, method 1400 includes receiving a first user-centric fact from a first application-specific data provider associated with a first computer service (e.g., due to pulling data from the application-specific data provider, or due to pushing user-centric facts to a user-centric AI knowledge base by the application-specific data provider). As described at 1404, user-centric facts, such as the first user-centric fact, may be received via an API that constrains the storage format of the user-centric facts to an application-independent data format. For example, the API may constrain the storage format to use a specific data storage format, such as an implementation of the node record format described above. In addition, the API may constrain maximum disk usage of the stored data and / or require that the data be stored in an encrypted data format.

[0058] At 1405, method 1400 includes adding a first user-centric fact to the graph data structure in an application-independent data format. For example, adding the first user-centric fact to the graph data structure may include converting the first user-centric fact into the above-referenced Figures 10A-12BThe node record format described herein and storing the resulting node record at a storage location associated with a node record identifier of the node record. The first user-centric fact may be an application-specific fact. Thus, at 1406, the graph data structure may store a face pointer indicating auxiliary application-specific data associated with the application-specific fact, as described above in conjunction with Figures 10A-12B as described.

[0059] At 1406, the graph data structure optionally may store application-independent enrichments, e.g., application-independent facts associated with application-specific facts. The enrichments may be included in the user-centric facts when received from the application-specific data provider. Alternatively or in addition, the user-centric facts provided by the application-specific data provider may be pre-processed to include one or more enrichments via an enrichment pipeline including one or more enrichment adapters. When the graph data structure stores labels associated with the user-centric facts (e.g., labels stored in node records), one or more enrichments may be included between the labels.

[0060] In an example, the enrichment adapter includes a machine learning model configured to receive application-specific facts to identify the relevance of application-specific facts to a user, and output a confidence value indicating the relevance in a numerical manner. The machine learning model can be any appropriate model, such as a statistical model or a neural network. For example, the machine learning model can be trained based on user feedback. For example, when the machine learning model is a neural network, the output of the neural network can be evaluated via an objective function, which indicates the error level of the predicted relevance output by the neural network, compared with the actual relevance indicated in the user feedback. The gradient of the objective function can be calculated using a backpropagation algorithm according to the derivative of each function in each layer of the neural network. Therefore, the weights of the neural network can be adjusted based on the gradient (e.g., via gradient descent) to minimize the error level indicated by the objective function. In some examples, the machine learning model can be trained for a specific user based on direct feedback provided when the user interacts with the software application (e.g., indicating the relevance of search results in a search application). Therefore, the trained machine learning model may be able to estimate the relevance to the user. In other examples, the machine learning model can be trained based on indirect feedback from the user, for example, by estimating the similarity of the relevant content to other content that the user has indicated as relevant in the past.

[0061] In another example, the enrichment adapter includes a natural language program for identifying natural language features of application-specific facts. For example, the natural language program can determine a subject graph node and / or an object graph node for an application-specific fact by identifying that the natural language feature is associated with an existing subject and / or object graph node. In other examples, the natural language program can determine a relationship type for an edge of an application-specific fact. In other examples, the natural language program can determine one or more labels for a subject graph node and / or an object graph node for an application-specific fact. The natural language program can be configured to recognize features including: 1) named entities (e.g., people, organizations, and / or objects), 2) intent (e.g., a feeling or goal associated with a natural language feature), 3) events and tasks (e.g., a task that a user intends to do later), 4) subject (e.g., a subject contained or represented by a user-centric fact), 5) location (e.g., a geographic location referenced by a user-centric fact or a place where a user-centric fact occurs), and / or 6) date and time (e.g., a timestamp indicating a past event or a future scheduled event associated with a user-centric fact).

[0062] The enrichments associated with the user-centric facts may provide enriched semantics of the user-centric facts (e.g., additional meaningful information, information beyond that provided by the connection structure formed by the edges between the subject graph nodes and the object graph nodes of the user-centric facts). The graph data structure may identify and include additional user-centric facts that may be derived from the enriched semantics (e.g., based on one or more enrichments added in the enrichment pipeline). Thus, adding a user-centric fact including one or more enrichments may also include identifying additional user-centric facts based on the one or more enrichments, and adding the additional user-centric facts to the graph data structure in an application-independent data format.

[0063] Identifying additional user-centric facts based on one or more enrichments may include: identifying that an enrichment in the one or more enrichments corresponds to another user-centric fact already included in the graph data structure (for example, because the enrichment is associated with a subject noun or an object noun of other user-centric facts). Alternatively or in addition, identifying additional user-centric facts based on one or more enrichments may include: identifying a first enrichment in the one or more enrichments that is associated with a subject noun that is not yet involved in any user-centric fact, identifying that a second enrichment of the one or more enrichments is associated with an object noun, identifying a relationship between the subject noun and the object noun, and adding a new user-centric fact involving the object noun and the subject noun to the graph data structure. In other examples, identifying additional user-centric facts based on one or more enrichments includes: identifying any appropriate relationship between one or more enrichments, and adding a user-centric fact representing the identified relationship.

[0064] In an example, a first node and a second node both include enrichments that specify an identified named entity, wherein both enrichments specify the same named entity. Thus, the graph data structure may store an edge connecting the first node to the second node, and the relationship type of the edge may indicate that the two nodes are inferred to be associated with the same entity. Alternatively or additionally, the graph data structure may store a node cross-reference in each node, indicating that another node is associated with the same named entity. Alternatively, the graph data structure may modify the first node to include data for the second node and delete the second node, thereby avoiding redundant storage of data for the second node by collapsing the representation to include a single node rather than two nodes.

[0065] In another example, a first node includes an enrichment of a specified named entity, and an edge connecting the first node to a second node representing the same named entity can be added. In another example, an edge can be added between a first node and a second node having the same associated topic. In another example, an edge can be added between a first node and a second node having the same associated time and / or location. For example, an edge can be added between a first node that references a specific calendar date (e.g., in a tag) and a second node created at the specific calendar date (e.g., indicated by access metadata). In another example, an edge can be added between two nodes created at the same location or that reference the same location.

[0066] At 1407, adding user-centric facts to the graph data structure in an application-independent data format optionally includes storing the user-centric facts as encrypted user-centric facts, wherein access to the encrypted user-centric facts is constrained by credentials. For example, the credentials may be user account credentials associated with the user, and the encrypted user-centric facts may only be read by the holder of the user account credentials. In another example, the credentials may be enterprise account credentials associated with a user in an enterprise computer network, and the encrypted user-centric facts may only be read by the holder of the enterprise account credentials and one or more administrators of the enterprise computer network. User-centric facts received from an application-specific data provider may be received as encrypted user-centric facts encrypted using the credentials. If so, the encrypted user-centric facts may be stored in the same encrypted form using the same credentials without decrypting and re-encrypting the encrypted user-centric facts. In addition, the encrypted user-centric facts may be encrypted using a homomorphic encryption scheme, in which case the encrypted user-centric facts may be modified (e.g., to add enrichment) without decrypting and re-encrypting the encrypted user-centric facts, followed by storing the modified encrypted user-centric facts. Alternatively, the user-centric facts received from an application-specific data provider may be encrypted using different credentials, in which case the received user-centric facts may be decrypted and re-encrypted using the credentials, followed by storing the resulting re-encrypted user-centric facts. Alternatively, the user-centric facts received from the application-specific data provider may not be encrypted, in which case the received user-centric facts may be encrypted using the credentials, followed by storing the resulting encrypted user-centric facts.

[0067] In addition to storing user-centric facts as encrypted user-centric facts, the graph data structure can also provide additional privacy and security by clearing the graph data structure in response to a clear trigger to redact one or more user-centric facts. For example, the clear trigger can be a user command to redact one or more encrypted user-centric facts. The user command can indicate specific user-centric facts (e.g., user-centric facts in response to a specific query, or user-centric facts from a specific range of times / dates). Alternatively or in addition, the user command can indicate that the entire user-centric AI knowledge base should be redacted. In another example, the clear trigger can be an automatically scheduled trigger, such as occurring periodically, or once in the future at a specific scheduled time.

[0068] At 1408, method 1400 includes receiving a second user-centric fact from a second application-specific data provider associated with a second computer service different from the first computer service. The second user-centric fact can be received in any suitable manner (e.g., as described above in connection with receiving the first user-centric fact).

[0069] At 1409, method 1400 includes adding a second user-centric fact to the graph data structure in an application-independent data format. The second user-centric fact may be added to the graph data structure in any suitable manner (e.g., as described above in conjunction with adding the first user-centric fact to the graph data structure). The application-independent data format may facilitate a user-centric AI knowledge base with improved utility (e.g., in answering user queries) compared to a knowledge base that includes only user-centric facts derived from a single computer service. Although the first user-centric fact and the second user-centric fact may be received from two different computer services, the two different computer services may have different incompatible inherent data formats, but the first user-centric fact and the second user-centric fact may be stored in the same application-independent data format. In addition, although the above example includes user-centric facts from two different computer services, there is no limit to the number of different computer services that may contribute to the knowledge base. In addition, different computer services are not required to be related to each other or to the user-centric AI knowledge base in any particular manner (e.g., different computer services and user-centric AI knowledge bases may be unrelated to each other and provided by different computer service providers). Thus, the user-centric AI knowledge base can include user-centric facts derived from multiple different computer services, thereby including more user-centric facts from more different contexts. In addition, cross-references between application-specific constituent graph structures enable user-centric facts to express relationships between various aspects of different computer services, which can further improve practicality compared to maintaining multiple different independent knowledge bases without cross-references.

[0070] In some cases, the second user-centric fact may have the same subject noun as the first user-centric fact already stored in the graph data structure, but have different object nouns and edges than those of the first user-centric fact. Thus, adding the second user-centric fact may include identifying that the second user-centric fact has the same subject noun as the first user-centric fact, and modifying the node record representing the first user-centric fact to include a new edge record, the new edge record representing a new outgoing edge from the subject noun of the second user-centric fact to the object noun. Thus, the node record may initially represent the first user-centric fact, and the node record may subsequently be updated to additionally represent the second user-centric fact.

[0071] At 1410, method 1400 optionally includes outputting a subset of user-centric facts included in the graph data structure in response to the query, wherein the subset of user-centric facts is selected to satisfy a set of constraints defined by the query. Responding to the query can be accomplished in any suitable manner, such as according to Fig.15 The method 1500 is completed.

[0072] Fig.15 An exemplary method 1500 for responding to a query is shown. The query defines a set of constraints that can be satisfied by a subset of user-centric facts in a user-centric AI knowledge base. The constraints can include any suitable features of the subject graph nodes, object graph nodes, and edges that define the user-centric facts, such as any of the following: 1) the type of subject and / or object graph nodes included in the user-centric facts (e.g., the subject graph nodes represent people); 2) the identity of the subject and / or object graph nodes included in the user-centric facts (e.g., the object graph nodes represent specific email messages); 3) the type of edges connecting subject graph nodes and object graph nodes; 4) confidence values ​​of subject graph nodes, object graph nodes, and / or edges; 5) the range of dates and / or times of the day associated with subject graph nodes, object graph nodes, and / or edges; and / or 6) any other features of subject graph nodes, object graph nodes, and / or edges, such as access metadata and / or tags of subject graph nodes. The answer to the query includes a subset of user-centric facts that satisfy the set of constraints, or an indication that the set of constraints cannot be satisfied.

[0073] The query may be received in any suitable manner. For example, the query may be received via a query API that allows the client to programmatically define the set of constraints in a computer-readable query format. Alternatively, the query may be received as a natural language query and converted into a set of constraints by identifying the constraints using natural language processing techniques. For example, the user-centric AI knowledge base may be able to train a semantic embedding model to represent the natural language query and the set of constraints as points within a latent space learned by the semantic embedding model, so as to convert the natural language query into a set of constraints by identifying points in the latent space corresponding to the natural language query and outputting a set of constraints corresponding to the points in the latent space. Alternatively or additionally, the user-centric AI knowledge base may be able to use a syntactic analysis model (e.g., dependency syntactic analysis) to match the syntactic structure of the natural language query with reference to the template query, and fill in the details of the template query using the details of the natural language query to specify a set of constraints.

[0074] At 1501, method 1500 includes identifying a query that was previously served as a cached query, and outputting a cached response to serve the cached query by answering it with the same subset of user-centric facts that satisfied the cached query when the query was previously received. Thus, at 1507, method 1500 includes outputting the previously cached subset of user-centric facts. Such a cache can efficiently (e.g., immediately) retrieve the cached response when the cached query is received again in the future.

[0075] If the query has not been served, then at 1502, method 1500 includes selecting a subset of the user-centric facts that satisfy the set of constraints defined by the query. The set of constraints can be satisfied by traversing the graph data structure to find user-centric facts that at least partially satisfy the constraints. The graph data structure represents structured relationships between user-centric facts (e.g., two facts with the same subject noun can be represented by a single node record that is cross-referenced within and between constituent graphs). In this way, it may be more efficient to traverse the graph data structure to find user-centric facts that satisfy the query than to exhaustively search a set of user-centric facts. For example, if a user has frequently interacted with a particular other person, the frequent interactions may indicate that the other person may be related to the user. Therefore, there may be more user-centric facts with the person as a subject or object, and when traversing the edges of the graph data structure, it may be more likely to encounter a node representing the other person because many edges point to and come from nodes representing the other person.

[0076] Traversing the graph data structure may include a "random walk" along the edges of the graph data structure. The random walk may begin at a current user context, which is used herein to refer to any suitable starting point for answering a query. In an example, the current user context may be defined by a query (e.g., by including a context keyword that indicates a subject graph node to use as a starting point). In other examples, the current user context may be an application-specific context suitable for determining a subject graph node to use as a starting point (e.g., "replying to an email").

[0077] When a node is encountered during the random walk (e.g., at the starting point), the node can be checked to determine whether it satisfies the constraints of the query. If it satisfies the constraints, it can be output in a subset of user-centric facts in response to the query. Then, after encountering the node, the random walk can continue, thereby encountering more nodes. In order to find more nodes, the random walk can continue along the outgoing edges of the encountered nodes. Determining whether to continue along the outgoing edge can be a weighted random determination, including evaluating the weight representing the possibility along the edge, and determining whether to follow the edge based on the weight and random data sampling, for example, a "roulette wheel selection" algorithm implemented using a random value generator. The weight of the edge connecting the subject graph node to the object graph node can be determined based on the confidence value of the subject graph node, edge and / or object graph node. In the example, the confidence value can be interpreted as an indication of the relevance to the user, thereby being more likely to follow more relevant nodes or connect more relevant nodes. The weight of the edge can be further determined based on other data of the subject graph nodes, object graph nodes, and edges, for example, by evaluating the relevance of the edge to the query based on a natural language comparison of the edge type with one or more natural language features of the query.

[0078] By specifying constraints (e.g., characteristics of subject graph nodes, object graph nodes, and edges that define user-centric facts), a user may be able to formulate a variety of queries to be answered using the user-centric AI knowledge base.

[0079] In addition to selecting a subset of user-centric facts that satisfy the constraints specified in the query, the user-centric AI knowledge base may also be able to respond to other specialized queries. Fig.15 Two exemplary specialized queries are shown: a slice query and a ranking query.

[0080] In the example, at 1504, the query is a slice query indicating a starting node and a distance parameter. The answer to the slice query is a subset of user-centric facts, the subset including user-centric facts reached by starting at the starting node and traversing the edges of the graph data structure to form a path of length at most equal to the distance parameter from the starting node. For example, if the distance parameter is set to 1, the answer to the query will include the starting node and all nodes directly connected to the starting node removed once; and if the distance parameter is set to 2, the answer to the query will include the starting node, all nodes removed once, and all nodes removed twice directly connected to at least one of the nodes removed once. The slice query can represent a set of user-centric facts that may be related to a specific user-centric fact of interest (e.g., user-centric facts involving the starting node) by being connected to the starting node by a path of at most the length of the distance parameter. By setting a small distance parameter, the answer to the query can represent a relatively small set of facts closely related to the starting node; similarly, by setting a large distance parameter, the answer can represent a large set of facts indirectly related to the starting node. As an alternative to specifying a starting node, a query may also use the current user context as a starting node, thereby representing a set of user-centric facts relevant to the user's current context.

[0081] In another example, at 1505, the query is a ranking query to rank only a plurality of user-centric facts based at least on a confidence value associated with each user-centric fact, and to rank a subset of the user-centric facts in order according to the confidence value of each user-centric fact. A ranking query can be interpreted as collecting user-centric facts that may be relevant to a user without imposing additional specific constraints on the query. In addition to ranking a plurality of user-centric facts based on confidence values, a plurality of user-centric facts can also be ranked based on other features. For example, if a user-centric fact is more recent in time (e.g., based on a timestamp associated with each fact), the user-centric fact can be weighted as more relevant. In another example, a ranking query can include a keyword, and if a user-centric fact includes at least one node with the keyword in its label, the user-centric fact can be weighted as more relevant.

[0082] although Fig.15 Depicted are two examples of specialized queries, but the user-centric AI knowledge base enables Fig.15. For example, a subset of user-centric facts responsive to a slice query may be additionally ranked by confidence value, as in a ranking query, thereby combining the functionality of both queries. In another example, the query is a pivot query that indicates a starting node. The answer to the pivot query is a subset of user-centric facts, the subset comprising user-centric facts reached by starting at the starting node and traversing the edges of the graph data structure to form a path of unbounded (or arbitrary, large) length. A pivot query may be interpreted as a slice query that does not bound the length of the path reached by the starting node, e.g., where a distance parameter is infinite. In other examples, the answer to the query may include visualizing an answer subset of user-centric facts as a graph graph (e.g., as in Figure 2A ), which can be annotated or animated to include any appropriate information about the user-centric fact (e.g., auxiliary application-specific data indicated by a face pointer to a node included in one of the user-centric facts).

[0083] A query may define a time constraint, thereby limiting a subset of user-centric facts output in response to the query to user-centric facts associated with a timestamp indicating a time within a range defined by the query. In some examples, time is an inherent property of nodes and edges in a graph data structure (e.g., each of a plurality of user-centric facts included in the graph data structure is associated with one or more timestamps). One or more timestamps associated with a node or edge may indicate a time when a user-centric fact was created, accessed, and / or modified (e.g., access metadata of a node included in the user-centric fact). Alternatively or in addition, the one or more timestamps may indicate a time referenced in a user-centric fact (e.g., a time when a meeting was scheduled or any other timestamp added by an enrichment adapter in an enrichment pipeline). The one or more timestamps may optionally be stored as searchable tags.

[0084] Answering a query may include traversing the graph data structure based on the one or more timestamps associated with each user-centric fact, which may be referred to herein as a traversal of the time dimension of the graph data structure. For example, answering a query may include starting at a node associated with a time defined by the query and traversing the graph by following edges with timestamps indicating later times, such that the timestamps increase in the same order as the traversal. In other examples, answering a query may include traversing the graph data structure by following any edges whose timestamps precede the date defined by the query. In addition, the inherent temporal properties of each node and edge in the graph data structure may enable a timeline view of the graph data structure. In an example, an answer to a query may include a timeline view of the graph data structure, for example, user-centric facts arranged in chronological order by the timestamps associated with each user-centric fact.

[0085] As another example of specialized queries, the graph structure can be configured to allow searching for user-centric facts based on searchable tags stored by the graph data structure for the user-centric facts. Searching for user-centric facts based on searchable tags can include traversing the graph in any suitable manner (e.g., as described above in conjunction with slice queries or pivot queries), and while traversing the graph, outputting any user-centric facts encountered during the traversal for which the graph structure stores searchable tags.

[0086] After selecting a subset of user-centric facts responsive to a query, the subset of user-centric facts may be cached to enable immediate future responses to the same query. Thus, at 1506, method 1500 optionally includes caching the query as a cached query, and caching the subset of user-centric facts responsive to the query as a cached response. Then, at 1507, method 1500 includes outputting the subset of user-centric facts responsive to the query, which may include directly outputting the selected subset of user-centric facts, or after caching the selected subset of user-centric facts, outputting the resulting cached subset of user-centric facts.

[0087] When the graph data structure includes encrypted user-centric facts, the graph data structure can be filtered to generate a filtered graph data structure, which excludes one or more encrypted user-centric facts and includes other user-centric facts without revealing the excluded one or more encrypted user-centric facts. For example, the encrypted user-centric facts to be excluded can be selected by the user (e.g., by selecting encrypted user-centric facts in response to a query, or by selecting encrypted user-centric facts from a specific time / date range). The filtered graph data structure can still be used to answer the query, but no encrypted user-centric facts are included in the answer. The filtered graph data structure omits the excluded user-centric facts without indicating the absence of the excluded user-centric facts in any way. For example, the answer will not indicate the presence of one or more encrypted user-centric facts but that they are redacted. Instead, the answer will only omit one or more encrypted user-centric facts, while possibly including other user-centric facts.

[0088] In some embodiments, the methods and processes described herein may be incorporated into a computing system of one or more computing devices. Specifically, such methods and processes may be implemented as a computer application or service, an application programming interface (API), a library, and / or other computer program products.

[0089] Fig.16 A non-limiting embodiment of a computing system 1600 capable of compiling one or more of the methods and processes described above is schematically illustrated. For example, the computing system 1600 may act as a graph storage machine 1301, an application-specific data provider computer 1321, or a user computer 1340. The computing system 1600 is illustrated in simplified form. The computing system 1600 may take the form of one or more personal computers, server computers, tablet computers, home entertainment computers, network computing devices, gaming devices, mobile computing devices, mobile communication devices (e.g., smart phones), and / or other computing devices.

[0090] The computing system 1600 includes a logic machine 1601 and a storage machine 1602. The computing system 1600 may optionally include a display subsystem 1603, an input subsystem 1604, a communication subsystem 1605, and / or Fig.16 Other components not shown.

[0091] The logic machine 1601 includes one or more physical devices configured to execute instructions. For example, the logic machine may be configured to execute instructions that are part of one or more applications, services, programs, routines, libraries, objects, components, data structures, or other logical constructs. Such instructions may be implemented to perform a task, implement a data type, transform the state of one or more components, achieve a technical effect, or otherwise achieve a desired result.

[0092] The logic machine may include one or more processors configured to execute software instructions. Additionally or alternatively, the logic machine may include one or more hardware or firmware logic machines configured to execute hardware or firmware instructions. The processor of the logic machine may be single-core or multi-core, and the instructions executed thereon may be configured for sequential, parallel and / or distributed processing. Optionally, individual components of the logic machine may be distributed between two or more independent devices, which may be remotely located and / or configured for coordinated processing. Aspects of the logic machine may be virtualized and executed by a remotely accessible networked computing device configured in a cloud computing configuration.

[0093] Storage machine 1602 includes one or more physical devices configured to store instructions that can be executed by a logic machine to implement the methods and processes described herein. When implementing such methods and processes, the state of storage machine 1602 can be transformed - for example, to store different data.

[0094] The storage machine 1602 may include removable and / or built-in devices. The storage machine 1602 may include optical storage (e.g., CD, DVD, HD-DVD, Blu-ray disc, etc.), semiconductor storage (e.g., RAM, EPROM, EEPROM, etc.), and / or magnetic storage (e.g., hard disk drive, floppy disk drive, tape drive, MRAM, etc.), etc. The storage machine 1602 may include volatile, non-volatile, dynamic, static, read / write, read-only, random access, sequential access, location addressable, file addressable, and / or content addressable devices.

[0095] Although storage machine 1602 includes one or more physical devices, aspects of the instructions described herein may alternatively be propagated by a communication medium (eg, electromagnetic signals, optical signals, etc.) that is not maintained by physical means for a finite duration.

[0096] Aspects of the logic machine 1601 and the storage machine 1602 may be integrated together into one or more hardware logic components. For example, such hardware logic components may include field programmable gate arrays (FPGAs), program specific and application specific integrated circuits (PASIC / ASIC), program and application specific standard products (PSSP / ASSP), systems on chips (SOCs), and complex programmable logic devices (CPLDs).

[0097] The terms "module", "program", and "engine" may be used to describe an aspect of a computing system 1600 that is implemented to perform a particular function. In some cases, a module, program, or engine may be instantiated via a logic machine 1601 that executes instructions stored by a storage machine 1602. It should be understood that different modules, programs, and / or engines may be instantiated from the same application, service, code block, object, library, routine, API, function, etc. Similarly, the same module, program, and / or engine may be instantiated by different applications, services, code blocks, objects, routines, APIs, functions, etc. The terms "module", "program", and "engine" may cover individuals or groups of executable files, data files, libraries, drivers, scripts, database records, and the like.

[0098] When included, display subsystem 1603 can be used to present a visual representation of the data stored by storage machine 1602. This visual representation can take the form of a graphical user interface (GUI). The methods and processes described in this article change the data stored by the storage machine, and thereby transform the state of the storage machine, and the state of display subsystem 1603 can be similarly transformed to visually present the changes in the underlying data. Display subsystem 1603 may include one or more display devices utilizing almost any type of technology. Such a display device can be combined with a logical machine 1601 and / or storage machine 1602 in a shared shell, or such a display device can be a peripheral display device.

[0099] When included, the input subsystem 1604 may include or interface with one or more user input devices, such as a keyboard, mouse, touch screen, or game controller. In some embodiments, the input subsystem may include or interface with selected natural user input (NUI) components. Such components may be integrated or peripheral, and conversion and / or processing of input actions may be handled on-board or off-board. Example NUI components may include microphones for voice and / or sound recognition; infrared, color, stereo, and / or depth cameras for machine vision and / or gesture recognition; head trackers, eye trackers, accelerometers, and / or gyroscopes for motion detection and / or intent recognition; and electric field sensing components for assessing brain activity.

[0100] When included, the communication subsystem 1605 can be configured to communicatively couple the computing system to one or more other computing systems 1600. The communication subsystem 1605 can include wired and / or wireless communication devices compatible with one or more different communication protocols. As non-limiting examples, the communication subsystem can be configured to communicate via a wireless telephone network or a wired or wireless local area network or wide area network. In some embodiments, the communication subsystem can allow the computing system 1600 to send and / or receive messages to and / or from other devices via a network such as the Internet.

[0101] In an example, a method for maintaining a user-centric artificial intelligence knowledge base includes: maintaining a graph data structure including multiple user-centric facts associated with a user, each user-centric fact having an application-independent data format and including a subject graph node, an object graph node, and an edge connecting the subject graph node to the object graph node; receiving a first user-centric fact from a first application-specific data provider associated with a first computer service; adding the first user-centric fact to the graph data structure in an application-independent data format; receiving a second user-centric fact from a second application-specific data provider associated with a second computer service different from the first computer service; and adding the second user-centric fact to the graph data structure in an application-independent data format. In this example or any other example, the graph data structure is represented as multiple application-specific constituent graph structures, and the nodes of the constituent graph structures are cross-referenced between the constituent graph structures. In this example or any other example, the graph data structure stores each node of the constituent graph structure at a node record storage location defined by a consistent node record identifier associated with the node. In this example or any other example, an edge from a subject graph node to an object graph node specifies an object graph node record identifier associated with the object graph node and an object domain identifier of a constituent graph structure storing the object graph node. In this example or any other example, an edge from a subject graph node to an object graph node specifies a relationship type between a subject graph node and an object graph node. In this example or any other example, the graph data structure stores one or more searchable tags for user-centric facts, and the searchable tags define auxiliary data associated with user-centric facts. In this example or any other example, the user-centric facts stored in the graph data structure are application-specific facts, and the graph data structure stores enrichments for application-specific facts, the enrichments including application-independent facts associated with the application-specific facts. In this example or any other example, the method also includes identifying additional user-centric facts based on the enrichments, and adding the additional user-centric facts to the graph data structure in an application-independent data format. In this example or any other example, the user-centric facts stored in the graph data structure are application-specific facts, and the graph data structure stores facet pointers for the application-specific facts, the facet pointers indicating auxiliary application-specific data associated with the application-specific facts. In this example or any other example, the method further includes: outputting a subset of the user-centric facts included in the graph data structure in response to a query, wherein the subset of user-centric facts is selected to comply with a set of constraints defined by the query.In this example or any other example, the method further includes: caching the query as a cached query, and caching a subset of user-centric facts responsive to the query as a cached response. In this example or any other example, the query is a slice query indicating a starting node and a distance parameter, and wherein the subset of user-centric facts includes user-centric facts reached by starting at the starting node and traversing a number of edges at most equal to the distance parameter from the starting node. In this example or any other example, the query is a ranking query to rank only a plurality of user-centric facts based at least on a confidence value associated with each user-centric fact, and only a subset of user-centric facts is ranked in order according to the confidence value of each user-centric fact. In this example or any other example, one or more user-centric facts of the plurality of user-centric facts are associated with one or more timestamps. In this example or any other example, adding user-centric facts to the graph data structure in an application-independent data format includes storing the user-centric facts as encrypted user-centric facts, wherein access to the encrypted user-centric facts is subject to credentials. In this example or any other example, the method also includes filtering the graph data structure to generate a filtered graph data structure, wherein the filtered graph data structure excludes one or more encrypted user-centric facts and includes other user-centric facts without revealing the excluded one or more encrypted user-centric facts. In this example or any other example, the method also includes: clearing the graph data structure in response to a clear trigger to redact one or more user-centric facts. In this example or any other example, a first user-centric fact is received via an application programming interface, and the application programming interface constrains the storage format of the user-centric fact in the graph data structure to an application-independent data format.

[0102] In an example, a method for maintaining a user-centric artificial intelligence knowledge base includes: maintaining a graph data structure including a plurality of user-centric facts, each user-centric fact having a subject graph node, an object graph node, and an edge connecting the subject graph node to the object graph node, wherein the graph data structure tracks each node using an application-independent node record having a node record identifier, and wherein the node record for the subject graph node includes an outgoing edge list connecting the subject graph node to one or more object graph nodes; receiving a first user-centric fact from a first application-specific data provider associated with a first computer service, the first user-centric fact having There is a first subject, a first object, and a first edge; adding a first node record having a first node record identifier corresponding to the first subject to a graph data structure, the first node record including a first edge record specifying a first object graph node record identifier associated with the first object; receiving a second user-centric fact from a second application-specific data provider associated with a second computer service different from the first computer service, the second user-centric fact having the first subject, a second object different from the first object, and a second edge different from the first edge; and modifying the first edge record to include a second edge record specifying a second object graph node record identifier associated with the second object.

[0103] In an example, a graph storage computer includes: a logic machine; and a storage machine configured to store instructions, wherein the instructions can be executed by the logic machine to: maintain a graph data structure including multiple user-centric facts associated with a user, each user-centric fact having an application-independent data format and including a subject graph node, an object graph node, and an edge connecting the subject graph node to the object graph node; receive a first user-centric fact from a first application-specific data provider associated with a first computer service via an application programming interface that constrains the storage format of the first user-centric fact in the graph data structure to an application-independent data format; add the first user-centric fact to the graph data structure in the application-independent data format; receive a second user-centric fact from a second application-specific data provider associated with a second computer service different from the first computer service via an application programming interface; and add the second user-centric fact to the graph data structure in the application-independent data format.

[0104] It should be understood that the configuration and / or method described in this article is exemplary in nature, and these specific embodiments or examples should not be considered in a restrictive sense, because there are many variations that are possible. The specific routine or method described in this article can represent one or more of any number of processing strategies. In this way, each action of the diagram and / or description can be performed in parallel or omitted in the order shown and / or described, in other orders. Similarly, the order of the above process can be changed.

[0105] The subject matter of the present disclosure includes all novel and nonobvious combinations and sub-combinations of the various processes, systems and configurations, and other features, functions, acts, and / or properties disclosed herein, and any and all equivalents thereof.

Claims

1. A method for providing a user-centric artificial intelligence knowledge base, comprising: Generating a graph data structure, wherein the graph data structure is generated based on a plurality of user-centric facts about the user, each user-centric fact having an application-independent data format and comprising a subject graph node, an object graph node, and an edge connecting the subject graph node to the object graph node, and a plurality of facet pointers, wherein the plurality of facet pointers point to auxiliary application-specific data, wherein the auxiliary application-specific data is associated with application-specific facts in an application-specific context in which the user interacts with a computer service, wherein generating the graph data structure further comprises: receiving a first user-centric fact about the user from a first application-specific data provider associated with a first computer service; adding the first user-centric fact and a first set of one or more facet pointers to the graph data structure in the application-independent data format; receiving second user-centric facts about the user from a second application-specific data provider associated with a second computer service different from the first computer service; and adding the second user-centric fact and a second set of one or more facet pointers to the graph data structure in the application-independent data format; and Based on the graph data structure and in response to a first query, transmitting a first subset of user-centric facts associated with the user and corresponding ancillary application-specific data to a user device associated with an application-specific context of the first computer service; and Based on the graph data structure and in response to a second query, a second subset of user-centric facts associated with the user and corresponding ancillary application-specific data are transmitted to a user device associated with an application-specific context of the second computer service.

2. The method according to claim 1, wherein: The graph data structure is represented as a plurality of application-specific constituent graph structures, and wherein nodes of the constituent graph structures are cross-referenced between the constituent graph structures.

3. The method according to claim 2, wherein: The graph data structure stores each node constituting the graph structure at a node record storage location defined by a consistent node record identifier associated with the node.

4. The method according to claim 2, wherein: An edge from a subject graph node to an object graph node specifies an object graph node record identifier associated with the object graph node and an object domain identifier storing a constituent graph structure of the object graph node.

5. The method according to claim 1, wherein: An edge from a subject graph node to an object graph node specifies the type of relationship between the subject graph node and the object graph node.

6. The method according to claim 1, wherein: The graph data structure stores one or more searchable tags for a user-centric fact, the searchable tags defining auxiliary data associated with the user-centric fact.

7. The method according to claim 1, wherein: The user-centric facts stored in the graph data structure are application-specific facts, and the graph data structure stores enrichments for the application-specific facts, the enrichments comprising application-independent facts associated with the application-specific facts.

8. The method according to claim 7, further comprising: Additional user-centric facts are identified based on the enrichment, and the additional user-centric facts are added to the graph data structure in the application-independent data format.

9. The method according to claim 1, wherein: The user-centric facts stored in the graph data structure are application-specific facts, and the graph data structure stores facet pointers for the application-specific facts, the facet pointers indicating auxiliary application-specific data associated with the application-specific facts.

10. The method according to claim 1, further comprising: A subset of user-centric facts included in the graph data structure is output in response to a query, wherein the subset of user-centric facts is selected to satisfy a set of constraints defined by the query.

11. The method according to claim 10, wherein: The query is a slice query indicating a starting node and a distance parameter, and wherein the subset of user-centric facts includes user-centric facts reached by starting at the starting node and traversing a number of edges at most equal to the distance parameter from the starting node.

12. The method according to claim 10, wherein: The query is a ranking query to rank the plurality of user-centric facts based at least on a confidence value associated with each user-centric fact, and to rank the subset of user-centric facts in order according to the confidence value of each user-centric fact.

13. The method according to claim 1, wherein: Adding user-centric facts to the graph data structure in the application-independent data format includes storing the user-centric facts as encrypted user-centric facts, wherein access to the encrypted user-centric facts is constrained by credentials.

14. The method according to claim 13, further comprising: The graph data structure is filtered to create a filtered graph data structure that excludes one or more encrypted user-centric facts and includes other user-centric facts without revealing the excluded one or more encrypted user-centric facts.

15. The method according to claim 1, wherein: The first user-centric fact is received via an application programming interface, the application programming interface constraining a storage format of the user-centric fact in the graph data structure to be the application-independent data format.

Citation Information

Patent Citations

  • Access control for data resources

    CN107466403A

  • Activity Stream Tuning Using Multichannel Communication Analysis

    US20130297689A1