Recommended safety content
By pre-generating and pruning insights collections based on access control, the problem of access control changes affecting insight presentation in content sharing environments is solved, and efficient content recommendations are provided while respecting access rights.
Patent Information
- Application Number
- CN201980032976.8
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2018-05-17
- Filing Date
- 2019-05-06
- Publication Date
- 2024-12-17
- Estimated Expiration
- 2039-05-06
AI Technical Summary
In content sharing environments, prior art is difficult to effectively provide insights about content while respecting access control policies, especially when access rights of content may affect user-acquisition insights and content.
By pre-creating a set of insights for multiple user content combinations, each set contains content fragments that the user has permission to access, and prunes insights based on the access control mechanism when receiving queries, outputting only indications of relevant content fragments that the target user allows access.
It realizes providing content suggestions while respecting access rights, improves the efficiency and user experience of the system, and avoids insight presentation problems caused by changes in access control.
Smart Images

Figure CN112136121B_ABST
Abstract
Description
Background Art
[0001] Today, many examples of communication services can be implemented on packet-switched networks such as the Internet, thereby providing different ways to share content on the network. Examples of such services include social networks, document sharing services, and online collaborative workspaces. In some cases, multiple such services can also be linked together. For example, a given software publisher can link various content creation applications (e.g., word processing applications, spreadsheet applications, email clients, etc.) with online capabilities to a set of applications accessed through a single account and / or front end. As another example, a user can be provided with the option of linking accounts of services from different service providers together, for example, linking his / her application suite with a social network account, thereby allowing content to be shared with each other.
[0002] In such a system, it is useful to provide the user with automatic suggestions of content that he / she may be interested in. For example, if the user is viewing or writing a first document, the user may be automatically provided with suggestions of one or more other documents containing similar content, or suggestions of other documents that have also been viewed by other users viewing the first document. For example, these suggestions may be provided in the form of screen summaries associated with the currently viewed document. Such a facility increases the usefulness of the communication system by helping to surface more relevant content more quickly.
[0003] These recommendations may be implemented in the form of "insights." An insight for a given content segment includes data specifying one or more other related content segments, and information indicating the nature of their relationship. When the insights are output to a user through a user interface, the user is provided with an indication of at least one of the related content segments (e.g., in the form of a file name, link, or preview), and an indication of their relationship (e.g., in the form of a text description). For example, when a user views document X, a message of the following form may be displayed to the user: "Because N users who viewed document X also viewed document Y, it is recommended that you view document Y." This can help prevent the recommendation from appearing "creepy" to the user. It can also help automatically comply with data protection requirements, giving users the right to know how to obtain information about them.
[0004] In a content sharing environment, it is often necessary to establish access control mechanisms to limit which users can view which content. Summary of the invention
[0005] Many current information retrieval and productivity systems rely on analyzing content to generate insights about what content may be relevant to a user and why. The generation of such insights occurs prior to consumption, which is a problem if the data upon which the generated insights are based is under access control. If access to a particular piece of content is revoked, this may impact which insights and content are provided to the user. The present disclosure provides a means to efficiently provide insights about content while respecting changing access control policies of the underlying content.
[0006] According to one aspect disclosed herein, a computer-implemented method for sharing content on a network is provided, wherein at least some of the content is subject to access control restrictions that restrict which users are allowed to access the content. The method includes: pre-generating a corresponding set of multiple insights for each corresponding user content combination in a plurality of user content combinations, each user content combination including a different corresponding combination of a first user in a plurality of first users and a content fragment in a plurality of first content fragments that the user has access to. Each insight specifies a relationship type and one or more other related content fragments that have the specified relationship type with the corresponding first content fragment. After the pre-generation, the method includes: receiving a query for seeking insights on target content in the first content fragment accessed by a target user in the first users; and identifying a corresponding set of pre-generated insights for the target user and target content combination based on the received query. After the querying and the identifying, the method also includes: pruning one or more insights from the identified set of insights to retain a remaining subset of insights, wherein the pruning includes: pruning away at least those insights that do not specify the related content fragments that the target user is allowed to access. After said pruning, the method includes outputting at least one of the remaining subsets of insights to the target user via a user interface, including outputting at least the specified relationships and indications of the only corresponding relevant content segments that the target user is allowed to access.
[0007] This summary is provided to introduce in simplified form a selection of concepts that will be further described in the detailed description below. This summary is not intended to identify key features or essential features of the present invention, nor is it intended to limit the scope of protection of the present invention. In addition, the present invention is not limited to solving any or all of the disadvantages stated herein. BRIEF DESCRIPTION OF THE DRAWINGS
[0008] To aid understanding of the present disclosure and to show how the embodiments may be effected, reference is made, by way of example only, to the accompanying drawings, in which:
[0009] Figure 1 A schematic diagram of a communication system.
[0010] Figure 2 is a schematic block diagram showing more details of the communication system,
[0011] Figure 3 is a schematic representation of the insight index, and
[0012] Figure 4 is another schematic representation of the insight index. DETAILED DESCRIPTION
[0013] Figure 1 According to the embodiments disclosed herein, an exemplary communication system 100 implemented on a network 101 is shown. The communication system 100 includes a plurality of user terminals 102, each of which is associated with at least one corresponding user 103. Each user terminal 102 may take any suitable form, such as a desktop computer, a laptop computer, a tablet device, a smart phone, or a wearable smart device (e.g., a smart watch or smart glasses). In addition, different user terminals 102 of different users 103 do not all have to take the same form. The communication system 100 also includes one or more servers 104. The server herein refers to a logical entity that provides a given service, and may include one or more physical server units located in one or more geographical locations. Where necessary, distributed or "cloud" computing technology itself is known in the art. Each of the user terminals 102 and the server 104 is connected to a packet switching network 101, which may include, for example, a wide area network (e.g., the Internet), a mobile cellular network such as a 3GPP network, a wired local area network (LAN) such as Ethernet, or a wireless LAN (e.g., Wi-Fi, Thread, or 6LoWPAN network). In an embodiment, network 101 may include multiple such networks (e.g., the Internet plus one or more LANs and / or cellular networks through which one or more of user terminals 102 are connected to the Internet). Each of user terminal 102 and server 104 may be connected to network 101 via any suitable network interface (not shown) incorporated into the respective terminal or unit, such as a wired modem connected via a PSTM connection or an Ethernet connection, or a wireless modem connected via a wireless connection such as a Wi-Fi, thread, or 6LoWPAN connection.
[0014] Each server is arranged to host a corresponding service application 106 that provides a corresponding service through the network 101. For example, one of these services may include an application suite that includes a set of content creation applications with online functions (e.g., a word processing application, a spreadsheet application, a slide display application, and / or an email application), each of which has the ability to store content created by users 103 on the server 104 and share these contents with other users 103 through the network 101. As another example, these services may include communication services, such as VoIP services, instant messaging services, file transfer services, screen sharing services, or unified communication services including any combination of two or more of these. Such services enable users 103 to communicate with each other through the network 101 and again share content with each other (e.g., by dragging and dropping files into a chat window to be shared, or displaying files, documents, or screen sharing of one of the users 103 for viewing by other users 103). As another example, these services may include social networking services, which also enable users to share content with each other in one or more of a variety of possible forms (e.g., text messages, pictures, videos, and / or sound clips). As another example, these services may include document sharing or file sharing services. As another example, these services may include collaborative workspace services, such as enabling multiple users 103 to work on the same document stored on server 104, and / or use one or more collaborative tools (e.g., virtual whiteboards).
[0015] Each user terminal 102 is installed with a corresponding instance of a communication client application 105. The client application 105 can be a dedicated client application dedicated to a specific service among these services, for example, a dedicated front-end application for an application suite, or a communication client such as a VoIP client, an IM client, or a VoIP client with other integrated UC functions (e.g., IM and / or file sharing). Alternatively, the client application 105 can be a general-purpose client application (e.g., a web browser). Different terminals 102 can also use a mixture of dedicated and general-purpose applications.
[0016] The server 104 is operated by the provider of the communication service in question and is arranged to host the corresponding service application 106. Each instance of the client 105 is installed on a respective user terminal 102 and is arranged to run on the respective user terminal 102 and is configured to run so as to provide the ability to access the respective services provided by the service application 106 on one or more of the servers 104 via the network 101 and the respective network interfaces of the terminal 102 and the server 104.
[0017] Go to Figure 2, the communication system 100 includes a plurality of components in the form of an application front end 202, an insight engine 204, an analytics engine 206, an insight index 208, and an access control mechanism 210. The insight engine 204 is operably coupled to the application front end 202, the insight index 208, and the access control mechanism 210. The analytics engine 210 is operably coupled to the application front end 202 and the insight index 208.
[0018] The application front end 202 is configured to enable the user 103 to access one, more or all of the services provided by the service application 106 on the server 104 from the user's corresponding user terminal 102 via the corresponding client application 103 and the network 101. The application front end 202 enables this access by providing a user interface (e.g., a graphical user interface) for the service, which the user 103 can operate through the client 105 running on his / her user terminal 102. Access to the service includes the ability to access multiple content fragments such as documents (e.g., which contain text), still images, videos, or audio recordings. The access may include viewing the content or editing it. The access may include enabling a given user 103a to access content fragments shared via the service by one or more other users 103b, c, ... from client applications 105b, c, ... running on respective user terminals 102b, c, ... from a client 105a running on his / her user terminal 102a.
[0019] The access control mechanism 210 is configured to set which users have the right to access which content segments. Through the access control mechanism 210, the user who is the owner of a given content can set the permission of the content segment to set the permission that other users can access or cannot access the content in question. The user 103 can access the access control mechanism 210 via the application front end 202 and the client running on his / her user terminal 102 to set the permission for his / her content. The provider of a given content segment can be the author of the content or the publisher of the content (publishing in the current context does not necessarily mean that it is open to all the public or is provided free of charge or unconditionally). For ease of explanation, the owner of a specific content segment is the user who has the right to set the permission settings of the content. Usually, the owner is also a provider, but not necessarily. A given content segment may have one or more owners.
[0020] The analysis engine 206 is configured to determine relationships between content segments and record them in an insight index 208. The insight index is configured to look up insights in the insight index in order to provide suggestions to the target user 103a (i.e., suggestions of other content related to the content he / she can access). These suggestions may include: suggestions for content segments provided or owned by one or more other users 103b, c,... The insight engine is configured to consult an access control mechanism 210 to check whether the target user 103a is allowed to access the potentially suggested content segments before outputting the suggestions to the target user 103a. These functions will be discussed in more detail later. The suggestions are output to the target user 103a via the application front end 202, and the client application 105a runs on his / her terminal 102a.
[0021] Each of the application front end 202, the insights engine 204, the analysis engine 206, the insights index 208, and the access control mechanism 210 may be implemented in the form of software code embodied on a computer-readable storage device and run on a processing device including one or more processors (e.g., a CPU, a work accelerator coprocessor, or a dedicated processor implemented on one or more computer terminals or units in one or more geographic locations). The storage device on which the code is stored may include one or more storage devices using one or more storage media, and the one or more storage media are also implemented on one or more computer terminals or units in one or more geographic locations. In an embodiment, individual instances of one, some, or all of the components 202, 204, 206, 208, 210 may be implemented on each of one, some, or all of the user terminals 102 as part of the corresponding client instance 105, or in a stand-alone application that interfaces with the client instance through an appropriate API (application programming interface). In another example, one, some or all of the components 202, 204, 206, 208, 210 may be implemented on one, some or all of the servers 104 as part of the service application 106, or on a server of a third-party provider (not shown). In other examples, the functionality of the components 202, 204, 206, 210 may be split between any combination of two or more of the following: the user terminal 102, the server 104 of the service, and / or one or more other party's servers. Again, it should be noted that, when desired, distributed computing techniques themselves are known in the art.
[0022] The following describes some example methods according to the embodiments disclosed herein. The function of analyzing content to determine the relationships between them and generating insights based thereon can be performed by the analysis engine 206. The function of determining whether a user is allowed to access a content segment can be performed by the access control mechanism 210. The insights are stored in the insight index 208. The function of looking up insights and determining the insights to present to the user can be performed by the insight engine 204. The query for insights is triggered via the application front end 202, and the suggestions generated from the insights are presented to the target user 103a (accessed from the client 105 on the user terminal 102a of the target user) through the application front end 202.
[0023] The method includes: for each corresponding user content combination in a plurality of user content combinations, pre-generating a corresponding set of multiple insights, each user content combination including a different corresponding combination of one of a plurality of first users 103 and a content fragment of a plurality of first content fragments to which the user has access. That is, for each given first user in a plurality of first users 103, the method includes: for each first content fragment in a plurality of first content fragments to which the first user can access, generating a corresponding set of insights (a set of multiple first content fragments for each first user, and corresponding insights for each first content fragment of each first user). This pre-generation can be performed by the analysis engine 206, which stores the pre-generated insights in the insight index 208. Note: Some of these combinations may include different first content fragments and the same first user. And / or, some of these combinations may include different first users and the same first content fragment.
[0024] Each insight specifies a relationship type and one or more other related content segments that have the specified relationship type with the corresponding first content segment. For example, the relationship type of one of these insights may include the fact that the text, audio, or video of the first content segment is analyzed to be similar to the text, audio, or video of the corresponding other related content segments. As another example, the subject of the first content segment may be the same as the subject of the corresponding other related content segment. Algorithms for determining similarities between, for example, two texts, two images, or two recordings are known in the art per se. Similarly, algorithms for analyzing content such as text, images, or audio and assigning topics are known in the art. The analysis engine 206 can apply such an algorithm to identify other content related to the first content segment from the various content available through the services provided by the service application 106.
[0025] As another example, the type of relationship specified by one of these insights may include: one or more other users 103 who visited the first content segment also visited the related content segment. This may be any other user, or in particular other users who have a predetermined relationship with the first user. In an embodiment, the insight may be defined by statistics on the number of other users who have visited the first content segment and another content segment. These relationships may again be determined by the analysis engine 206, for example by maintaining a graph structure that records connections between entities (users and content) across one or more services.
[0026] These insights are generated based on past or current situations in which the first user in question accessed the first content segment. That is, each time in the past or current situation, one of the first users 103 accesses a content from one of these services through the application front end 202 and the client 105 on their user terminal 102, the analysis engine 206 determines whether any content segments related to the content segment being accessed (e.g., having one of the above relationships) can be found. If so, the relationship is recorded in the insights in the insight index 208. For example, this operation is performed when the first user views the document, page, or file for the first time, or when the first user is creating (writing) a document, page, or file. In an embodiment, when the first user accesses the content in question, the insights can be updated at one or more subsequent times (i.e., the analysis engine 206 determines whether there are any new relationships, and if so, records them in the insights 208 in the insight index).
[0027] An insight is a data structure that includes, for each first content segment of each first user: an indication of the first content segment (e.g., in the form of a content ID, C i ), a functional description of the relationship type, and an indication of one or more other related content segments that have a specified relationship with the corresponding first content segment (e.g., also in the form of content ID C idA , C idB , C idC ...indicates the relevant content fragment). Figure 3 The user content pairs mapped to the insights index 208 are shown. <C i , an example of a set of three insights from Ux>. This will be discussed in more detail later.
[0028] After the pre-generation, the method includes: receiving a query for seeking insights into target content in the first content segment accessed by a target user in the first user 103a (e.g., the content segment currently being accessed by the target user 103a). The insight engine 204 receives the query from the application front end 202. The target user 103a may explicitly trigger the query for insights into the target content segment, which is submitted through a user interface provided by the application front end 202 (the client 105a is running on the user terminal 102a of the target user). Alternatively, the query may be automatically triggered by the application front end 202, such as implicitly triggered by another action performed by the target user 103a through the user interface of the application front end (again accessed through the client application 105a running on its user terminal 102a). For example, the query is automatically triggered when the target user 103a opens or edits the target content segment. As another example, the target content snippet may be presented in association with one or more contact cards (i.e., profiles) of one or more other users 103b, c, ..., and the application front end 202 automatically sends a query to the insight engine 204 seeking insights into the user relationship type of the target content snippet; i.e., seeking suggestions for one or more other related content snippets visited by one or more other users whose contact cards are being presented in conjunction with the target content and who have also visited the target content. In some embodiments, a given other user may be automatically triggered when the target user 103 hovers a cursor over the contact card of the given other user.
[0029] Regardless of the form the trigger takes, the method then includes identifying a corresponding set of pre-generated insights for the combination of the target user 103a and the identified target content based on the received query. This step can be performed by the insights engine 204, with reference to the insights stored in the insights index 208. Note again that these insights can specify relevant content segments provided or owned by other users 103b, c, etc. These operations can be performed under access control, which may not allow access to the target user 103a. Recommendations based on these should not be presented to the target user 103a, because they can enable the target user 103a to infer private information (e.g., content accessed by other users 103b, c,...). In addition, the target user 103a should not be "obsessed" with recommendations that he / she does not have access to.
[0030] Thus, following the identification of the query and the set of relevant insights, the method comprises: pruning one or more insights from the set of identified insights to retain a remaining subset of insights (wherein the remaining subset may have membership of one or more content segments). This pruning comprises: pruning away at least those insights that do not specify relevant content segments that the target user is allowed to access. That is, if the insights are only based on content that the target user 103a is not allowed to access by the access control mechanism 210, then they are deleted. This pruning may be performed by the insight engine 204 with reference to the access control mechanism 210. Following said pruning, the method then comprises: outputting at least one of the remaining subset of insights to the target user via a user interface (of the application front end 202) (via a client 105a on the user terminal 102 of the target user). The output may be controlled by the insight engine 204, and the output is performed via the application front end 202. The output of at least one insight comprises at least: outputting the specified relationship and an indication of the only corresponding relevant content segments that the target user 103 is allowed to access. That is, the target user 103a is notified why the relevant content segments have been suggested for him / her. However, the target user is only provided with suggestions about content that he / she can actually access.
[0031] It should be noted that in many cases, the number of content segments that the target user 103a is allowed to access (from among the relevant content segments specified in the set of identified insights) may vary between the pre-generation of the set of individual insights and the receipt of a query for those insights (performed by the insights engine 204 from the application front end 202). This may include a reduction in the number of segments that the target user 103 is allowed to access. For example, one of the other users 103b may decide to revoke permission for his / her content segments that were previously granted when the insights were generated. The disclosed method advantageously prevents recommendations for such content from being presented to the target user 103a, even if the target user was previously allowed access when the corresponding insights were generated. In addition, the method does not need to generate insights every time a new query is received to do this. Instead, insights are generated in advance and then, at query time, simply pruned with reference to the access control mechanism 210. This provides a computationally more efficient way to provide content recommendations while still respecting access permissions.
[0032] As mentioned above, in an embodiment, the mapping of insights to user-content pairs in the insight index 208 is based on content ID and user ID pairs. The insight engine 204 then uses these as keys to look up insights for a given query specifying a target content ID and user ID. In such an embodiment, the pre-generation of a collection of insights includes (via the analysis engine 206): A) generating a corresponding key for each user-content combination <C i, Ux>, each key value includes a user ID of a corresponding first user and a content ID of a corresponding first content segment; B) storing the key values in the insight index 208; and C) in the insight index 208, mapping each key value to a descriptor of each insight in the corresponding set of insights, wherein each descriptor includes a content ID of each relevant content segment in the corresponding one or more related content segments (C idA , C idB , C idC ...), and a description of the relationship with the corresponding first content. Then, the received query includes the user ID (Ux) of the target user and the content ID (C i ). Identification of the set of identified insights includes using the user ID and content ID received in the query to look up in the insights index 208 a map to the key <C i , Ux>, a collection of insights including the user ID of the target user and the content ID of the target content fragment.
[0033] In a preferred embodiment, pruning may include: 1) searching the insight index 208 for content IDs of relevant content segments specified by insights in the set of identified insights; 2) searching the insight index 208 for content IDs of relevant content segments specified by insights in the set of identified insights; idA , C idB , C idC ...); II) forming a set of content IDs including the union of the searched content IDs; III) removing from the set of content IDs content IDs that the target user is not allowed to access, thereby leaving a subset of content IDs; and IV) determining which insights in the set of identified insights do not contain at least one of the subset of content IDs, and pruning the determined insights. By first forming the union of content IDs and then pruning that set, rather than pruning the set in each individual insight, this advantageously saves processing resources by performing pruning only once per query (different insights in the identified set may include duplicate content IDs: the union forms a set without duplicates).
[0034] In another exemplary optimization, each content ID (C i) are stored in a compressed form in a key value, and the insight index includes a mapping of each compressed form content ID to a corresponding globally unique ID. For example, the globally unique form can be a URL, which can be relatively long. Because there are many insights included in the insight index, if these IDs are repeated in each insight that appears, they can begin to consume a lot of storage space. Therefore, in an embodiment, the insight index 208 maps a short ID (e.g., an integer) to each GUID in a mapping table in the insight index 208. When a content ID requires a corresponding globally unique ID, the insight engine 204 looks up the (short form) content ID that maps to each key value in the insight index, and then looks up the corresponding globally unique ID in the insight index that maps to the looked up content ID.
[0035] For example, by reference to the access control mechanism 210, the determination of which relevant content segments the target user is allowed to access may require the full-length GUID of each relevant content segment specified by an insight in the set of identified insights. That is, the insight engine must output the full GUID version of the content ID to the access control mechanism 210 to determine whether the target user 103a is allowed to access. Therefore, the insight engine 204 submits the looked-up globally unique ID to the access control mechanism 210 to determine whether the target user 103a is allowed to access the corresponding content.
[0036] Alternatively or additionally, to output at least one of the remaining subset of insights to the target user 103a (the final result of the insight), the output indication may include or may be a globally unique identifier based at least on the lookup of the corresponding relevant content segment. That is, the full-length GUID may be required to provide actual suggestions to the target user 103a, such as by outputting a URL, a link to a URL, or a preview obtained based on the URL.
[0037] In further alternative or additional embodiments, each of one, some or all of the insights may further specify one or more additional criteria. In such embodiments, the pruning may also include pruning away any insights in the identified set that do not satisfy their own additional criteria specified therein when evaluated at the query time.
[0038] As an example, the one or more additional criteria may include at least: the insight specifies that the target user 103 is allowed to access more than a predetermined number of related content segments. As another example, the one or more additional criteria may include at least: the insight specifies that the target user 103a is allowed to access content segments from more than a predetermined number of other users. Such additional constraints can advantageously help respect privacy considerations. For example, if more than a certain number of other users have accessed a potential suggested content segment, the relationship between the content segment and the target content segment can be considered public; otherwise, the relationship cannot be known by the target user 103a, because this may enable him / her to infer certain information about the specific other user 103b who accessed the two content segments.
[0039] In further alternative or additional embodiments, each of one, some or all of the insights may further specify metadata defining the insight. For example, the metadata may include at least a timestamp record of when the insight was generated. In this case, the method may include automatically terminating one or more insights after a predetermined time limit has passed relative to their own specified timestamps. This step may be performed by the insight engine 204 by reference to metadata looked up in the insight index 208. The metadata may also specify a time limit for expiration, or alternatively, this may be predetermined.
[0040] In another example, the metadata may specify a last modification time of each of the corresponding one or more related content segments. As another example, the metadata may specify an indication of one or more other users 103b, c, ... that modified the corresponding one or more related content segments. In an embodiment, where the insight also specifies one or more additional criteria, these additional criteria may include: the insight specifies related content segments that were most recently modified no more than a predetermined time according to the metadata (i.e., a recency criterion); and / or the insight specifies related content segments that were previously modified by another user (e.g., a colleague or supervisor of the target user in his or her organization) who is related to the target user 103a in a predetermined relationship according to the metadata. This helps provide the most up-to-date suggestions and / or has additional connections to the target user 103a through the target user's 103a's related users.
[0041] In another exemplary use of metadata, the outputting to the target user 103a may include: outputting metadata of the at least one of the insight subsets (ie, outputting metadata as part of the final recommendation). This may help the target user 103a decide whether to access the suggested content.
[0042] It should also be noted that the different possible criteria and metadata are not mutually exclusive. In embodiments, a given insight may include any combination of one or more additional criteria and / or one or more metadata.
[0043] Some exemplary features and implementation details of the techniques outlined above are now discussed in more detail. Again, the various steps can be understood as being performed by the insight engine 204 in response to queries received via the application front end 202, and pushed to the access control mechanism 210, the analysis engine 206, and the insight index 208 when appropriate, and outputting the results through the application front end 202.
[0044] Current information retrieval and productivity systems rely on analytical tasks to display relevant information to users103. By generating insights about the underlying data, it is possible to display occasional new content to users of the system, explain why certain content is relevant to them, and so on. The generation of these insights is typically both data-intensive and compute-intensive. Therefore, the insights may be generated, for example, through a batch job or at some time before the user consumes the insights. This is problematic in cases where the insights are related to content that has associated access controls, because updates to the pieces of content that a user has access to may change the situation as to whether a particular insight can be presented to the user without leaking information from the underlying content. These considerations are particularly (but not exclusively) relevant in the enterprise software sector.
[0045] Because the generation of insights is typically computationally expensive and data intensive, embodiments disclosed herein provide a means 208 for storing a plurality of insights related to a particular content segment in a format that allows for efficient evaluation and retrieval.
[0046] Consider a productivity or information retrieval system based on content analysis and how users interact with it, which presents content to user 103a that is considered relevant to her. For a variety of reasons, the content presented may be found to be relevant to the user. For example, a document may be interesting because the subject is detected in many other documents, or your manager has viewed or edited the document. Similarly, a certain internal network page may be of interest to user 103a because it contains the same subject as the document that the user is currently writing, or because people 103b, 103c who viewed some documents read by user 103a also visited the site. For a single piece of content (e.g., a document, site, or video, etc.), the system can generate multiple insights related to it. Each such insight can constitute a reason for displaying or recommending content to user 103a.
[0047] The generation of insights is often both data-intensive and computationally intensive. For example, information about large amounts of data related to content and users 103 may be retrieved to build high-fidelity interaction models, find documents with similar topics, and so on. In addition, the generation of different insights is often based on different models and data, and may occur at different cadences and time points. Therefore, the software component supporting insight retrieval 204 must provide an efficient way to add new and update existing insights.
[0048] When content is restricted by access controls, analytics that generate insights typically ignore content that is not accessible to the user when generating insights. For example, document DA may be relevant to user 103a (Alice) because its content is similar to the content of another document DB that her manager 103b recently modified. However, if Alice does not have access to DB, then there is no way to display this insight without leaking information about DB. Therefore, the analytics may ignore this data by not storing it for later retrieval. However, there may be reasons to recommend DA to Alice. For example, person 103c, ... who viewed DA may also have recently viewed DC, DD, and DE, all of which Alice has access to. In this case, the system may store the latter insight related to DA on behalf of Alice so that it can be used later, such as to present new incidental content, to rank search results, or for any other reason.
[0049] Now consider the following scenario, in which Alice has access to all documents including the DB while the (analytic engine 206) is performing the analysis work. In this case, both insights are stored for later retrieval. However, before the insights are used, the access control of the DB is updated, which revokes Alice's access to the DB. In order to respect the access control of the content, the insights derived from the DB can no longer be presented to Alice. This can be achieved by a) reactively updating all insights based in part or in whole on the DB, or b) filtering the insights presented to the user at query time. Since a large number of insights (potentially for a large number of different users 103) may be derived (in part) from a single piece of content, updating each insight can become computationally very resource-intensive. This problem is exacerbated by the fact that there is no guarantee that the user 103a that generated the insight has ever used the insight. For these efficiency reasons, the disclosed system utilizes query time pruning of insights to respect the access control of the content, and thus the insights generated.
[0050] Embodiments of the presently disclosed system include an index of insights for content user pairs 208, an insight query evaluation engine 204, and an access control evaluation component 210. In general, the responsibilities of these components are as follows.
[0051] Insights Index 208: For each content-user pair, a set of insights is stored. These insights contain the information needed to evaluate insight queries and complete access control checks.
[0052] Access Control Evaluation Component 210: This software component provides a means of checking whether a given user 103a has the right to access a piece of content.
[0053] Insight query engine 204: This component utilizes the access control evaluation component 210 to determine what content is accessible to the user 103a who is querying for insights, refines the insight result set by removing insights that are not available to the user 103a, and finalizes the insights based on the current state of the system.
[0054] The access control checking mechanism 210 itself can be implemented in a manner known in the art. It can be considered as an independent software component. Its implementation will be specific to the access control mechanism used to protect the content.
[0055] The insight index 208 is used to store a collection of insights for content-user pairs. While any efficient index structure can be used, one way to achieve this is to use a dictionary where the key is a combination of content and user ID, such that each key k(C i , U j ) uniquely addresses a set of insights generated for that specific piece of content and that specific user. ji1 , I ji2 , I ji3 ...}.
[0056] Each insight generated by the analysis contains the information necessary to perform an access control check on the content from which the insight was derived, as well as some data describing how it was evaluated by the insight query engine. Specifically, each insight contains: a "tidbit", a set of content IDs, a set of variables, and optionally a set of constraints and / or system metadata.
[0057] The "tidbit" provides the user with a description or reason for presenting the content snippet. This tidbit can be dynamic in the sense that the description may change based on query evaluation. For example, it can be based on a regular expression such as "Viewed {namec i} users} users also viewed {namec z}", where namec i is the name of the content to which the insight belongs. z is the name of some other content that the user can also access, count usersYes, I have checked namec z The number of users.
[0058] Content ID collection ContentId {C idA , C idB , C idC ...} Identify all content pieces from which insights are derived.
[0059] When determining the dynamic tidbit, a variable set Variable {varA, varB, varC, ...} can be used, for example, the file name of the content, the number of viewers, or as shown in the above example, a pair of content name-view count.
[0060] The set of constraints Constraint{const1, const2, const3, ...} includes constraints that must be evaluated before an insight is returned. These constraints can facilitate "crowdsourcing", e.g. a user must have access to some minimum number of content items for the insight to be revealed, while also terminating early. For example, it doesn't matter if the user has access to 10 or 100 content items used to generate the insight, because once 11 is reached, the tidbit can be filled with a "10+" value.
[0061] System metadata may include, for example, a timestamp indicating when an insight was generated, an expiration time, a relative score for a given user's experience, etc. This metadata is used for system accounting, such as evicting old or expired insights, or as a means for a given user 103a to choose between multiple possible insights. System metadata may be stored in a property bag.
[0062] Figure 3 An insights index containing a set of generated insights for a content segment is shown.
[0063] The insight query engine 204 is responsible for executing and evaluating queries issued to the system on behalf of the user 103a. The engine takes a set of keys (content user pairs) as input and returns a set of final insights for each of these pairs. It is assumed that the content identifiers required to generate the content user pairs are provided as input to the engine 204. For example, the content identifier may correspond to a content fragment displayed when the user 103a browses the intranet. Another is a feed-like system in which the content identifier corresponds to the content found to be relevant to the user 103a. In addition, other indexes can be built based on the data stored in the insight index to support content determination. For example, if the insight metadata describes which content fragments the user has modified, an index on the metadata can be created and queried to support the following scenario: wherein a person is interested in determining a set of candidate content to be recommended to the user 103a based on all candidates in the content that has been modified by the user manager 103b. Such additional indexes would be a possible extension of the embodiments described herein.
[0064] Internally, the query evaluation engine 204 works as follows: 1) First query the insight index 208 for insights stored according to the provided key value; 2) Build the complete set of content IDs used to generate the insights, and then query 3) the access control component 210 to find the set of content IDs that the user 103a currently has access to. Based on this potentially pruned set of content IDs, the engine 204 then performs the following operations: 4) Evaluate each insight by evaluating the corresponding constraints. If the constraints are met, the final tidbit for each insight is constructed based on the available variables 5). In the following paragraphs, each step will be described in more detail.
[0065] As described in the previous paragraph, the first step performed by the insight query execution engine 204 is to query the insight index 208 using the provided key values. These key values correspond to content-user pairs. That is, if the system generates insights related to N documents for a given user, then N content-user pairs or key values will be generated, such as <C1,U a >, <C2,U a >, .., <C N , U a >. If the system generates insights for the same content piece for two different users, two content-user pairs will be produced, e.g. <C i , U a > and <C i , U b>. When an insight query arrives in the system, the query is executed on behalf of a particular user 103a. The insights index is queried using one or more keys corresponding to the user and the content fragment for which insights are to be obtained. The key value can have any format, but one method of generating the key value can be to combine the unique identifier of the user and the content (if available). The result of step 1 is a collection of insights, one for each content fragment [Insightsc i U a {}, Insightsc j U a {}, ..., Insightsc m U a {}].
[0066] The next step in the query execution pipeline is to collect the complete set of identifiers for the content from which the different insights in these collections are derived. As mentioned above, each insight contains the identifier of the content used to derive its content. The result of step 2) is the union of all the content identifiers in each insight in the collection of all insights in the collection, or InsightContentIds = Ids(Insightsc i U a {})U Ids(Insightsc j U a {})U...U Ids(Insightsc m U a {}), where Ids(Insightsc m U a {}) corresponds to the collection Insightsc m U a The union of the content identifiers of all insights in {}. Figure 4 The generation of this set (for a set of insights related to a given piece of content and the total set of content identifiers for a single user 103a) is shown in . The retrieval of content identifiers may be performed in parallel to speed up query execution.
[0067] The next step 3) is to prune the set of content IDs to contain only those identifiers corresponding to content that the user 103a has access to at the time of query execution. This is done by feeding InsightContentIds to the access control component 210. For each identifier in InsightContentIds, the access control component 210 should provide an answer whether the user 103a has access rights. Based on this information, a pruned set of content identifiers InsightContentIds can now be constructed by adding only those identifiers corresponding to content that the user 103a has access to, while ignoring those that the user 103a does not have access to.
[0068] During step 4), the query execution engine 204 checks each insight to determine whether it can be returned to the user 103a, and if so, determines the tidbit of the insight. Each tidbit has an associated set of constraints that must be evaluated during this process. These constraints can take the form of any Boolean function and can also use the stored variables of the insights during execution. One exemplary constraint is that the user 103a must have access to at least three content items from which the insight can be derived. Another constraint can be based on recency, requiring that the insight is relevant and that at least one relevant piece of content that the user 103a has access to has been modified or viewed by one or more other users 103b, c, etc. In this case, information such as timestamps and user identifiers can be stored as part of the insight variable set.
[0069] The implementation of constraints and their evaluation can be implemented in several ways. For example, an interpreted language can be used, storing constraints as functions or methods. If based on the .Net platform, constraints can be implemented as ordinary C# functions, compiled and executed during constraint evaluation using the Roslyn compiler service. Another approach is to specify constraints using some domain-specific language, which are then interpreted and executed in the corresponding runtime. If some constraints are used frequently, the storage (and, depending on the implementation strategy, compilation) overhead can be reduced by sharing them between insights. In this case, the constraints will be in the form of a "stored procedure", which can be parameterized and takes as input a set of insight variables.
[0070] Another technique for reducing runtime overhead is that of mapping content identifiers to a more compact representation (e.g., an integer). This is particularly valuable if the number of distinct content IDs is large, and many of the same content IDs are represented in multiple insights. By assigning a unique integer to each content identifier and then storing them in a bidirectional mapping structure keyed by the actual content identifier along with the compressed identifier, storage and memory overhead can be reduced because the integer can be used to represent the content in the insight. Additionally, computational overhead can be significantly reduced by reducing the size of the identifiers used during constraint validation; matching two integers is much faster than matching strings or even GUIDs.
[0071] The variable collection for insights can be implemented as an attribute bag, where the attribute name corresponds to the name of the variable and the attribute value similarly corresponds to the value of the variable. If it is expected that the variable is typed, this can be achieved by encoding the type in the attribute value. These constraints can easily access the variables in the attribute bag and retrieve the value by its name. Because of how the constraints maintain knowledge about how to handle these variables, any serializable data can be stored as a variable. This allows the analysis to prepare variables so that maximum efficiency can be achieved at query time. An example of this is that multiple alternative file names and their view counts can be injected into the tidbit. If it is expected to provide the highest possible view count, the view count can sort the list of file name-view count tuples in descending order. In this case, if the first entry is not accessible to user 103a, the query evaluation engine only needs to consider the second entry.
[0072] As shown in the example above, by leveraging a list of multiple potential values in a variable, insights can be provided even in the face of multiple access revocations. In practice, analytical work often generates multiple such options and only stores the top N results. On the other hand, executing a query without producing results wastes resources. Generally, a reasonable trade-off should be made between storage / memory overhead and the possibility of returning no results.
[0073] Embodiments may be implemented in a centralized or decentralized manner. For example, all components may reside on a single computer, or be distributed in various ways. This provides the ability to scale different components independently. One example is to use a distributed hash table (DHT) to implement the insights index, while another example is to store insights in a per-user hardening model. The access control component may also be implemented as a separate service running on the same machine as the insights query engine, or as a web service accessible over a network. There are trade-offs to be made regarding performance and maintainability as to which approach to choose.
[0074] A step-by-step description of how an embodiment operates is given below, when adding insights to the insight index 208 and when evaluating insight queries. In the following, it is assumed that insights have already been generated with the necessary metadata to support any eviction policies to be implemented by the present invention. Therefore, adding new insights to the system involves the following steps.
[0075] Query the insights index based on the content ID and user ID to which the insight belongs.
[0076] Assume that <C i , U x > If there is no upper limit on the number of insights that a key can store, then the collection of insights under that key is updated. If the insight does not supersede another older / obsolete insight, as determined by examining the insight metadata, then it is inserted into the collection. If the insight supersedes an older / obsolete insight, as determined by examining the insight metadata, then it replaces the old insight in the collection.
[0077] If a compression scheme for content identifiers is enabled, the content ID is added to the map and the compressed identifier is stored in the insights.
[0078] If exists <C i , U x > some upper bound on the number of insights that a key can store, any proactive eviction policies are invoked to reclaim space by: removing the evicted insights from the collection; and if a compression scheme for content identifiers is enabled, removing all unused content identifiers from the map.
[0079] Insights are inserted into a collection according to the following method. If the insight does not supersede another older / obsolete insight, as determined by examining the insight metadata, it is inserted into the collection. If the insight supersedes an older / obsolete insight, as determined by examining the insight metadata, it replaces the old insight in the collection.
[0080] If a compression scheme for content identifiers is enabled, the content ID is added to the map and the compressed identifier is stored in the insights.
[0081] When an insights query arrives at the system, the query is evaluated by performing the following steps.
[0082] Query the insights index based on the content ID and user ID to which the insight belongs.
[0083] For each content user generated based on the user identifier and the content ID set provided in 1 <C i , U x >、 <C j , U x >、 <C k , Ux > ...yes, from the key stored <C i , U x > retrieves the collection of content identifiers used to generate insights from the insights under Insights. This operation can be performed in parallel for each insight in the collection.
[0084] If a compression scheme is employed for content identifiers, a backing index structure is read for later use in query execution.
[0085] The access control component 210 is queried to obtain a (possibly abridged) set of content identifiers to which the user 103a has access.
[0086] If a compression scheme is employed for the content identifier, the index structure is used to retrieve the complete content identifier from the compressed identifier before sending the uncompressed identifier to the access control component.
[0087] The query execution engine 204 evaluates the <C i , U x > for each insight in the set below. This can happen in parallel. That is, all constraints for that insight are evaluated; if all constraints are satisfied, the tidbit is finalized and its insight is added to the set of candidate insights for the query; however, if all constraints are not satisfied, the insight is discarded.
[0088] Finally, the associated final insights are returned to the client 105 .
[0089] To summarize the various issues discussed above, organizational intelligence and analytics are resource and compute intensive and are typically done in batches rather than in real time. This delay can cause the availability of results to not match the latest security status. For example, the availability of organizational intelligence and analytics results to users often depends on the access controls associated with the content in these results and the access control privileges of user 103a. When these security states change, the results often do not reflect these changes because the results were generated before the changes, resulting in a poor user experience and even security risks. An embodiment addresses these issues by associating the access control state with the generated results so that different results can be displayed based on the latest access control state. This can include:
[0090] When providing queries for insights, observe access controls on all content from which insights are obtained;
[0091] Integrate this access control into the insights query evaluation engine to evaluate and execute queries, which is an integral part of query execution;
[0092] Associate multiple potential insights with content pieces on a per-user basis;
[0093] Associating each insight with multiple Boolean constraints, allowing query-time resolution of which insights emerged;
[0094] Associating a set of variables with each insight, allowing multiple versions of the insight tidbit to be generated when queried;
[0095] Associate each insight with a dynamic tidbit generated at query time;
[0096] Reduce runtime memory and CPU overhead by allowing the use of compressed content identifiers, leveraging an alternative mapping structure; and
[0097] Reduce storage and runtime CPU overhead by sharing constraints between insights.
[0098] It should be understood that the above embodiments are described only by way of example. Once the disclosure herein is given, other variations or applications will become apparent to those of ordinary skill in the art. The scope of protection of the present disclosure is not limited by the above embodiments, but only by the appended claims.
Claims
1. A computer-implemented method for sharing content over a network, wherein: At least some of the content is subject to access control, the access control limiting which users are allowed to access the content; the method comprising: Pre-generating a corresponding set of multiple insights for each corresponding user content combination in a plurality of user content combinations, each user content combination comprising a different corresponding combination of a first user in a plurality of first users and a content fragment in a plurality of first content fragments to which the user has access, wherein each insight specifies a relationship type and one or more other related content fragments, the one or more other related content fragments having the specified relationship type with the corresponding first content fragment; After the pre-generating, receiving a query for seeking insights into target content in the first content segment accessed by a target user among the first users; identifying, based on the received query, the set of corresponding pre-generated insights for the combination of the target user and the target content; After the querying and the identifying, pruning one or more insights from the set of identified insights to retain a remaining subset of insights, wherein the pruning comprises: pruning at least those insights that do not specify relevant content segments that the target user is allowed to access; and After the pruning, at least one of the remaining insight subsets is output to the target user via a user interface, which includes outputting at least the specified relationship and an indication of the only corresponding related content segments that the target user is allowed to access.
2. The method according to claim 1, wherein: Between the pre-generation of the collection and the receipt of the query, a number of the content segments that the target user is permitted to access is reduced from among the relevant content segments specified in the insights of the identified collection.
3. The method according to claim 1, wherein: The relationship type for an insight in the identified set includes: - the text, audio or video of the first content segment is analyzed to be similar to the text, audio or video of the corresponding other related content segments; or - The subject of the first content segment is the same as the subject of the corresponding other related content segments.
4. The method according to claim 1, wherein: The relationship type specified by one of the insights in the identified set includes: - One or more other users who accessed the first content segment also accessed the related content segment.
5. The method according to claim 4, wherein: The one or more other users are users having a predetermined relationship with the first user.
6. The method according to claim 1, wherein: Each of one, some or all of the insights further specifies one or more additional criteria, and the pruning further includes pruning away any insights in the identified set that, when evaluated at the query time, do not satisfy their own additional criteria specified therein.
7. The method according to claim 6, wherein: The one or more additional criteria include at least: - The insight specifies more than a predetermined number of relevant content segments that the target user is allowed to access.
8. The method according to claim 4, wherein: Each of one, some or all of the insights further specifies one or more additional criteria, and the pruning further comprises: pruning away any insights in the identified set that do not satisfy the additional criteria specified therein when evaluated at the query time; and wherein the one or more additional criteria include at least: - The insight specifies content segments from more than a predetermined number of other users that the target user is allowed to access.
9. The method according to claim 1, wherein: Each of one, some or all of the insights further specifies metadata defining the insight.
10. The method according to claim 9, wherein: The metadata includes at least a timestamp record of when the insights were generated, and wherein the method includes automatically expiring one or more of the insights after a predetermined time limit has elapsed relative to its own specified timestamp.
11. The method according to claim 9, wherein: The metadata specifies one or both of the following: - the time at which each of the corresponding one or more related content segments was last modified, or - an indication by one or more other users to modify the corresponding one or more related content segments; wherein each of the insights further specifies one or more additional criteria, and the pruning further comprises: pruning away any insights in the identified set that do not satisfy the additional criteria specified therein when evaluated at the query time; and wherein the one or more additional criteria include at least: - the insight specifies relevant content that was last modified no more than a predetermined time based on the metadata, or - the insight specifies relevant content that has been previously modified by another user who is related to the target user in a predetermined relationship according to the metadata.
12. The method according to claim 1, wherein: The pre-generation includes: - generating a corresponding key value for each user content combination in the user content combination, each key value including a user ID of the corresponding first user and a content ID of the corresponding first content segment; - storing the key value in an insight index; and - in the insight index, mapping each key value to a descriptor of each insight in the corresponding set of insights, wherein each descriptor includes a content ID of each of the corresponding one or more related content segments and a description of a relationship to the corresponding first content segment; The received query includes the user ID of the target user and the content ID of the target content segment; Wherein, the identification of the set of identified insights includes: using the user ID and the content ID received in the query, searching the insight index for the set of insights mapped to the key value, wherein the key value includes the user ID of the target user and the content ID of the target content segment.
13. The method according to claim 12, wherein: The pruning includes: - searching the insight index for the content ID of the relevant content segment specified by the insight in the set of identified insights; - forming a content ID set including the union of the found content IDs; - pruning the content IDs of content that the target user is not allowed to access from the set of content IDs, thereby leaving a subset of content IDs; and - Determining which insights in the set of identified insights do not contain at least one of the subset of content IDs, and pruning away the determined insights.
14. A computer program for sharing content via a network, wherein: At least some of the content is subject to access control that limits which users are allowed to access the content, the computer program being embodied on a computer-readable storage device and configured to, when executed by one or more processors, perform the following operations: Pre-generating a corresponding set of multiple insights for each corresponding user content combination in a plurality of user content combinations, each user content combination comprising a different corresponding combination of a first user in a plurality of first users and a content fragment in a plurality of first content fragments to which the user has access, wherein each insight specifies a relationship type and one or more other related content fragments, the one or more other related content fragments having the specified relationship type with the corresponding first content fragment; After the pre-generating, receiving a query for seeking insights into target content in the first content segment accessed by a target user among the first users; identifying, based on the received query, the set of corresponding pre-generated insights for the combination of the target user and the target content; After the querying and the identifying, pruning one or more insights from the set of identified insights to retain a remaining subset of insights, wherein the pruning comprises: pruning at least those insights that do not specify relevant content segments that the target user is allowed to access; and After the pruning, at least one of the remaining insight subsets is output to the target user via a user interface, which includes outputting at least the specified relationship and an indication of the only corresponding related content segments that the target user is allowed to access.
15. A system for sharing content via a network, wherein: At least some of the content is subject to access control that limits which users are allowed to access the content; the system comprising: one or more processors; and A storage device storing code arranged to be executed on the one or more processors, the code being configured to perform the following operations when executed: - for each corresponding user content combination in a plurality of user content combinations, pre-generating a corresponding set of multiple insights, each user content combination comprising a different corresponding combination of a first user in a plurality of first users and a content fragment in a plurality of first content fragments that the user has access to, wherein each insight specifies a relationship type and one or more other related content fragments, and the one or more other related content fragments have the specified relationship type with the corresponding first content fragment; - after the pre-generating, receiving a query for seeking insights into target content in the first content segment accessed by a target user among the first users; - based on the received query, identifying the set of corresponding pre-generated insights for the combination of the target user and the target content; - after said querying and said identifying, pruning one or more insights from the set of identified insights to retain a remaining subset of insights, wherein said pruning comprises: pruning at least those insights that do not specify relevant content segments that said target user is allowed to access; and -After said pruning, outputting at least one of said remaining subsets of insights to said target user via a user interface, comprising outputting at least the specified relationships and indications of only said corresponding relevant content segments that said target user is allowed to access.
