Contextual answer generation in spreadsheet

Automatically fill data in spreadsheets through the context answer generation manager, solving the problem of inefficient data filling in spreadsheets, and achieving more efficient data filling and computing resource utilization.

CN119137601APending Publication Date: 2024-12-13GOOGLE LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380034627.6
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-03-04
Filing Date
2023-03-03
Publication Date
2024-12-13

AI Technical Summary

Technical Problem

In a spreadsheet, users need to manually type large amounts of data to fill cells, resulting in human error and waste of time, and conventional spreadsheets are inefficient when filling data in a decision matrix.

Method used

Analyze user requests through the context answer generation manager, extract list headers and row table headers as context information, generate queries and use data sources to fill blank cells, automatically fill relevant data, and reduce user manual input.

Benefits of technology

Reduces human errors, saves time and computing resources for filling data, and improves spreadsheet filling efficiency and computing efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119137601A_ABST
    Figure CN119137601A_ABST
Patent Text Reader

Abstract

A method includes receiving, via a user interface of a device associated with a user, a request to populate one or more of a plurality of cells of a document having a tabular structure, wherein the one or more cells correspond to a first attribute related to a first column and a first object related to a first row; analyzing the request to obtain contextual information indicative of the first attribute and the first object; generating a query based at least in part on the contextual information; initiating execution of the query using one or more data sources to obtain a response; causing the user interface to be modified to populate a response in one or more cells corresponding to the first attribute and the first object; determining second contextual information based on the response, the second contextual information indicating a second attribute and a second object; generating a second query based at least in part on the second contextual information; initiating execution of the second query using one or more data sources to obtain a second response; and causing the user interface to be modified to populate the second response in the one or more cells corresponding to the second attribute and the second object.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Aspects and implementations of the present disclosure relate generally to electronic documents, and more particularly to contextual answer generation in documents having a tabular structure. Background Art

[0002] An electronic document ("document") may have a table structure including a set of cells. Such documents may be referred to as "data tables", or simply "tables". Each cell corresponds to an area for inputting data of a specific form (e.g., digital or textual data), and the document may be used to organize, analyze, and / or store the input data. Each cell may include a non-numeric data entry, a mathematical expression for assigning a value to a cell, or may remain empty. The mathematical expression may include a numerical value, a reference to the value of one or more cells in the electronic table, an arithmetic operator, a relational operator, a function, and the like. In addition, the document may also support programming capabilities. For example, a cell may be derived from one or more other cells of the document. In some implementations, the document may be an electronic table. The cells in the electronic table may be arranged as an array including a plurality of rows and a plurality of columns, wherein a particular cell of the electronic table may be addressed or referenced according to its column position in the table and its row position in the table. In some examples, columns may be represented by letters (e.g., column A, column B, ...), and rows may be represented by numbers (e.g., row 1, row 2, ...). For example, a cell located at column D and row 5 may be referenced as cell D5. Summary of the invention

[0003] The following summary of the invention is a simplified overview of the present disclosure in order to provide a basic understanding of some aspects of the present disclosure. This summary of the invention is not a comprehensive review of the present disclosure. It is neither intended to identify the key or important elements of the present disclosure, nor to indicate any scope of a specific implementation of the present disclosure or any scope of the claims. Its sole purpose is to present some concepts of the present disclosure in a simplified form as a preface to a more detailed description presented later.

[0004] In some implementations, a method and system are disclosed. In some implementations, a method includes receiving a request to fill one or more cells of a plurality of cells of a document having a table structure via a user interface of a device associated with a user, wherein the one or more cells correspond to a first attribute associated with a first column and a first object associated with a first row. The method may also include analyzing the request to obtain context information indicating the first attribute and the first object. It may also include generating a query based at least in part on the context information. The method may also include initiating execution of the query using one or more data sources to obtain a response. The user interface may be modified to fill one or more responses in one or more cells corresponding to the first attribute and the first object. The method may also include determining second context information based on the response, the second context information indicating a second attribute and a second object. The method may include generating a second query based at least in part on the second context information. It may also include initiating execution of the second query using one or more data sources to obtain a second response. The method may also include initiating execution of the second query using one or more data sources to obtain a second response. The method may also include initiating execution of the second query using one or more data sources to obtain a second response. The method may also include initiating execution of the second query using one or more data sources to obtain a second response.

[0005] In some implementations, a system includes a memory device and a processing device coupled to the memory device. The processing device may be configured to receive a request to fill one or more cells of a plurality of cells of a document having a table structure via a user interface of a device associated with a user, wherein the one or more cells correspond to a first attribute related to a first column and a first object related to a first row. The processing device may also be configured to analyze the request to obtain context information indicating the first attribute and the first object. The processing device may be configured to generate a query based at least in part on the context information. The processing device may also be configured to initiate execution of the query using one or more data sources to obtain a response. The processing device may be configured to cause the user interface to be modified to fill one or more responses in one or more cells corresponding to the first attribute and the first object. The processing device may also be configured to determine second context information based on the response, the second context information indicating a second attribute and a second object. The processing device may be configured to generate a second query based at least in part on the second context information. The processing device may be configured to initiate execution of the second query using one or more data sources to obtain a second response. The processing device may also be configured to cause the user interface to be modified to fill a second response in one or more cells corresponding to the second attribute and the second object.

[0006] In some implementations, a non-transitory computer-readable storage medium includes instructions that, when executed by a processing device, cause the processing device to receive, via a user interface of a device associated with a user, a request to populate one or more cells of a document having a table structure, wherein the one or more cells correspond to a first attribute associated with a first column and a first object associated with a first row. The instructions may also cause the processing device to analyze the request to obtain context information indicating the first attribute and the first object. The instructions may also cause the processing device to generate a query based at least in part on the context information. The instructions may also cause the processing device to use one or more data sources to initiate execution of the query to obtain a response. The instructions may also cause the processing device to cause the user interface to be modified to populate one or more cells corresponding to the first attribute and the first object with one or more responses. The instructions may also cause the processing device to determine second context information based on the response, the second context information indicating a second attribute and a second object. The instructions may also cause the processing device to generate a second query based at least in part on the second context information. The instructions may also cause the processing device to use one or more data sources to initiate execution of the second query to obtain a second response. The instructions may also cause the processing device to cause the user interface to be modified to populate one or more cells corresponding to the second attribute and the second object with a second response.

[0007] The above summary and preferred embodiments of the present invention should not be construed as limiting the scope of the present invention. It should be understood and apparent to those skilled in the art that further modifications may be made to the embodiments of the present invention thus described without departing from the spirit and scope of the present invention. BRIEF DESCRIPTION OF THE DRAWINGS

[0008] Aspects and implementations of the present disclosure will be more fully understood from the detailed description given below and from the drawings of various aspects and implementations of the present disclosure, however, they should not be understood as limiting the present disclosure to specific aspects or implementations, but are only for explanation and understanding.

[0009] Figure 1 An example system architecture according to an implementation of the present disclosure is shown.

[0010] Figure 2 Depicted is a diagram of an example spreadsheet including a set of cells in accordance with implementations of the present disclosure.

[0011] Figure 3 A flow chart of a method for contextual answer generation in a document having a table structure according to an implementation of the present disclosure is depicted.

[0012] Figure 4 is a block diagram illustrating an exemplary computer system according to an implementation of the present disclosure. DETAILED DESCRIPTION

[0013] Aspects of the present disclosure relate to contextual answer generation in documents with a tabular structure. One challenge in building an electronic document ("document") with a tabular structure (e.g., a spreadsheet) is to populate data into the document. As an example, the following portion of a spreadsheet including columns A to E and rows 1 to 3 is provided, as shown in Table 1: Table 1 Table 1 is a portion of a spreadsheet that organizes data associated with a group of houses. The group of houses includes House 1 and House 2. There are also properties corresponding to the group of houses. More specifically, the cells in column A define a column header ("Object") and the name / number of each house. The cells in column B define a column header ("Price") and the price of each house as defined by the cells in column A in the same row. The cells in column C define a column header ("Square meters") and the square meters of each house as defined by the cells in column A in the same row. The cells in column D define a column header ("Distance to Work") and the distance to Work for each house as defined by the cells in column A in the same row. The cells in column E define a column header ("Neighborhood") and the neighborhood of each house as defined by the cells in column A in the same row.

[0014] Conventionally, each blank cell of a spreadsheet corresponding to a row and a column can be manually typed into the spreadsheet, for example, by a user via a computing device. Although conventional spreadsheets enable the use of mathematical expressions to reference other cell values ​​to derive cell values, often, conventional spreadsheets typically require users to manually type in a large amount of data. In addition, some conventional spreadsheets can be used as decision matrices. In a decision matrix, each column header of the spreadsheet can be a set of attributes of a decision, and each row header of the spreadsheet can be a set of alternatives (hereinafter referred to as "objects") for a decision. For example, Table 1 above can be a decision matrix for key aspects of deciding to buy a house. However, the decision matrix needs to be filled, which can often take a lot of time because the inputs for each cell are not easily known. For example, the user usually needs to consult other data sources, such as a web search engine, a website, or other external data sources, in order to fill in each cell of the decision matrix. For example, in Table 1, in order to fill in cell B2 (the price of House 1), the user can use a data source (e.g., a web search engine) to manually search for the price of the house, and then manually type the price into cell B2. To populate cell D3 (the distance from house 2 to the workplace), the user may manually search for the answer using a web search engine or another data source (e.g., a website that calculates distances between locations, etc.). The user may then manually type the distance to the workplace into cell D3. Therefore, the user needs to manually populate each cell with data, which may result in incorrect values ​​in some cells due to human error and may consume a lot of time and computing resources.

[0015] Aspects of the present disclosure address the above and other deficiencies by providing contextual answer generation in a document having a table structure (e.g., a spreadsheet). In some implementations, a user may request to fill one or more cells of a spreadsheet. The one or more cells may be one or more blank cells of the spreadsheet (e.g., cells B2, B3 in Table 1). In order to request to fill one or more blank cells, the user may select (e.g., highlight using his mouse cursor) one or more blank cells to be filled. The user may also select other cells of the spreadsheet that will be used as context information in filling the one or more blank cells. A contextual answer generation manager of the computing system may analyze the request to identify contextual information. For example, the contextual answer generation manager may extract a column header and a row header corresponding to each blank cell of the spreadsheet. For example, as shown in Table 1, the user may select cell B2 to fill. The contextual answer generation manager may extract the corresponding column header ("Price") and the corresponding row header ("House 1") as contextual information. A column header is the first cell in a column, and a row header is the first cell in a row. In some implementations, each column header represents an attribute, and each row header represents an object, as described above. The contextual answer generation manager can generate a query based at least in part on the contextual information (eg, attributes and objects). The query can include a string representing an attribute and a string representing an object.

[0016] In some implementations, the contextual answer generation manager can use one or more data sources to perform queries. For example, the contextual answer generation manager can use a web search engine, a website, and / or an external database to perform queries. For example, the contextual answer generation manager can generate a query for cell B2, where the query includes corresponding attributes and objects (price, house 1). The contextual answer generation manager can use a web search engine to perform a query to obtain a response to the query. The contextual answer generation manager can fill the response into a blank cell (e.g., cell B2). Therefore, instead of the user having to manually search / identify each response to fill in the cells of the spreadsheet, the contextual answer generation manager can generate a query based on the contextual information and then fill the response to the query into the cell. Therefore, a lot of time can be saved and human errors can be eliminated.

[0017] In some implementations, it may be beneficial to allow the user to view additional properties and objects related to properties and objects already in the spreadsheet. For example, in Table 1, the user may want to view the price of the third house. In another example, the user may want to view the safety score of House 1. However, this may increase the amount of time spent filling the cells of the spreadsheet. Therefore, in some implementations of the present disclosure, the contextual answer generation manager can automatically (e.g., without user request or instruction) generate additional queries to retrieve responses to fill other cells of the spreadsheet, including column headers (properties) and row headers (objects). This can reduce the time required to determine additional properties and / or objects that will be used in the spreadsheet to fill in more responses, which may be important for the user to make decisions.

[0018] Therefore, providing contextual answer generation in electronic forms can eliminate human errors that may be caused by manual typing and reduce the time and computing resources required to enable users to search electronic form data and populate it with data. In addition, automatic contextual answer generation for additional attributes and / or objects of electronic forms can also improve computing efficiency and reduce the utilization of computing resources.

[0019] Figure 1 An example system architecture 100 according to an implementation of the present disclosure is shown. The system architecture 100 (also referred to herein as a "system") includes at least one client device 110 that can be connected to a server, such as a document platform 120 (e.g., a server), via a network 130. For simplicity, one client device 110 and one document platform 120 are shown connected to the network 130. In practice, there can be more client devices and / or document platforms. In addition, in some cases, the client device can perform one or more functions of the document platform, and the document platform can perform one or more functions of the client device. The client device 110 can access or receive information from the document platform 120. The system architecture 100 can represent a cloud-based environment (e.g., a cloud-based storage platform) that can enable communication between a server hosting the document platform 120 and the client device 110 over the network 130 to store and share electronic documents. Alternatively, the system architecture 100 can be applied to locally interconnected systems. In addition, although some aspects of the present disclosure are described with reference to spreadsheets and document applications that manage spreadsheets, those skilled in the art should understand that the systems, methods, functions, and embodiments of the present disclosure can be applied to any type of electronic document (e.g., including slide presentations, text documents, etc.) and any type of program or service provided by any type of host application.

[0020] In implementations, the network 130 may include a public network (e.g., the Internet), a private network (e.g., a local area network (LAN) or a wide area network (WAN)), a wired network (e.g., Ethernet), a wireless network (e.g., an 802.11 network or a Wi-Fi network), a cellular network (e.g., a long term evolution (LTE) network), routers, hubs, switches, server computers, and / or combinations thereof. The client device 110 may include a computing device such as a personal computer (PC), a laptop computer, a mobile phone, a smart phone, a tablet computer, a notebook computer, a network-connected television, etc. The client device 110 may be associated with one or more users, and the client device 110 may also be referred to as a "device" or a "user device."

[0021] In the illustrated implementation, the document platform 120 can interact with the client device 110 so that the client device 110 can execute an electronic document ("document") application in conjunction with the document platform 120 to manage various documents, including documents having a table structure. For example, the document application can be an online document application. In some implementations, the document application is an electronic spreadsheet application (e.g., an online electronic spreadsheet application). Alternatively, the document application can provide the functionality described herein without using the document platform 120. Still alternatively, the document platform 120 can interact with a web browser 115 (rather than a designated document application) to, for example, present a document, receive user input related to the document, and the like.

[0022] Documents of users of client devices 110 may be stored by document platform 120 in, for example, data repository 140. Figure 1 1 is shown as a single device, but the document platform 120 can be implemented as, for example, a single computing device or multiple distributed computing devices. It should be understood and appreciated that whether a device operates as a server or client device can depend on the specific application being implemented. That is, whether a computing device operates as a client or server can depend on the context of the computing device's role within the application. The relationship of a client device to a server can arise through programs executing on the respective devices and having a client-server relationship with each other.

[0023] As discussed above, the interaction of the client device 110 with the document platform 120 may be implemented through a web browser 115 executed at the client device 110. The term "web browser" is intended to refer to any program that allows a user to browse a markup document (e.g., a web document), whether the browser program is a stand-alone program or an embedded program, such as a browser program included as part of an operating system. In some implementations, as described herein, the document application is implemented as a distributed web application, where portions of the document application are executed at one or more client devices 110 and at the document platform 120. More specifically, the client device 110 may request a document application from the document platform 120. In response, the document platform 120 may send portions of the document application for local execution at the client 110. Thus, the document application may be executed as a distributed application across the document platform 120 and one or more client devices 110. In this way, the client device 110 may not need to install any document application locally to use the document application hosted by the document platform 120.

[0024] In general, functions described in one implementation as being performed by the document platform 120 may also be performed on the client device 110 in other implementations, if appropriate. In addition, functions attributed to a particular component may be performed by different or multiple components operating together. The document platform 120 may also be accessed as a service provided to other systems or devices through appropriate application programming interfaces.

[0025] In implementations of the present disclosure, a "user" may be represented as a single individual. However, other implementations of the present disclosure encompass "users" that are entities controlled by a group of users and / or automated sources. For example, a group of individual users united together as a community in a social network may be considered a "user." In another example, an automated consumer may be an automated ingest pipeline of the document platform 120, such as a topic channel.

[0026] As described herein, a document may be implemented as a distributed web application, where portions of the application are executed at multiple client devices 110 and at a document platform 120 to provide collaboration between multiple users working on a single document. For example, multiple users may edit such a collaborative document simultaneously or concurrently and view each user's edits in real time or near real time (e.g., within a few milliseconds or seconds). When one user edits a document (e.g., a cell of the document), the edit may be sent to the document platform 120 and then forwarded to other collaborative users who are also editing or viewing the electronic form. To this end, the document platform 120 may handle conflicts between collaborative users, such as when two users attempt to edit a particular cell at the same time. For example, the document platform 120 may accept the first edit received, or prioritize collaborative users in a manner such that the edits of a higher priority user override the edits of a lower priority user. If a user's edit is rejected by the document platform 120, the document platform 120 may send a message back to the user informing the user that the edit was rejected. In this way, multiple users may potentially collaborate in real time (or near real time) on a single electronic form. In some implementations, the parties that view and collaborate on a particular document can be specified by the initial creator of the document. For example, the initial creator of the document can be given "administrator" permissions, allowing the creator to specify permissions for each of the other possible collaborators. The initial creator can specify that other collaborators have permissions to do one or more of the following: edit the spreadsheet, view only the spreadsheet, edit specified portions of the spreadsheet, or add additional users to the list of possible collaborators. For example, certain users may be able to edit certain portions of the spreadsheet, while other specified cells or cell ranges will remain "locked" to those users, so that users can view but not edit the locked cells. In some implementations, a document can be designated as a "public" document that anyone can view and / or edit.

[0027] As further shown, the document platform 120 may include a contextual answer generation manager 122 to provide contextual answer generation in a document (e.g., a spreadsheet, a text document including a table, or a slide presentation, etc.). The contextual answer generation manager 122 may, in response to receiving a request from the client device 110 to populate one or more cells of a spreadsheet (e.g., document 124) for a user, analyze the request for contextual information and generate a query to be executed based on the contextual information to populate one or more cells of the document 124. The query may be executed to obtain a response from one or more data sources 150-1 to 150-N.

[0028] In some implementations, the contextual answer generation manager 122 of the computing system can analyze the request to identify contextual information indicating which type of data should be filled in one or more cells of the electronic form. For example, the contextual answer generation manager 122 can extract the column header and row header corresponding to each blank cell of the electronic form. The column header is the first cell in a column, and the row header is the first cell in a row. In some implementations, each column header represents an attribute, and each row header represents an object, as described above. The contextual answer generation manager 122 can generate a query based at least in part on the contextual information (e.g., attributes and objects). The query can include a string representing an attribute and a string representing an object. The contextual answer generation manager 122 can use one or more data sources to perform the query. For example, the contextual answer generation manager 122 can use a web search engine, a website, and / or an external database to perform the query to obtain a response to the query. The contextual answer generation manager 122 can fill the response into the blank cell. In some implementations, the contextual answer generation manager 122 can automatically (e.g., without user request) generate additional queries based on previously generated responses and / or any additional information related to the spreadsheet (e.g., one or more of the existing properties, one or more of the existing objects, a header of the spreadsheet, other populated cells of the spreadsheet, etc.) to populate other blank cells of the spreadsheet, including column headers (properties) and row headers (objects).

[0029] In some implementations, the document 124 may already have a large amount of data (e.g., a large number of columns and / or rows in a spreadsheet). This may result in increased resource consumption, increased costs for acquiring data, and the like. To address this problem, in some implementations, the contextual answer generation manager 122 may enable configurable size limits for the size of the document 124. For example, the contextual answer generation manager 122 may adjust the size of the document 124 based on user input that defines how many rows and / or how many columns the document 124 should include. As another example, the contextual answer generation manager 122 may detect that the document 124 will have a large amount of data (e.g., the amount of data exceeds a threshold amount of data) and notify the user of the large amount of data. The notification may include a request for the user to define how much data is to be included in the document 124. Additionally or alternatively, the maximum size of the document 124 may be a user-defined setting or threshold. Therefore, the contextual answer generation manager 122 may implement functionality that improves computing resource efficiency.

[0030] Continuing with the above description, controls may be provided to the user, allowing the user to make choices about whether and when the systems, programs, or features described herein may be able to collect user information (e.g., information about the user's social network, social behavior, or activities, occupation, the user's preferences, or the user's current location) and whether to send content or communications from the server to the user. In addition, before certain data is stored or used, it may be processed in one or more ways to remove personally identifiable information. For example, the user's identity may be processed so that the user's personally identifiable information cannot be determined, or the user's geographic location for which location information is obtained may be generalized (such as to a city, zip code, or state level) so that the user's specific location cannot be determined. Thus, the user can control what information is collected about the user, how the information is used, and what information is provided to the user.

[0031] Figure 2 is a diagram depicting an example spreadsheet 200 including a set of cells according to an implementation of the present disclosure. Figure 2 An example spreadsheet is shown in , but such examples should not be considered limiting, and any suitable personalized document having a tabular structure is contemplated.

[0032] As shown, the electronic table 200 includes a plurality of cells arranged as a plurality of columns 210A to 210E and a plurality of rows 220-1 to 220-5 that intersect. Although 5 columns and 5 rows are shown, the number of columns and rows should not be considered limiting. At least some of the cells have values ​​entered therein. The electronic table 200 can be arranged so that the values ​​entered in a particular row or column all have some common meaning, such as belonging to a common data category or all related to a certain thing or theme. The electronic table 200 can also be related to an overall thing or theme.

[0033] As shown, electronic form 200 can be a decision matrix for making decisions on buying a car. Each row 220-2 to 220-5 is designated for different objects (e.g., car types). Row 220-2 can be designated for object "BMW". Row 220-3 can be designated for object "Mercedes". Row 220-4 can be designated for object "Lexus". Each column 210B to 210E is designated for different attributes corresponding to an object. For example, column 210B can be designated for "number of seats". The text "number of seats" is typed into a cell with an address defined by row 220-1 and column 210B, to indicate that the data retained in other cells of column 210B corresponds to the number of seats (e.g., the corresponding cells with addresses defined by column 210B and row 220-2 to 220-5). Therefore, column 210B is defined as information of the "number of seats" type, and includes cells with values ​​indicating the corresponding number of seats of various cars (e.g., BMW, Mercedes, Lexus).

[0034] Column 210C may be designated for "horsepower." The text "horsepower" is typed into a cell having an address defined by row 220-1 and column 210C to indicate that the data held in other cells of column 210C corresponds to horsepower values ​​(e.g., corresponding cells having addresses defined by column 210C and rows 220-2 through 220-5). Thus, column 210C is defined as "horsepower" type information and includes a plurality of cells having values ​​indicating corresponding horsepower for various automobiles (e.g., BMW, Mercedes, Lexus).

[0035] Column 210D may be designated for "mileage." The text "mileage" is typed into a cell having an address defined by row 220-1 and column 210D to indicate that the data retained in other cells of column 210D corresponds to mileage values ​​(e.g., corresponding cells having addresses defined by column 210D and rows 220-2 through 220-5). Thus, column 210D is defined as "mileage" type information and includes a plurality of cells having values ​​indicating corresponding horsepower of various automobiles (e.g., BMW, Mercedes, Lexus).

[0036] The request can be generated by the context answer manager (e.g. Figure 1 Contextual answer generation manager 122) via a user device (e.g., Figure 1 A user interface (e.g., Figure 1The user interface may display spreadsheet 200, and the request may identify one or more cells of spreadsheet 200 to be filled. For example, a user may request to fill a blank cell (e.g., a cell corresponding to column 210B and row 220-2) of spreadsheet 200 (e.g., by highlighting or otherwise selecting or identifying the cell using a cursor and / or cursor control device). The contextual answer generation manager may analyze the request for contextual information. For example, the contextual answer generation manager may extract a string representing the corresponding attributes and objects of the requested cell. For example, Figure 2 As shown, the contextual answer generation manager can identify column headers and row headers corresponding to blank cells at column 210B and row 220-2. The corresponding column header is column 210B ("Number of Seats"), and the corresponding row header is row 220-2 ("BMW"). The contextual answer generation manager can generate a query based on the contextual information. The query can include a string with a corresponding attribute ("Number of Seats") and a corresponding object ("BMW"). In some embodiments, specified header names are used for attribute and object strings (e.g., when these header names clearly identify the data type they represent). Alternatively (e.g., if any header names are ambiguous and do not clearly identify the data type they represent), a semantic analysis can be performed based on the existing content of the spreadsheet to derive the objects and attributes of the query. The contextual answer generation manager can use one or more data sources (e.g., Figure 1 The contextual answer generation manager 122 may initiate execution of a query using a data source 150-1 to 150-N. For example, the contextual answer generation manager may use a web search engine, a website, and / or an external database to execute the query. The response received in response to executing the query may be used by the contextual answer generation manager to populate the requested cell. In some implementations, the contextual answer generation manager 122 may automatically (e.g., without user requests regarding other cells) generate additional queries to populate other cells of the spreadsheet, including column headers (attributes) and row headers (objects). More details about the contextual answer generation manager are described below.

[0037] Figure 3 A flowchart of a method for generating contextual answers in a document having a table structure according to an implementation of the present disclosure is depicted. The method 300 may be performed by processing logic, which may include hardware (circuitry, dedicated logic, etc.), software (e.g., instructions running on a processing device), or a combination thereof. In one implementation, some or all of the operations of the method 300 may be performed by Figure 1 The context answer generation manager 122 executes.

[0038] At block 310, processing logic receives a request to populate one or more cells in a set of cells of a document. In some embodiments, the document may be Figure 1 In some embodiments, the document may have a table structure (e.g., may include multiple intersecting rows and columns, such as in Figure 2 In some embodiments, the processing logic may be provided via a device associated with the user (e.g., Figure 1 The client device 110) via a graphical user interface (e.g., Figure 1 In some embodiments, one or more cells of the document to be filled may correspond to an attribute. Specifically, each cell of the document may have a corresponding column header. The column header may be the first cell in a column. For example, Figure 2 As shown, the cell at column 210B and row 220-2 may correspond to a column header (e.g., the first cell in column 210B—"Number of Seats"). In some embodiments, one or more cells of a document may also correspond to an object. Specifically, each cell of a document may have a corresponding row header. A row header may be the first cell in a row. For example, Figure 2As shown, the cell at column 210B and row 220-2 may correspond to a row header (e.g., the first cell in row 220-2—"BMW"). In some embodiments, processing logic may receive a request from a user. In some embodiments, the request may include a set of selections. The request may include a selection of one or more cells to be filled. The request may also include a selection of other cells of the document to be used as context information for filling one or more cells. Receiving a request from a user may include processing logic detecting that a user clicks, highlights, and / or otherwise identifies (e.g., types a question mark) one or more cells. In some embodiments, the user interface may also include one or more user interface elements, such as one or more buttons, one or more check boxes, etc., thereby allowing a user to specify (e.g., via one or more user interface elements, such as one or more buttons, one or more check boxes, etc.) whether to identify a cell for filling data or for use as context information. In some embodiments, receiving a request from a user may include receiving a voice query (e.g., received by a voice-controlled digital assistant). Processing logic may perform a suitable speech-to-text conversion technique to convert the voice query into a text form for querying. In some embodiments, processing logic does not receive a request to fill one or more cells. In response to the creation and / or opening of a spreadsheet, processing logic may identify a plurality of blank cells in the document (e.g., identifying each cell of the spreadsheet that has no text / string entered into it). Processing logic may automatically perform any of the operations at blocks 320 to 390 in response to identifying blank cells and / or corresponding column headers and / or corresponding row headers in the document.

[0039] At block 320, processing logic analyzes the received request. Analyzing the request may include identifying one or more cells to be filled based on the selection of one or more cells included in the request. Processing logic may identify corresponding attributes and objects (e.g., corresponding column headers and corresponding row headers) for each cell to be filled. For example, if the request is to fill a cell located at Figure 2 If the processing logic identifies the cell at column 210B and row 220-2 of the table, the processing logic can identify the first cell in column 210B, which corresponds to the column header "Number of Seats". The processing logic can also identify the first cell in row 220-2, which corresponds to the row header "BMW". The processing logic can use the attributes and objects as context information to generate the query.

[0040] At block 330, processing logic generates a query based on the context information identified at block 320 (e.g., the attributes and objects identified for each cell to be filled). Processing logic may generate the query by extracting a string identifying an attribute and a string identifying an object from the corresponding column header and row header. Processing logic may input the extracted string into a data access query (e.g., "BMW", "how many seats", etc.). In some embodiments, the data access query may be in a structured format (e.g., SQL format), a semi-structured format, or a free text format.

[0041] At box 340, processing logic initiates execution of the query. Initiating execution of the query may include executing the query using one or more data sources that may be accessed via a network (e.g., the Internet) or accessed locally. In some embodiments, the query may be executed using one data source or using a combination of data sources. The data sources may include a web search engine, a website, an external database, and / or any other external data source. In some embodiments, a user may specify one or more data sources to be used to execute the query. The user interface may allow the user to type or select (e.g., in one or more cells of a spreadsheet or in one or more fields outside of a spreadsheet) one or more data sources to be used to execute the query or to provide voice input identifying one or more data sources to be used to execute the query. The data sources may include, for example, stored by the user in a web browser. Figure 1 For example, one or more data sources may be Figure 1 Data sources 150-1 to 150-N. In another example, one or more data sources may be or include a document currently opened (e.g., displayed) in an application or window on the user's system. One or more data sources may include either or both of structured documents and unstructured documents. The query may generate one or more answers. Each answer may be associated with a relevance score (the relevance score is determined, for example, based on information extraction techniques and / or natural language processing techniques such as named entity recognition or sentiment analysis). For example, using named entity recognition, the relevance score associated with each answer may include an accuracy score, a recall score, and / or an F1 score for each answer. If more than one answer is generated, the processing logic may select the answer with the best (e.g., highest) relevance score.

[0042] At block 350, processing logic may cause the user interface to be modified to populate the response received from the execution of the query. Causing the user interface to be modified may include processing logic populating the response in one of the one or more cells requested to be populated at block 310. In some embodiments, processing logic may populate the response by entering a string (e.g., text) representing the response into the cell. For example, referring to Figure 2 , the processing logic may query the response to populate the cells corresponding to column 210B and row 220-2 ("Number of seats", "BMW"). The processing logic may populate the cells with the response received for the query using one or more data sources. For example, the processing logic may populate the string "5" into the cells corresponding to column 210B and row 220-2 as a response to the query ("Number of seats", "BMW").

[0043] At block 360 , processing logic determines additional context information for populating other cells of the document. Processing logic may determine the additional context information based at least in part on the responses populated in the cells at block 350 .

[0044] In some embodiments, processing logic may identify a corresponding attribute of the response (e.g., a corresponding column header). Processing logic may also identify a corresponding object of the response (e.g., a corresponding row header). Processing logic may identify an object of the document that is different from the object corresponding to the response (e.g., another row header). Identifying an object that is different from the object corresponding to the response may include identifying another row header of the document (e.g., the first cell in a row of the document). Processing logic may generate another query using the corresponding attribute and the different object identified as other contextual information to be used. For example, Figure 2 As shown, processing logic may identify a corresponding attribute of a response (not shown) populated in a cell corresponding to column 210-B and row 220-2. The corresponding attribute is "Number of Seats". Processing logic may identify a corresponding object of the response at the cell, such as "BMW". Processing logic may identify another object of spreadsheet 200 that is different from the object "BMW". For example, processing logic may identify "Mercedes", which is a row header for row 220-3. Processing logic may use the attributes "Number of Seats" and "Mercedes" to generate another query that will be used to populate other cells (e.g., responses) of the document, such as the cell corresponding to column 210B and row 220-3.

[0045] In some embodiments, processing logic may generate another query using the attribute "number of seats" and the object "Mercedes" to add additional column headers and / or row headers to the document (e.g., new attributes and / or objects to be added to the document). For example, processing logic may generate another query using "number of seats" and "Mercedes" to populate column cell 210E (which does not include a header). As discussed below, column cell 210E may be populated with a column header related to the content of the spreadsheet (such as another related attribute, such as "car image"). In another example, processing logic may generate another query using "number of seats" and "Mercedes" to populate row cell 220-5 (which does not include a header). As discussed below, row cell 220-5 may be populated with a header related to the content of the spreadsheet (such as another related object, such as "Tesla"). For example, another query may identify the attribute "number of seats" and request information for objects that are similar (e.g., the same object type) to one or more of the existing objects 220-2, 220-3, 220-4. After obtaining the response, the processing logic may identify an object that was not previously represented by a row header and is similar (e.g., the same object type) to one or more of the existing objects 220-2, 220-3, 220-4, and add the object as an additional row header 220-5. The processing logic may then generate another query using the new object and the existing attributes to obtain information for the attributes, and fill in the corresponding cells corresponding to the new object with the obtained information.

[0046] In some embodiments, processing logic may identify a corresponding attribute of the response (e.g., a corresponding column header). Processing logic may also identify a corresponding object of the response (e.g., a corresponding row header). Processing logic may identify an attribute of the document that is different from the attribute corresponding to the response (e.g., another column header). Processing logic may generate another query using the different attribute and the corresponding object identified as additional contextual information. For example, Figure 2 As shown, processing logic can identify corresponding attributes of responses (not shown) populated in cells corresponding to columns 210-B and 220-2. The corresponding attribute is "number of seats". Processing logic can identify an attribute different from "number of seats". For example, processing logic can identify "horsepower", which is column header 210C. Processing logic can also identify a corresponding object of the response, such as "BMW". In some embodiments, processing logic can use the attribute "horsepower" and the object "BMW" to generate another query that will be used to populate other cells of the document (e.g., responses), such as cells corresponding to column 210C and row 220-2.

[0047] In some embodiments, processing logic may generate another query using the attribute "horsepower" and the object "BMW" to populate other column headers and / or row headers of the document (e.g., other attributes and / or objects of the document). For example, processing logic may generate another query using "horsepower" and "BMW" to populate column cell 210E. As discussed below, column cell 210E may be populated with a column header associated with the spreadsheet (such as another associated attribute, such as "car image"). For example, another query may identify the object "BMW" and request information about attributes associated with the object "BMW" or its object type (e.g., object type "car") and in addition to one or more of the existing attributes 210B, 210C, and 210D. Upon obtaining a response, processing logic may identify an attribute that was not previously represented by the column headers of the existing attributes 210B, 210C, and 210D and is associated with the object "BMW" or its object type (e.g., object type "car"), and add the attribute as an additional column header 210E. Processing logic may then generate another query using the new attributes and the existing object to obtain the object's information and populate the corresponding cells with the obtained information.

[0048] In some embodiments, when creating a query to obtain a new object or new attribute, the processing logic uses additional information (e.g., the title of the spreadsheet, a description provided by the user to indicate the purpose of the spreadsheet, or any other information) to determine what additional objects and / or attributes should be added to the spreadsheet to help the user complete their task. For example, if a user creates a spreadsheet for buying a car, where the rows have different car brands and the columns have different attributes of the car brands, the processing logic can determine which additional car brands may be of interest to the user (e.g., have similar prices, number of seats, etc.) and which additional attributes may be important to the user when the user decides which car to buy based on the contextual information. As discussed above, the contextual information may include, for example, one or more of the existing objects, one or more of the existing attributes, any previously generated responses, and / or any additional information in the spreadsheet, and may be provided as part of the query. The query may be, for example, a structured query, a semi-structured query, or a free text query.

[0049] As discussed above, at block 370 , processing logic generates another query based at least in part on the other contextual information determined at block 360 .

[0050] At block 380, processing logic initiates execution of another query. Initiating execution of another query may include executing the query using one or more data sources. For example, the one or more data sources may be Figure 1In some embodiments, a query may be performed using one data source or a combination of data sources. The data source may include a web search engine, a website, an external database, and / or any other external data source. In some embodiments, a user may specify one or more data sources to be used to perform the query.

[0051] At block 390, processing logic may cause the user interface to be modified to populate another response received from execution of another query. Processing logic may populate the other response into one of the cells of the document associated with the corresponding column header and row header. In some embodiments, processing logic may populate the other response by entering a string (e.g., text) representing the other response into the cell.

[0052] Figure 4 is a block diagram showing an exemplary computer system according to an implementation of the present disclosure. Computer system 400 may be Figure 1 The document platform 120 or the client device 110 in the embodiment of the present invention. The machine can operate in the capacity of a server or an endpoint machine in an endpoint-server network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine can be a television, a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a cellular phone, a web appliance, a server, a network router, a switch or a bridge, or any machine capable of executing a set of instructions (sequential instructions or other instructions) that specify actions to be taken by the machine. In addition, while only a single machine is shown, the term "machine" should also be understood to include any collection of machines that individually or jointly execute one (or more) sets of instructions to perform any one or more of the methodologies discussed herein.

[0053] The example computer system 400 includes a processing device (processor) 402, a main memory 404 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM), such as synchronous DRAM (SDRAM), double data rate (DDR SDRAM) or DRAM (RDRAM), etc.), a static memory 406 (e.g., flash memory, static random access memory (SRAM), etc.), and a data storage device 418 that communicate with each other via a bus 440.

[0054] Processor (processing device) 402 represents one or more general-purpose processing devices, such as a microprocessor, a central processing unit, etc. More specifically, processor 402 may be a complex instruction set computing (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, or a processor that implements other instruction sets or a processor that implements a combination of instruction sets. Processor 402 may also be one or more special-purpose processing devices, such as an application-specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), a network processor, etc. Processor 402 is configured to execute instructions 405 for performing the operations discussed herein (e.g., for predicting channel program ratings).

[0055] The computer system 400 may also include a network interface device 408. The computer system 400 may also include a video display unit 410 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an input device 412 (e.g., a keyboard and alphanumeric keypad, a motion sensing input device, a touch screen), a cursor control device 414 (e.g., a mouse), and a signal generating device 420 (e.g., a speaker).

[0056] The data storage device 418 may include a non-transitory machine-readable storage medium 424 (also a computer-readable storage medium) on which is stored one or more instruction sets 405 embodying any one or more of the methods or functions described herein (e.g., for obtaining optimized encoder parameter settings). During execution of the instructions by the computer system 400, the instructions may also reside completely or at least partially within the main memory 404 and / or within the processor 402, which also constitute machine-readable storage media. The instructions may also be sent or received over the network 430 via the network interface device 408.

[0057] In one implementation, instructions 405 include instructions for designating an oral statement as a polling question. Although computer-readable storage medium 424 (machine-readable storage medium) is shown as a single medium in the exemplary implementation, the terms "computer-readable storage medium" and "machine-readable storage medium" should be understood to include a single medium or multiple media (e.g., a centralized or distributed database, and / or associated caches and servers) that store one or more sets of instructions. The terms "computer-readable storage medium" and "machine-readable storage medium" should also be understood to include any medium that can store, encode, or carry a set of instructions for execution by a machine and cause the machine to perform any one or more of the methods of the present disclosure. Therefore, the terms "computer-readable storage medium" and "machine-readable storage medium" should be understood to include, but are not limited to, solid-state memory, optical media, and magnetic media.

[0058] References throughout this specification to "one implementation" or "an implementation" mean that a particular feature, structure, or characteristic described in connection with that implementation is included in at least one implementation. Thus, the appearances of the phrase "in one implementation" or "in an implementation" in various places throughout this specification may, but do not necessarily, refer to the same implementation, depending on the circumstances. Furthermore, particular features, structures, or characteristics may be combined in any suitable manner in one or more implementations.

[0059] To the extent that the terms "includes," "comprising," "having," "containing," variations thereof, and other similar words are used in the detailed description or claims, these terms are intended to be inclusive in a manner similar to the term "comprising" as an open transitional word and do not exclude any additional or other elements.

[0060] As used in this application, the terms "component", "module", "system", etc. are generally intended to refer to a computer-related entity, that is, hardware (e.g., circuitry), software, a combination of hardware and software, or an entity associated with an operating machine having one or more specific functions. For example, a component can be, but is not limited to, a process, a processor, an object, an executable program, an execution thread, a program, and / or a computer running on a processor (e.g., a digital signal processor). For example, both an application running on a controller and the controller can be components. One or more components can reside within a process and / or execution thread, and a component can be confined to one computer and / or distributed between two or more computers. In addition, a "device" can appear in the following forms: specially designed hardware; general-purpose hardware specialized by executing software on it that enables the hardware to perform specific functions (e.g., generating points of interest and / or descriptors); software on a computer-readable medium; or a combination thereof.

[0061] The aforementioned systems, circuits, modules, etc. have been described with respect to the interaction between several components and / or blocks. It will be appreciated that such systems, circuits, components, blocks, etc. may include those components or specified subcomponents, some of the specified components or subcomponents, and / or additional components, and according to various permutations and combinations of the aforementioned. Subcomponents may also be implemented as components (hierarchical structures) that are communicatively coupled to other components rather than included within a parent component. In addition, it should be noted that one or more components may be combined into a single component that provides aggregation functionality or may be divided into several separate subcomponents, and any one or more intermediate layers such as a management layer may be provided to communicatively couple to such subcomponents in order to provide integrated functionality. Any component described herein may also interact with one or more other components that are not specifically described herein but are known to those skilled in the art.

[0062] In addition, the words "example" or "exemplary" are used herein to mean serving as an example, instance or illustration. Any aspect or design described herein as "exemplary" is not necessarily to be understood as being preferred or advantageous over other aspects or designs. Rather, the use of the words "example" or "exemplary" is intended to present concepts in a specific manner. As used in this application, the term "or" is intended to mean an inclusive "or" rather than an exclusive "or". That is, unless otherwise specified or clearly seen from the context, "X adopts A or B" is intended to mean any natural inclusive arrangement. That is, if X adopts A; X adopts B; or X adopts both A and B, then "X adopts A or B" is satisfied in any of the foregoing cases. In addition, unless otherwise specified or clearly seen from the context that it is for a singular form, the articles "a" and "an" used in this application and the appended claims should generally be understood to mean "one or more".

[0063] Finally, implementations described herein include the collection of data describing users and / or user activities. In one implementation, such data is collected only if the user consents to the collection of such data. In some implementations, the user is prompted to explicitly allow data collection. In addition, the user may choose to participate or not participate in such data collection activities. In one implementation, the collected data is anonymized before any analysis is performed to obtain any statistical patterns, so that the identity of the user cannot be determined from the collected data.

Claims

1. A method comprising: Receiving, via a user interface of a device associated with a user, a request to populate one or more cells of a plurality of cells of a document having a table structure, wherein the one or more cells correspond to a first attribute associated with a first column and a first object associated with a first row; analyzing the request to obtain context information indicating the first attribute and the first object; generating a query based at least in part on the contextual information; Initiating execution of the query using one or more data sources to obtain a response; causing the user interface to be modified to populate the one or more cells corresponding to the first attribute and the first object with the response; determining second context information based on the response, the second context information indicating a second attribute and a second object; generating a second query based at least in part on the second contextual information; initiating execution of the second query using one or more data sources to obtain a second response; as well as The user interface is caused to be modified to populate the second response in one or more cells corresponding to the second attribute and the second object. 2 . The method of claim 1 , wherein the request comprises a first selection and a second selection, wherein the first selection indicates the one or more cells to be filled, and wherein the second selection indicates the context information. 3 . The method of claim 1 , wherein the one or more data sources include at least one of a web search engine, a website, or an external database. 4 . The method of claim 1 , wherein the first object is the same as the second object, and wherein each of the first object and the second object is associated with the first row.

5. The method of claim 1, wherein the first object is different from the second object, and wherein each of the first object and the second object is associated with a different row.

6. The method of claim 1, wherein the first attribute is the same as the second attribute, and wherein each of the first attribute and the second attribute is related to the first column.

7. The method of claim 1, wherein the first attribute is different from the second attribute, and wherein each of the first attribute and the second attribute is associated with a different column.

8. The method of claim 1, wherein receiving the request comprises detecting a cursor highlighting the one or more cells of the plurality of cells.

9. The method of claim 1, wherein the user interface of the device associated with the user includes an area presenting the plurality of cells of the document, the plurality of cells being arranged in intersecting rows and columns.

10. A system comprising: Memory device; as well as A processing device coupled to the memory device, the processing device configured to perform operations including: Receiving, via a user interface of a device associated with a user, a request to populate one or more cells of a plurality of cells of a document having a table structure, wherein the one or more cells correspond to a first attribute associated with a first column and a first object associated with a first row; analyzing the request to obtain context information indicating the first attribute and the first object; generating a query based at least in part on the contextual information; Initiating execution of the query using one or more data sources to obtain a response; causing the user interface to be modified to populate the one or more cells corresponding to the first attribute and the first object with the response; determining second context information based on the response, the second context information indicating a second attribute and a second object; generating a second query based at least in part on the second contextual information; initiating execution of the second query using one or more data sources to obtain a second response; as well as The user interface is caused to be modified to populate the second response in one or more cells corresponding to the second attribute and the second object.

11. The system of claim 10, wherein the request includes a first selection and a second selection, wherein the first selection indicates the one or more cells to be filled, and wherein the second selection indicates the context information.

12. The system of claim 10, wherein the one or more data sources include at least one of a web search engine, a website, or an external database.

13. The system of claim 10, wherein the first object is the same as the second object, and wherein each of the first object and the second object is associated with the first row.

14. The system of claim 10, wherein the first object is different from the second object, and wherein each of the first object and the second object is associated with a different row.

15. The system of claim 10, wherein the first attribute is the same as the second attribute, and wherein each of the first attribute and the second attribute is associated with the first column.

16. The system of claim 10, wherein the first attribute is different from the second attribute, and wherein each of the first attribute and the second attribute is associated with a different column.

17. The system of claim 10, wherein receiving the request comprises detecting a cursor highlighting the one or more cells of the plurality of cells.

18. The system of claim 10, wherein the user interface of the device associated with the user includes an area presenting the plurality of cells of the document, the plurality of cells being arranged in intersecting rows and columns.

19. A non-transitory computer-readable storage device comprising program instructions executable by one or more processors, the program instructions, when executed, causing the one or more processors to perform operations comprising: Receiving, via a user interface of a device associated with a user, a request to populate one or more cells of a plurality of cells of a document having a table structure, wherein the one or more cells correspond to a first attribute associated with a first column and a first object associated with a first row; analyzing the request to obtain context information indicating the first attribute and the first object; generating a query based at least in part on the contextual information; Initiating execution of the query using one or more data sources to obtain a response; causing the user interface to be modified to populate the one or more cells corresponding to the first attribute and the first object with the response; determining second context information based on the response, the second context information indicating a second attribute and a second object; generating a second query based at least in part on the second contextual information; initiating execution of the second query using one or more data sources to obtain a second response; as well as The user interface is caused to be modified to populate the second response in one or more cells corresponding to the second attribute and the second object.

20. The non-transitory computer-readable storage device of claim 19, wherein the first object is different from the second object, wherein each of the first object and the second object is associated with a different row, wherein the first attribute is the same as the second attribute, and wherein each of the first attribute and the second attribute is associated with the first column.