ANALYSIS OF LARGE BODIES OF TEXTUAL DATA

In various example embodiments, a textual identification system is configured to receive a set of search terms and identify a set of textual data based on the search terms. The textual identification system retrieves a data structure including textual identifications for the set of textual data and processes the data structure to generate a modified data structure. The textual identification system sums rows within the modified data structure and identifies one or more elements of interest. The textual identification system then causes presentation of the elements of interest in a first portion of a graphical user interface and the textual identifications for the set of textual data in a second portion of the graphical user interface.

Skip to: Description  ·  Claims  · Patent History  ·  Patent History
Description
PRIORITY APPLICATION

This application claims priority to, and is a continuation of U.S. patent application Ser. No. 15/678,874, filed Aug. 16, 2017, which claims priority to U.S. Provisional Application Ser. No. 62/424,844, filed Nov. 21, 2016, the disclosures of which are incorporated herein in their entirety by reference.

TECHNICAL FIELD

The subject matter disclosed herein generally relates to machines configured to the technical field of special-purpose machines that facilitate analysis of large bodies of textual data including computerized variants of such special-purpose machines and improvements to such variants, and to the technologies by which such special-purpose machines become improved compared to other special-purpose machines that facilitate analysis of large bodies of textual data. Embodiments of the present disclosure relate generally to searching large sets of data and, more particularly, but not by way of limitation, to a system and method of identifying documents and additional elements of interest based on search terms.

BACKGROUND

Machine learning processes are often useful in making predictions based on data sets. Users may want to explore a large quantity of text or documents as part of a data set. Typically, an individual performs a series of searches, with the help of a search engine or search tool, to target individual specified aspects, things, entities, or people referenced in the documents. The series of searches may provide a separate lists of results from which the user manually identifies relevant documents. However, manual review of results within the list is often time consuming and prohibitive where the list of results is large.

BRIEF DESCRIPTION OF THE DRAWINGS

Various ones of the appended drawings merely illustrate example embodiments of the present disclosure and cannot be considered as limiting its scope.

FIG. 1 is a block diagram illustrating a networked system, according to some example embodiments.

FIG. 2 is a block diagram illustrating various modules of a textual data identification system, according to various example embodiments.

FIG. 3 is a flowchart illustrating individual operations of a method for processing and identifying elements of interest from content within a set of retrieved text sets, according to various example embodiments.

FIG. 4 is a graphical user interface displaying textual identifications and elements of interest in differing portions based on received search terms, according to various example embodiments.

FIG. 5 is a flowchart illustrating operations of a method of processing and identifying elements of interest from content within a set of retrieved text sets, according to various example embodiments.

FIG. 6 is a flowchart illustrating operations of a method of processing and identifying elements of interest from content within a set of retrieved text sets, according to various example embodiments.

FIG. 7 is a flowchart illustrating operations of a method for processing and identifying elements of interest from content within a set of retrieved text sets, according to various example embodiments.

FIG. 8 is a block diagram illustrating an example of a software architecture that may be installed on a machine, according to some example embodiments.

FIG. 9 illustrates a diagrammatic representation of a machine in the form of a computer system within which a set of instructions may be executed for causing the machine to perform any one or more of the methodologies discussed herein, according to an example embodiment.

The headings provided herein are merely for convenience and do not necessarily affect the scope or meaning of the terms used.

DETAILED DESCRIPTION

The description that follows includes systems, methods, techniques, instruction sequences, and computing machine program products that embody illustrative embodiments of the disclosure. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide an understanding of various embodiments of the inventive subject matter. It will be evident, however, to those skilled in the art, that embodiments of the inventive subject matter may be practiced without these specific details. In general, well-known instruction instances, protocols, structures, and techniques are not necessarily shown in detail.

Example embodiments described herein disclose a textual identification system configured to identify texts within a set of textual data and elements of interest from within the identified texts. In some instances, the textual identification system provides unique and semantically meaningful elements of interest from within the textual data to expand or focus searches performed on the set of textual data. The identification of elements of interest may eliminate or consolidate deviations within usage, context, and spelling of the elements of interest to improve types, accuracy, and semantically related content of the elements of interest with respect to an initial set of search terms.

For example, in some embodiments, the textual identification system may initially present a graphical user interface at a client device. Upon receiving search terms (e.g., selections from predetermined terms or freely entered term), the textual identification system identifies texts (e.g., text documents, video documents, audio documents, publications, or multimedia documents) from textual data accessible by the textual identification system. Based on the search terms and the identified texts, the textual identification system identifies and presents elements of interest (e.g., additional terms) associated with, or included in, the identified texts. The textual identification system parses the texts within the set of textual data to identify terms contained within the texts, the context in which the terms are used, deviations among usage and form of the terms, and meaningful semantic relationships among two or more terms within the texts. Based on the context, deviations, and meaningful semantic relationships of terms within the identified texts, the textual identification system generates a list of elements of interest and presents the elements of interest along with identifications of the identified texts.

The textual identification system provides technical improvements to previous search suggestion systems by identifying multiple disparate contextual uses and semantically meaningful combinations of terms within identified texts and with respect to the search terms used to identify the texts. Use of the indices, matrices, and data structures described herein may also increase the speed and precision with which additional terms are identified. Further, the textual identification system may better identify additional terms by merging or eliminating presentation of additional terms to remove extraneous terms, merge deviant uses of terms, and merging or separating terms based on contextual or semantically meaningful usage, thereby improving previous suggested search systems.

Examples merely typify possible variations. Unless explicitly stated otherwise, components and functions are optional and may be combined or subdivided, and operations may vary in sequence or be combined or subdivided. In the following description, for purposes of explanation, numerous specific details are set forth to provide a thorough understanding of example embodiments. It will be evident to one skilled in the art, however, that the present subject matter may be practiced without these specific details.

With reference to FIG. 1, an example embodiment of a high-level client-server-based network architecture 100 is shown. A networked system 102, in the example forms of a network-based recommendation system, provides server-side functionality via a network 104 (e.g., the Internet or wide area network (WAN)) to one or more client devices 110. FIG. 1 illustrates, for example, a web client 112 (e.g., a browser, such as the Internet Explorer® browser developed by Microsoft® Corporation of Redmond, Wash. State), a client application 114, and a programmatic client 116 executing on client device 110.

The client device 110 may comprise, but is not limited to, a mobile phone, desktop computer, laptop, portable digital assistants (PDAs), smart phones, tablets, ultra books, netbooks, laptops, multi-processor systems, microprocessor-based or programmable consumer electronics, game consoles, set-top boxes, or any other communication device that a user may utilize to access the networked system 102. In some embodiments, the client device 110 may comprise a display module (not shown) to display information (e.g., in the form of user interfaces). In further embodiments, the client device 110 may comprise one or more of a touch screens, accelerometers, gyroscopes, cameras, microphones, global positioning system (GP S) devices, and so forth. The client device 110 may be a device of a user that is used to perform a transaction involving digital items within the networked system 102. One or more users 106 may be a person, a machine, or other means of interacting with client device 110. In embodiments, the user 106 is not part of the network architecture 100, but may interact with the network architecture 100 via client device 110 or another means. For example, one or more portions of network 104 may be an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WWAN), a metropolitan area network (MAN), a portion of the Internet, a portion of the Public Switched Telephone Network (PSTN), a cellular telephone network, a wireless network, a WiFi network, a WiMax network, another type of network, or a combination of two or more such networks.

Each of the client device 110 may include one or more applications (also referred to as “apps”) such as, but not limited to, a web browser, messaging application, electronic mail (email) application, and the like.

One or more users 106 may be a person, a machine, or other means of interacting with the client device 110. In example embodiments, the user 106 is not part of the network architecture 100, but may interact with the network architecture 100 via the client device 110 or other means. For instance, the user provides input (e.g., touch screen input or alphanumeric input) to the client device 110 and the input is communicated to the networked system 102 via the network 104. In this instance, the networked system 102, in response to receiving the input from the user, communicates information to the client device 110 via the network 104 to be presented to the user. In this way, the user can interact with the networked system 102 using the client device 110.

An application program interface (API) server 120 and a web server 122 are coupled to, and provide programmatic and web interfaces respectively to, one or more application servers 140. The application servers 140 may host one or more publication systems comprising a textual identification system 150, which may comprise one or more modules or applications and which may be embodied as hardware, software, firmware, or any combination thereof. The application servers 140 are, in turn, shown to be coupled to one or more database servers 124 that facilitate access to one or more information storage repositories or database(s) 126. In an example embodiment, the databases 126 are storage devices that store information to be posted (e.g., publications or listings) to the networked system 102. The databases 126 may also store digital item information in accordance with example embodiments.

Additionally, a third-party application 132, executing on third-party server(s) 130, is shown as having programmatic access to the networked system 102 via the programmatic interface provided by the API server 120. For example, the third-party application 132, utilizing information retrieved from the networked system 102, supports one or more features or functions on a website hosted by the third party. The third-party website, for example, provides one or more functions that are supported by the relevant systems or servers of the networked system 102.

The textual identification system 150 provides functionality operable to identify and retrieve documents or data and elements of interest in response to receiving search terms. For example, the textual identification system 150 may access sets of data (e.g., document corpora) stored in a structured format from the databases 126, the third-party servers 130, the client device 110, and other sources. In some example embodiments, the textual identification system 150 analyzes the set of data in order to determine portions of the data associated with the search terms and additional terms (e.g., elements of interest).

Further, while the network architecture 100 shown in FIG. 1 employs a client-server architecture, the present inventive subject matter is of course not limited to such an architecture, and could equally well find application in a distributed, or peer-to-peer, architecture system, for example. The textual identification system 150 could also be implemented as standalone software programs, which do not necessarily have networking capabilities.

Additionally, a third-party application 132, executing on a third-party server(s) 130, is shown as having programmatic access to the networked system 102 via the programmatic interface provided by the API server 120. For example, the third-party application 128, utilizing information retrieved from the networked system 102, may support one or more features or functions on a website hosted by the third party. The third-party website may, for example, provide one or more promotional, marketplace, or payment functions that are supported by the relevant applications of the networked system 102.

FIG. 2 is a block diagram illustrating components of the textual identification system 150. Components of the textual identification system 150 configure the textual identification system 150 to access sets of textual data to identify texts or text sets within the textual data, identify data elements within the texts, and identify elements of interest based on data structures generated from the set of textual data. In some embodiments, the components configure the textual identification system 150 to generate initial data structures and modify the data structures to process the data within the data structure; increase accuracy and efficacy of elements of interest identified from the texts; and increase the speed with which a machine forming all or part of the textual identification system 150 identifies and presents the elements of interest at the machine. In order to perform these operations, the textual identification system 150 comprises an access component 210, a document component 220, a database component 230, an element component 240, a presentation component 250, a context component 260, and the normalization component 270. Any one or more of these components may be implemented using one or more processors and hence may include one or more processors (e.g., by configuring such one or more processors to perform functions described for that component).

The access component 210 accesses or otherwise receives selections of at least one document corpus from a set of document corpora. The access component 210 may access the set of textual corpora by accessing a set of metadata identifying the set of textual corpora. In some instances, the access component 210 accesses the set of textual corpora by accessing one or more database directly or via a network connection. The access component 210 may also access or otherwise receive one or more search terms within a graphical user interface. In some embodiments, the access component 210 retrieves a data structure including textual identifications for a set of textual data and an indication of one or more data elements within one or more texts included in the set of textual data.

The document component 220 identifies a set of textual data based on one or more search terms. The document component 220 may use search algorithms to identify the set of textual data based on an index of keywords associated with the content and metadata of the document. In some embodiments, the document component 220 dynamically partitions the set of textual data to identify a textual, textual component, a text or text set within a textual corpus, or a textual corpus containing the set of documents associated with the one or more search terms. In some instances, the document component 220 partitions a set of textual corpora or merges two or more textual corpora based on search terms received from the access component 210.

The database component 230 generates data structures and modified data structures. In some embodiments, the database component 230 generates data structures including textual identifications for texts within the set of textual data. The data structures may also include indications of one or more data elements within the texts. The data elements may be words, titles, names, addresses, numbers, or any other suitable information contained within a text. The database component 230 may generate modified data structures from the data structures generated to represent texts within the textual data. In some embodiments, the database component 230 generates modified data structures by assigning index numbers to each element, term, combinations of elements, or combination of terms within a data structure. A full index (e.g., the data structure) may be reduced to include texts within the set of textual data identified based on the search terms. The database component 230 may sum rows within the modified data structure. In some instances, the database component 230 also processes counts for the terms using one or more processes to transform the modified data structure and remove or discount popular or common entries adding little value to analysis based on high frequency of occurrence.

The element component 240 identifies elements of interest within modified data structures generated by the database component 230. In some embodiments, the elements of interest are identified, at least in part, based on the summed rows of the modified data structures. The element component 240 may map textual identifications of sets of textual data to rows in transformed or modified data structures generated by the database component 230. In some instances, the element component 240 selects elements of interest by summing values from transformed matrices based on comparison of values associated with the elements to an interest threshold. The element component 240 may also identify element types for each element of interest.

The presentation component 250 causes presentations of graphical user interfaces, visual indicators, portions of texts, and other elements described herein. In some embodiments, the presentation component 250 causes presentation of a graphical user interface including selectable interface elements configured to receive search terms or provide search terms for selection and subsequent query of the set of textual data. The presentation component 250 may cause presentation of elements of interest within the graphical user interface as well as portions of texts accessed or retrieved from the set of textual data based on the search terms provided to the access component 210. In some embodiments, the presentation component 250 causes presentation of unique and tailored graphical user interfaces based on a combination of the texts, the search terms, and the elements of interest. The tailored graphical user interfaces may be presented differently to different users based on the information retrieved by the textual identification system 150, the user performing the search, element relationships or collocations, combinations thereof, and other suitable information. In some instances, portions of the graphical user interface are dynamically generated, such that a portion of the graphical user interface may only appear when information relevant to the portion is retrieved, identified, or generated by the textual identification system 150. In these instances, the graphical user interface may automatically resize, reorient, repartition, or otherwise adjust one or more initially presented portions of the graphical user interface to accommodate addition of a new portion based on the inclusion of additional information from the textual identification system 150.

The context component 260 determines context occurrences for elements of interest within texts of the set of textual data. In some instances, the context component 260 tokenizes the context to provide an index number for terms included in a textual proximate to another term for which context is being determined. The context component 260 may associate index numbers for terms surrounding a specified term and may link instances of a term surrounding a specified term that have a lexical similarity.

The normalization component 270 normalizes elements of interest by removing redundant elements of interest based on the context occurrence of two or more elements of interest. The normalization component 270 may generate a normalized set of elements of interest by identifying deviations among the instances. In some embodiments, normalization of the elements of interest occurs without removing or merging instances of the terms within the data structures described herein. The normalization component 270 may pass the normalized set of elements of interest to the presentation component 250, such that the presentation component 250 presents the elements of interest without duplication of elements of interest having deviating instances.

Any one or more of the components described may be implemented using hardware alone (e.g., one or more of the processors of a machine) or a combination of hardware and software. For example, any component described in the textual identification system 150 may physically include an arrangement of one or more processors (e.g., a subset of or among the one or more processors of the machine) configured to perform the operations described herein for that component. As another example, any component of the textual identification system 150 may include software, hardware, or both, that configure an arrangement of one or more processors (e.g., among the one or more processors of the machine) to perform the operations described herein for that component. Accordingly, different components of the textual identification system 150 may include and configure different arrangements of such processors or a single arrangement of such processors as different points in time. Moreover, any two or more components of the textual identification system 150 may be logically or physically combined into a single component, and the functions described herein for a single component may be subdivided among multiple components. Furthermore, according to various example embodiments, components described herein as being implemented within a single machine, database, or device may be distributed across multiple machines, databases, or devices.

FIG. 3 is a flowchart illustrating operations of the textual identification system 150 in performing a method 300 of processing and identifying elements of interest from content within a set of retrieved documents, according to some example embodiments. Operations of the method 300 may be performed by the modules described above with respect to FIG. 2.

In operation 310, the access component 210 receives a selection of a textual corpus from a set of textual corpora. Each textual corpus of the set of textual corpora contains one or more texts. The texts or text sets may include documents of varying types. For example the document types may include text documents, video documents, audio documents, multimedia documents, and other suitable documents. In the present disclosure, “textual” is used interchangeably with a broad number of document types, publications (e.g., documents published or otherwise accessible directly or by a network connection). Further, although described as texts, text sets, sets of textual data, or textual corpora, it should be understood that one or more terms, such as publication, may be used interchangeably in the present disclosure or embodiments disclosed herein. The set of texts (e.g., set of documents) may be identified from the selected textual corpus (e.g., document corpus).

In some embodiments, the presentation component 250 is activated by a selection of a graphical interface element to initiate presentation of a graphical user interface, as shown in FIG. 4. The graphical user interface includes one or more graphical interface elements representing available selections within the graphical user interface. In some embodiments, the selections made available by the graphical interface elements include search term input, document corpus selection, search result selection, document selection, element of interest selection, and search type selection or entry. The access component 210 may receive the selection of the document corpus from an input device receiving a selection from a set of document corpora represented as discrete selectable graphical interface elements. The set of document corpora may be presented on a display device of a client device accessing one or more document servers.

In operation 320, the access component 210 receives or otherwise accesses one or more search terms displayed within the graphical user interface. In some embodiments, the access component 210 receives the search terms from an input device of a client device on which the graphical user interface is presented. The access component 210 receives the one or more search terms as one or more differing types of user input through the input device. For example, the one or more search terms may be received within a text input field (e.g., a text box presented in the graphical user interface), as a selection from a set of radio buttons, as a selection from a drop down menu, as a selection from a scroll menu, or any other suitable input type.

In operation 330, the document component 220 identifies a set of textual data (e.g., a set of documents or set of publication data) based on the one or more search terms. In some embodiments, the set of documents are identified based on a presence of the one or more search terms within the document or within metadata associated with the document. In some embodiments, once the documents are incorporated into a document corpus, a content of the document and metadata associated with the document may be parsed and indexed to identify keywords. Keywords may include words, named individuals, named entities (e.g., a city name, a project name, an organization name), titles, authors, fields (e.g., From, To, Carbon Copy, and Blind Carbon Copy fields), dates, and other suitable terms. The keywords and the metadata may be extracted from the documents and accompanying data using information extraction and machine learning algorithms. In some embodiments, the document component 220 uses one or more search engine algorithms to identify the set of documents based on the index of the keywords associated with the content and metadata of the document.

In operation 340, the access component 210 retrieves a data structure including textual identifications (e.g., document identifications) for the set of textual data and an indication of the one or more data elements within the documents (e.g., texts within the textual data). In some embodiments, the data structure may be the index of keywords in the content and metadata of the documents identified based on the search terms. The index may include semantically meaningful collocations as well as the keywords from the content and the metadata. In some instances, the index is generated as a table having counts of the terms and semantically meaningful collocations within the document content and metadata. In some embodiments, the counts are a number of instances that a given term or semantically meaningful collocation occurs within the document content or the metadata for the document.

The indexes for the documents within the document corpus include collocations of semantically meaningful n-grams. Semantically meaningful collocations may include frequently occurring compositions of words having semantic meaning. For example, “strong” and “coffee” may occur together more often than a predetermined instance threshold and, when occurring together within a predefined distance, contain a semantic meaning, “strong coffee,” which may not occur in collocations of synonyms of the two terms. In some instances, the semantically meaningful n-grams or collocations may be determined heuristically. The semantically meaningful n-grams or collocations may also be identified using semantic analysis, stochastic semantic analysis, natural language processing, natural language understanding, or any other suitable algorithmic identification of the meaningful semantic relation between collocated terms.

In operation 350, the database component 230 processes the data structure to generate a modified data structure. In some embodiments, to generate the modified data structure, the database component 230 assigns an index number to each term or semantically meaningful n-gram. The index number may be obtained by sorting the textual representations of the terms and semantically meaningful n-grams and associating each with a position in a sort order. For example, “Aardvark” may receive an index number of zero and “Zena” may receive an index number of one thousand.

The modified data structure may be generated by reducing the full index to documents included in the set of documents identified based on the one or more search terms. In some embodiments, the terms, semantically meaningful n-grams, entity names, and the like are provided values within the modified data structure to construct a count matrix. The count matrix may include documents (e.g., documents identified within a specified document corpus or set of document corpora) as rows and elements of interest (e.g., terms and semantically meaningful n-grams) as columns. The documents in the rows may be represented by a document identification (e.g., a numerical value, an alphanumeric combination, or a set of characters). The terms and semantically meaningful collocations may be represented within a cell of the columns by the term or terms and an indication of a term type. The term type may indicate a category for the term. The intersections between the rows and columns may include a value for a number of occurrences of the specified element of interest within the specified document.

In operation 360, the database component 230 sums rows within the modified data structure. The rows include values for data elements included in each of the identified set of documents. In some embodiments, the counts (e.g., values at the intersections of specified rows and columns) are processed using a Term Frequency-Inverse Document Frequency (TF-IDF) transformation. The TF-IDF transformation may discount popular items as less interesting. In some instances, the TF-IDF transformation is a two-step process. First, the database component 230 sums the number of documents in which each item occurs. Second, the database component 230 divides the entries in each of the table rows of the modified data structure by the sum. The database component 230 thereby decreases weights of less informative but more popular or frequent terms. The TF-IDF transformation may generate a transformed data structure. In some embodiments, the transformed data structure is used as the basis for identifying potentially interesting elements or terms.

In operation 370, the element component 240 identifies one or more elements of interest based on the summed rows of the modified data structure. In some embodiments, to extract the one or more elements of interest, the element component 240 maps document identifications of the set of documents identified in operation 330 to rows of the transformed data structure. Using the mapping, the element component 240 creates a smaller matrix (e.g., an element matrix) composed of the document rows returned as query results. In the element matrix, the element component 240 selects terms of interest by summing the values from the transformed matrix and identifying the terms having a summed value above an interest threshold. In some embodiments, the interest threshold is predetermined. In some instances, the interest threshold is dynamic. In these embodiments, the dynamic interest threshold may be set as a function of the summed values for the terms. For example, the dynamic interest threshold may be set, at the time of summing the values for the terms, to select terms and to return a set number of terms (e.g., elements of interest) for each document of the set of documents identified in operation 330.

In operation 380, the presentation component 250 causes presentation of the elements of interest in a first portion of the graphical user interface and the textual identifications for the set of documents in a second portion of the graphical user interface. In some embodiments, the presentation component 250 causes presentation of the elements of interest and the document identifications in the graphical user interface depicted in FIG. 4. A first portion 410, depicted in FIG. 4, displays the elements of interest (e.g., the terms from the transformed matrix). A second portion 420 displays the textual identifications. In some instances, the document identifications include one or more of the values from the transformed matrix, a title of the document, an identifying subset of content of the document, a selectable representation (e.g., a graphical or textual representation) of the document, or any other suitable identifying information for the documents of the set of documents. In some instances, as shown in FIG. 4, the elements of interest in the first portion 410 and the document identifications in the second portion 420 are presented distinctly from one another and without an indication of a relationship between the items included in the first portion 410 and those included in the second portion 420. In some embodiments, the presentation component 250 generates and presents the elements of interest and the document identifications to indicate a relationship between specified elements of interest and specified document identifications. For example, the document identifications may be spaced a distance apart enabling the elements of interest found within each identified document to be presented adjacent to the document identification of the document in which the elements of interest are found.

FIG. 5 is a flowchart illustrating operations of the textual identification system 150 in performing a method 500 of processing and identifying elements of interest from content within a set of retrieved documents, according to some example embodiments. Operations of the method 500 may be performed by the modules described above with respect to FIG. 2. In some example embodiments, one or more operations of the method 500 are performed as part or sub-operations of one or more operations of the method 300. In some instances, the method 500 may include one or more operations of the method 300.

In operation 510, the context component 260 determines a context occurrence for each element of interest within the set of documents. The context occurrence represents a number of related times a term occurs in a document. In some instances, a context around each term may be tokenized. The context component 260, in tokenizing the context, may identify an index number for terms included in the document proximate to the term for which context is being determined. The context component 260 may then associate, in a matrix, one or more index numbers for the terms surrounding the specified term for which the context is being identified. In some embodiments, the context component 260 associates the index numbers of surrounding terms for each instance of a term for which the context is being identified. For example, where the context component 260 is determining context for three instances of the term “cheese,” the context component 260 may identify three sets of terms, with a set of terms surrounding each of the instances of the term “cheese.” The context component 260 may identify the index number for each of the terms within the three sets of terms and associate the index numbers with the instance of the term that they surround.

After the context component 260 identifies and associates the index numbers with instances of the term, the context component 260 determines the context of an instance of the term by comparing the associated index numbers. The context component 260 may link two or more instances of the term for which the surrounding terms are determined to have a lexical similarity. The lexical similarity of surrounding terms may be identified based on an overlap of terms identified within the surrounding terms. Overlap of terms may be identified where the same term occurs in two or more of the surrounding terms. Lexical similarity may also be identified where terms in sets of surrounding terms are synonyms, have similar definitions, or are otherwise semantically related. In some instances, the lexical similarity may be determined based on Jaccard coefficients determined for the sets of surrounding terms defined by a size of set intersection divided by a size of a set union.

In operation 520, the normalization component 270 normalizes the elements of interest by removing redundant elements of interest based on the context occurrence of two or more elements of interest. The normalization component 270 generates a normalized set of elements of interest. The normalization component 270 may normalize instances of an element of interest within a document by identifying one or more deviations among the instances. Deviations may include misspellings, different case usage, partial omissions (e.g., omitting a term forming a linked set of terms such as a full name), or other suitable deviations. In some embodiments, normalizing the elements of interest removes redundant instances of the same element of interest within a list presented at a client device. Removal of the redundant instances may free attention space within the list and remove confusion between similar instances of a term that refer to the same entity. In some instances, the normalization component 270 normalizes the elements of interest for presentation without removing or merging instances of the terms within one or more of the matrices or indices described above. By maintaining separate instances of the element of interest, the normalization component 270 prevents the database component 230 from erroneously reducing a term's likelihood of being deemed important based on overrepresentation due to merged instances.

In operation 530, the presentation component 250 causes presentation of the normalized set of elements of interest in the first portion of the graphical user interface. In some embodiments, the presentation component 250 presents the normalized set of elements of interest similarly to or the same as described above with respect to operation 380. The normalized set of elements may be presented in the first portion of the graphical user interface. In some instances, the elements of the normalized set of elements are presented in an order according to their association with the documents identified based on the search terms. In some embodiments, the normalized set of elements may be presented as an ordered list independent of a relationship to the identified documents presented in the second portion 420.

In operation 540, the element component 240 identifies an element type for each of the elements of interest. In some embodiments, the element component 240 identifies the element type for the elements of interest by determining the elements of interest identified from the set of documents retrieved based on the search terms. The element component 240 may then parse one or more of the matrices or indices described above to identify the element type for each element of interest.

In operation 550, the presentation component 250 causes presentation of a visual indicator differentiating the elements of interest based on the element types. The visual indicator may be a graphical indicator or a textual indicator. In some instances, the visual indicator is coded to indicate the element type without including all of the characters or words for the element type. For example, the presentation component 250 may identify an element type as a city name and abbreviate or otherwise code the element type as “CN.” Although the coding of the visual indicator has been described given a specific example of an abbreviation, it should be understood that the presentation component 250 may code the element type in any suitable manner. Further, in some embodiments, the presentation component may generate and cause presentation of key mapping codes and full names for element types.

In operation 560, the presentation component 250 causes presentation of at least a portion of a document of the set of documents in a third portion of the graphical user interface. In some embodiments, as shown in FIG. 4, the third portion 430 may be positioned proximate to the second portion 420. The portion of the document presented in the third portion 430 may include text from a text, text set, publication, or document selected or otherwise specified in the second portion. For example, where a user selects a graphical interface element representing a document identification in the second portion 420 of the graphical user interface, the presentation component 250 generates and causes presentation of the portion of the selected document in the third portion 430. In some embodiments, where the document or publication retrieved is a video document or an audio document, the third portion 430 of the graphical user interface may include selectable interface elements configured to display or play the video or audio document within the third portion 430 of the graphical user interface. In some instances, the third portion 430 of the graphical user interface includes an instance of an application configured to display or play the audio or video document. In addition to an interface element or an instance of an application, the third portion 430 may also include textual information representing, or included within, the video, audio, or multimedia document.

FIG. 6 is a flowchart illustrating operations of the textual identification system 150 in performing a method 600 of processing and identifying elements of interest from content within a set of retrieved documents, according to some example embodiments. Operations of the method 600 may be performed by the modules described above with respect to FIG. 2. The method 600 may include or be performed as part or sub-operations of one or more operations of the methods 300 or 500.

In operation 610, the context component 260 generates a set of tokens for each element of interest. The set of tokens may represent the context occurrence of a specified element. In some embodiments, operation 610 is performed in response to determining the context of occurrence for each element of interest, as described above with respect to operation 510 of the method 500. The context component 260 may tokenize each element of interest using the index numbers described above or may generate a separate set of context tokens. The tokens may be a numerical value or any other suitable value to identify the term and associate the term with the term for which the context is being identified.

In operation 620, the context component 260 identifies an overlap of two or more elements of interest based on the set of tokens for the two or more elements of interest. The overlap may be determined based on semantic relatedness. For example, the overlap may be determined based on occurrence of a term within two or more sets of tokens for the two or more elements. As described above, with respect to operation 510, the semantic relatedness or lexical similarity may be determined based on Jaccard coefficients determined for the set of tokens.

In operation 630, the context components 260 links the two or more elements of interest. The two or more elements of interest may be linked in one or more of the matrices or indices described above. In some instances, the two or more elements are linked by generating a context matrix for each document within the set of documents identified in relation to the one or more search terms described above with respect to the method 300. The context matrix may include the terms within a document in both rows and columns. A bit or value at an intersection of two terms may indicate a contextual link between the two terms. Although the linking of elements of interest has been described with respect to a matrix, it should be understood that the elements of interest may be linked using metadata, data tables, or any other suitable method.

FIG. 7 is a flowchart illustrating operations of the textual identification system 150 in performing a method 700 of processing and identifying elements of interest from content within a set of retrieved documents, according to some example embodiments. Operations of the method 700 may be performed by the modules described above with respect to FIG. 2. The method 700 may include or be performed as part or sub-operations of one or more operations of the methods 300, 500, or 600.

In operation 710, the access component 210 accesses a set of document corpora. In some embodiments, the set of document corpora includes the selected document corpus of operation 310. In some instances, the set of document corpora is accessed in response to receiving the one or more search terms in operation 320. For example, as shown, operation 710 may occur after operations 310-380. As shown in FIG. 7, in these instances, the set of document corpora is accessed without prior selection of a specified document corpus. The access component 210 may access the set of document corpora by directly accessing one or more databases directly or via a network connection. In some embodiments, the access component 210 accesses the set of document corpora by accessing a set of metadata identifying the set of document corpora.

In operation 720, the document component 220 dynamically partitions the set of document corpora to identify a document corpus containing the set of documents associated with the one or more search terms. In some instances, the document component 220 identifies the document corpus by identifying the search terms among keywords associated with each document corpus of the set of document corpora. In some embodiments, each document corpus may be associated with a distinct database or data source. For example, each distinct database or data source may be associated with or part of a distinct client device. In identifying the document corpus, the document component 220 may select a client device from which the document component may select documents in response to receiving the one or more search terms.

In some embodiments, the document component 220 dynamically partitions the set of document corpora regardless of distribution of the document corpora among multiple client devices. In these instances, the document component 220 identifies the one or more search terms. The document component 220 may compare the one or more search terms with an index or matrix identifying terms associated with individual documents within each document corpus of the set of document corpora. The index or matrix may also identify the document corpus with which each of the documents are associated. The document component 220 may identify one or more document corpora from the index or matrix. The document component 220 may then perform a comparative analysis of the one or more document corpora to identify a single document corpus to search using the one or more search terms. In some instances, the comparative analysis identifies the document corpus having a highest number of occurrences of the search terms, and selects the specified document corpus.

In some instances, the document component 220 combines two or more document corpora to generate a dynamic document corpus. In these embodiments, where several document corpora include a suitable number of instances of occurrences of the search terms, the document component 220 selects the two or more document corpora and searches each of the document corpora for documents including the one or more search terms.

Modules, Components, and Logic

Certain embodiments are described herein as including logic or a number of components, modules, or mechanisms. Modules may constitute either software modules (e.g., code embodied on a machine-readable medium) or hardware modules. A “hardware module” is a tangible unit capable of performing certain operations and may be configured or arranged in a certain physical manner. In various example embodiments, one or more computer systems (e.g., a standalone computer system, a client computer system, or a server computer system) or one or more hardware modules of a computer system (e.g., a processor or a group of processors) may be configured by software (e.g., an application or application portion) as a hardware module that operates to perform certain operations as described herein.

In some embodiments, a hardware module may be implemented mechanically, electronically, or any suitable combination thereof. For example, a hardware module may include dedicated circuitry or logic that is permanently configured to perform certain operations. For example, a hardware module may be a special-purpose processor, such as a Field-Programmable Gate Array (FPGA) or an Application Specific Integrated Circuit (ASIC). A hardware module may also include programmable logic or circuitry that is temporarily configured by software to perform certain operations. For example, a hardware module may include software executed by a general-purpose processor or other programmable processor. Once configured by such software, hardware modules become specific machines (or specific components of a machine) uniquely tailored to perform the configured functions and are no longer general-purpose processors. It will be appreciated that the decision to implement a hardware module mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.

Accordingly, the phrase “hardware module” should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in a certain manner or to perform certain operations described herein. As used herein, “hardware-implemented module” refers to a hardware module. Considering embodiments in which hardware modules are temporarily configured (e.g., programmed), each of the hardware modules need not be configured or instantiated at any one instance in time. For example, where a hardware module comprises a general-purpose processor configured by software to become a special-purpose processor, the general-purpose processor may be configured as respectively different special-purpose processors (e.g., comprising different hardware modules) at different times. Software accordingly configures a particular processor or processors, for example, to constitute a particular hardware module at one instance of time and to constitute a different hardware module at a different instance of time.

Hardware modules can provide information to, and receive information from, other hardware modules. Accordingly, the described hardware modules may be regarded as being communicatively coupled. Where multiple hardware modules exist contemporaneously, communications may be achieved through signal transmission (e.g., over appropriate circuits and buses) between or among two or more of the hardware modules. In embodiments in which multiple hardware modules are configured or instantiated at different times, communications between such hardware modules may be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple hardware modules have access. For example, one hardware module may perform an operation and store the output of that operation in a memory device to which it is communicatively coupled. A further hardware module may then, at a later time, access the memory device to retrieve and process the stored output. Hardware modules may also initiate communications with input or output devices, and can operate on a resource (e.g., a collection of information).

The various operations of example methods described herein may be performed, at least partially, by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors may constitute processor-implemented modules that operate to perform one or more operations or functions described herein. As used herein, “processor-implemented module” refers to a hardware module implemented using one or more processors.

Similarly, the methods described herein may be at least partially processor-implemented, with a particular processor or processors being an example of hardware. For example, at least some of the operations of a method may be performed by one or more processors or processor-implemented modules. Moreover, the one or more processors may also operate to support performance of the relevant operations in a “cloud computing” environment or as a “software as a service” (SaaS). For example, at least some of the operations may be performed by a group of computers (as examples of machines including processors), with these operations being accessible via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., an Application Program Interface (API)).

The performance of certain of the operations may be distributed among the processors, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the processors or processor-implemented modules may be located in a single geographic location (e.g., within a home environment, an office environment, or a server farm). In other example embodiments, the processors or processor-implemented modules may be distributed across a number of geographic locations.

Machine and Software Architecture

The components, methods, applications and so forth described in conjunction with FIGS. 1-7 are implemented in some embodiments in the context of a machine and an associated software architecture. The sections below describe representative software architecture(s) and machine (e.g., hardware) architecture that are suitable for use with the disclosed embodiments.

Software architectures are used in conjunction with hardware architectures to create devices and machines tailored to particular purposes. For example, a particular hardware architecture coupled with a particular software architecture will create a mobile device, such as a mobile phone, tablet device, or so forth. A slightly different hardware and software architecture may yield a smart device for use in the “internet of things,” while yet another combination produces a server computer for use within a cloud computing architecture. Not all combinations of such software and hardware architectures are presented here as those of skill in the art can readily understand how to implement the subject matter in different contexts from the disclosure contained herein.

Software Architecture

FIG. 8 is a block diagram 800 illustrating a representative software architecture 802, which may be used in conjunction with various hardware architectures herein described. FIG. 8 is merely a non-limiting example of a software architecture and it will be appreciated that many other architectures may be implemented to facilitate the functionality described herein. The software architecture 802 may be executing on hardware such as a machine 900 of FIG. 9 that includes, among other things, processors 910, memory/storage 930, and I/O components 950. A representative hardware layer 804 is illustrated and can represent, for example, the machine 900 of FIG. 9. The representative hardware layer 804 comprises one or more processing units 806 having associated executable instructions 808. The executable instructions 808 represent the executable instructions of the software architecture 802, including implementation of the methods, components and so forth of FIG. 2. Hardware layer 804 also includes memory and/or storage modules 810, which also have executable instructions 808. Hardware layer 804 may also comprise other hardware as indicated by 812 which represents any other hardware of the hardware layer 804, such as the other hardware illustrated as part of machine 1000.

In the example architecture of FIG. 8, the software 802 may be conceptualized as a stack of layers where each layer provides particular functionality. For example, the software 802 may include layers such as an operating system 814, libraries 816, frameworks/middleware 818, applications 820 and presentation layer 844. Operationally, the applications 820 and/or other components within the layers may invoke application programming interface (API) calls 824 through the software stack and receive a response, returned values, and so forth illustrated as messages 826 in response to the API calls 824. The layers illustrated are representative in nature and not all software architectures have all layers. For example, some mobile or special purpose operating systems may not provide a frameworks/middleware layer 818, while others may provide such a layer. Other software architectures may include additional or different layers.

The operating system 814 may manage hardware resources and provide common services. The operating system 814 may include, for example, a kernel 828, services 830, and drivers 832. The kernel 828 may act as an abstraction layer between the hardware and the other software layers. For example, the kernel 828 may be responsible for memory management, processor management (e.g., scheduling), component management, networking, security settings, and so on. The services 830 may provide other common services for the other software layers. The drivers 832 may be responsible for controlling or interfacing with the underlying hardware. For instance, the drivers 832 may include display drivers, camera drivers, Bluetooth® drivers, flash memory drivers, serial communication drivers (e.g., Universal Serial Bus (USB) drivers), WiFi® drivers, audio drivers, power management drivers, and so forth depending on the hardware configuration.

The libraries 816 may provide a common infrastructure that may be utilized by the applications 820 and/or other components and/or layers. The libraries 816 typically provide functionality that allows other software modules to perform tasks in an easier fashion than to interface directly with the underlying operating system 814 functionality (e.g., kernel 828, services 830, and/or drivers 832). The libraries 816 may include system libraries 834 (e.g., C standard library) that may provide functions such as memory allocation functions, string manipulation functions, mathematic functions, and the like. In addition, the libraries 816 may include API libraries 836 such as media libraries (e.g., libraries to support presentation and manipulation of various media formats such as MPEG4, H.264, MP3, AAC, AMR, JPG, PNG), graphics libraries (e.g., an OpenGL framework that may be used to render 2D and 3D information in a graphic content on a display), database libraries (e.g., SQLite that may provide various relational database functions), web libraries (e.g., WebKit that may provide web browsing functionality), and the like. The libraries 816 may also include a wide variety of other libraries 838 to provide many other APIs to the applications 820 and other software components/modules.

The frameworks 818 (also sometimes referred to as middleware) may provide a higher-level common infrastructure that may be utilized by the applications 820 and/or other software components/modules. For example, the frameworks 818 may provide various graphic user interface (GUI) functions, high-level resource management, high-level location services, and so forth. The frameworks 818 may provide a broad spectrum of other APIs that may be utilized by the applications 820 and/or other software components/modules, some of which may be specific to a particular operating system or platform.

The applications 820 includes built-in applications 840 and/or third-party applications 842. Examples of representative built-in applications 840 may include, but are not limited to, a contacts application, a browser application, a book reader application, a location application, a media application, a messaging application, and/or a game application. The third-party applications 842 may include any of the built-in applications as well as a broad assortment of other applications. In a specific example, the third-party application 842 (e.g., an application developed using the Android™ or iOS™ software development kit (SDK) by an entity other than the vendor of the particular platform) may be mobile software running on a mobile operating system such as iOS™, Android™, Windows® Phone, or other mobile operating systems. In this example, the third-party application 842 may invoke the API calls 824 provided by the mobile operating system such as operating system 814 to facilitate functionality described herein.

The applications 820 may utilize built in operating system functions (e.g., kernel 828, services 830 and/or drivers 832), libraries (e.g., system libraries 834, API libraries 836, and other libraries 838), and frameworks/middleware 818 to create user interfaces to interact with users of the system. Alternatively, or additionally, in some systems interactions with a user may occur through a presentation layer, such as the presentation layer 844. In these systems, the application/module “logic” can be separated from the aspects of the application/module that interact with a user.

Some software architectures utilize virtual machines. In the example of FIG. 8, this is illustrated by a virtual machine 848. A virtual machine creates a software environment where applications/modules can execute as if they were executing on a hardware machine (such as the machine 900 of FIG. 9, for example). A virtual machine is hosted by a host operating system (e.g., operating system 814 in FIG. 9) and typically, although not always, has a virtual machine monitor 846, which manages the operation of the virtual machine as well as the interface with the host operating system (e.g., operating system 814). A software architecture executes within the virtual machine such as an operating system 850, libraries 816, frameworks/middleware 854, applications 856 and/or presentation layer 858. These layers of software architecture executing within the virtual machine 848 can be the same as corresponding layers previously described or may be different.

Example Machine Architecture and Machine-Readable Medium

FIG. 9 is a block diagram illustrating components of a machine 900, according to some example embodiments, able to read instructions from a machine-readable medium (e.g., a machine-readable storage medium) and perform any one or more of the methodologies discussed herein. Specifically, FIG. 9 shows a diagrammatic representation of the machine 900 in the example form of a computer system, within which instructions 916 (e.g., software, a program, an application, an applet, an app, or other executable code) for causing the machine 900 to perform any one or more of the methodologies discussed herein may be executed. For example, the instructions may cause the machine to execute the flow diagrams of FIGS. 3 and 5-7. Additionally, or alternatively, the instructions may implement in the components or modules of FIG. 2, and so forth. The instructions transform the general, non-programmed machine into a particular (e.g., special purpose) machine programmed to carry out the described and illustrated functions in the manner described. In alternative embodiments, the machine 900 operates as a standalone device or may be coupled (e.g., networked) to other machines. In a networked deployment, the machine 900 may operate in the capacity of a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine 900 may comprise, but is not limited to, a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a set-top box (STB), a personal digital assistant (PDA), an entertainment media system, a cellular telephone, a smart phone, a mobile device, a wearable device (e.g., a smart watch), a smart home device (e.g., a smart appliance), other smart devices, a web appliance, a network router, a network switch, a network bridge, or any machine capable of executing the instructions 916, sequentially or otherwise, that specify actions to be taken by machine 900. Further, while only a single machine 900 is illustrated, the term “machine” shall also be taken to include a collection of machines 900 that individually or jointly execute the instructions 916 to perform any one or more of the methodologies discussed herein.

The machine 900 may include processors 910, memory 930, and I/O components 950, which may be configured to communicate with each other such as via a bus 902. In an example embodiment, the processors 910 (e.g., a Central Processing Unit (CPU), a Reduced Instruction Set Computing (RISC) processor, a Complex Instruction Set Computing (CISC) processor, a Graphics Processing Unit (GPU), a Digital Signal Processor (DSP), an Application Specific Integrated Circuit (ASIC), a Radio-Frequency Integrated Circuit (RFIC), another processor, or any suitable combination thereof) may include, for example, processor 912 and processor 914 that may execute instructions 916. The term “processor” is intended to include multi-core processor that may comprise two or more independent processors (sometimes referred to as “cores”) that may execute instructions contemporaneously. Although FIG. 9 shows multiple processors, the machine 900 may include a single processor with a single core, a single processor with multiple cores (e.g., a multi-core processor), multiple processors with a single core, multiple processors with multiples cores, or any combination thereof.

The memory/storage 930 may include a memory 932, such as a main memory, or other memory storage, and a storage unit 936, both accessible to the processors 910 such as via the bus 902. The storage unit 936 and memory 932 store the instructions 916 embodying any one or more of the methodologies or functions described herein. The instructions 916 may also reside, completely or partially, within the memory 932, within the storage unit 936, within at least one of the processors 910 (e.g., within the processor's cache memory), or any suitable combination thereof, during execution thereof by the machine 900. Accordingly, the memory 932, the storage unit 936, and the memory of the processors 910 are examples of machine-readable media.

As used herein, “machine-readable medium” means a device able to store instructions and data temporarily or permanently and may include, but is not limited to, random-access memory (RAM), read-only memory (ROM), buffer memory, flash memory, optical media, magnetic media, cache memory, other types of storage (e.g., Erasable Programmable Read-Only Memory (EEPROM)), and/or any suitable combination thereof. The term “machine-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) able to store the instructions 916. The term “machine-readable medium” shall also be taken to include any medium, or combination of multiple media, that is capable of storing instructions (e.g., instructions 916) for execution by a machine (e.g., machine 900), such that the instructions, when executed by one or more processors of the machine 900 (e.g., processors 910), cause the machine 900 to perform any one or more of the methodologies described herein. Accordingly, a “machine-readable medium” refers to a single storage apparatus or device, as well as “cloud-based” storage systems or storage networks that include multiple storage apparatus or devices. The term “machine-readable medium” excludes signals per se.

The I/O components 950 may include a wide variety of components to receive input, provide output, produce output, transmit information, exchange information, capture measurements, and so on. The specific I/O components 950 that are included in a particular machine will depend on the type of machine. For example, portable machines such as mobile phones will likely include a touch input device or other such input mechanisms, while a headless server machine will likely not include such a touch input device. It will be appreciated that the I/O components 950 may include many other components that are not shown in FIG. 9. The I/O components 950 are grouped according to functionality merely for simplifying the following discussion and the grouping is in no way limiting. In various example embodiments, the I/O components 950 may include output components 952 and input components 954. The output components 952 may include visual components (e.g., a display such as a plasma display panel (PDP), a light emitting diode (LED) display, a liquid crystal display (LCD), a projector, or a cathode ray tube (CRT)), acoustic components (e.g., speakers), haptic components (e.g., a vibratory motor, resistance mechanisms), other signal generators, and so forth. The input components 954 may include alphanumeric input components (e.g., a keyboard, a touch screen configured to receive alphanumeric input, a photo-optical keyboard, or other alphanumeric input components), point based input components (e.g., a mouse, a touchpad, a trackball, a joystick, a motion sensor, or other pointing instrument), tactile input components (e.g., a physical button, a touch screen that provides location and/or force of touches or touch gestures, or other tactile input components), audio input components (e.g., a microphone), and the like.

In further example embodiments, the I/O components 950 may include biometric components 956, motion components 958, environmental components 960, or position components 962 among a wide array of other components. For example, the biometric components 956 may include components to detect expressions (e.g., hand expressions, facial expressions, vocal expressions, body gestures, or eye tracking), measure biosignals (e.g., blood pressure, heart rate, body temperature, perspiration, or brain waves), identify a person (e.g., voice identification, retinal identification, facial identification, fingerprint identification, or electroencephalogram based identification), and the like. The motion components 958 may include acceleration sensor components (e.g., accelerometer), gravitation sensor components, rotation sensor components (e.g., gyroscope), and so forth. The environmental components 960 may include, for example, illumination sensor components (e.g., photometer), temperature sensor components (e.g., one or more thermometer that detect ambient temperature), humidity sensor components, pressure sensor components (e.g., barometer), acoustic sensor components (e.g., one or more microphones that detect background noise), proximity sensor components (e.g., infrared sensors that detect nearby objects), gas sensors (e.g., gas detection sensors to detection concentrations of hazardous gases for safety or to measure pollutants in the atmosphere), or other components that may provide indications, measurements, or signals corresponding to a surrounding physical environment. The position components 962 may include location sensor components (e.g., a Global Position System (GPS) receiver component), altitude sensor components (e.g., altimeters or barometers that detect air pressure from which altitude may be derived), orientation sensor components (e.g., magnetometers), and the like.

Communication may be implemented using a wide variety of technologies. The I/O components 950 may include communication components 964 operable to couple the machine 900 to a network 980 or devices 970 via coupling 982 and coupling 972 respectively. For example, the communication components 964 may include a network interface component or other suitable device to interface with the network 980. In further examples, communication components 964 may include wired communication components, wireless communication components, cellular communication components, Near Field Communication (NFC) components, Bluetooth® components (e.g., Bluetooth® Low Energy), WiFi® components, and other communication components to provide communication via other modalities. The devices 970 may be another machine or any of a wide variety of peripheral devices (e.g., a peripheral device coupled via a Universal Serial Bus (USB)).

Moreover, the communication components 964 may detect identifiers or include components operable to detect identifiers. For example, the communication components 964 may include Radio Frequency Identification (RFID) tag reader components, NFC smart tag detection components, optical reader components (e.g., an optical sensor to detect one-dimensional bar codes such as Universal Product Code (UPC) bar code, multi-dimensional bar codes such as Quick Response (QR) code, Aztec code, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, UCC RSS-2D bar code, and other optical codes), or acoustic detection components (e.g., microphones to identify tagged audio signals). In addition, a variety of information may be derived via the communication components 964, such as, location via Internet Protocol (IP) geo-location, location via Wi-Fi® signal triangulation, location via detecting a NFC beacon signal that may indicate a particular location, and so forth.

Transmission Medium

In various example embodiments, one or more portions of the network 980 may be an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WWAN), a metropolitan area network (MAN), the Internet, a portion of the Internet, a portion of the Public Switched Telephone Network (PSTN), a plain old telephone service (POTS) network, a cellular telephone network, a wireless network, a Wi-Fi® network, another type of network, or a combination of two or more such networks. For example, the network 980 or a portion of the network 980 may include a wireless or cellular network and the coupling 982 may be a Code Division Multiple Access (CDMA) connection, a Global System for Mobile communications (GSM) connection, or other type of cellular or wireless coupling. In this example, the coupling 982 may implement any of a variety of types of data transfer technology, such as Single Carrier Radio Transmission Technology (1×RTT), Evolution-Data Optimized (EVDO) technology, General Packet Radio Service (GPRS) technology, Enhanced Data rates for GSM Evolution (EDGE) technology, third Generation Partnership Project (3GPP) including 3G, fourth generation wireless (4G) networks, Universal Mobile Telecommunications System (UMTS), High Speed Packet Access (HSPA), Worldwide Interoperability for Microwave Access (WiMAX), Long Term Evolution (LTE) standard, others defined by various standard setting organizations, other long range protocols, or other data transfer technology.

The instructions 916 may be transmitted or received over the network 980 using a transmission medium via a network interface device (e.g., a network interface component included in the communication components 964) and utilizing any one of a number of well-known transfer protocols (e.g., hypertext transfer protocol (HTTP)). Similarly, the instructions 916 may be transmitted or received using a transmission medium via the coupling 972 (e.g., a peer-to-peer coupling) to the devices 970. The term “transmission medium” shall be taken to include any intangible medium that is capable of storing, encoding, or carrying the instructions 916 for execution by the machine 900, and includes digital or analog communications signals or other intangible media to facilitate communication of such software.

Language

Throughout this specification, plural instances may implement components, operations, or structures described as a single instance. Although individual operations of one or more methods are illustrated and described as separate operations, one or more of the individual operations may be performed concurrently, and nothing requires that the operations be performed in the order illustrated. Structures and functionality presented as separate components in example configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements fall within the scope of the subject matter herein.

Although an overview of the inventive subject matter has been described with reference to specific example embodiments, various modifications and changes may be made to these embodiments without departing from the broader scope of embodiments of the present disclosure. Such embodiments of the inventive subject matter may be referred to herein, individually or collectively, by the term “invention” merely for convenience and without intending to voluntarily limit the scope of this application to any single disclosure or inventive concept if more than one is, in fact, disclosed.

The embodiments illustrated herein are described in sufficient detail to enable those skilled in the art to practice the teachings disclosed. Other embodiments may be used and derived therefrom, such that structural and logical substitutions and changes may be made without departing from the scope of this disclosure. The Detailed Description, therefore, is not to be taken in a limiting sense, and the scope of various embodiments is defined only by the appended claims, along with the full range of equivalents to which such claims are entitled.

As used herein, the term “or” may be construed in either an inclusive or exclusive sense. Moreover, plural instances may be provided for resources, operations, or structures described herein as a single instance. Additionally, boundaries between various resources, operations, modules, engines, and data stores are somewhat arbitrary, and particular operations are illustrated in a context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within a scope of various embodiments of the present disclosure. In general, structures and functionality presented as separate resources in the example configurations may be implemented as a combined structure or resource. Similarly, structures and functionality presented as a single resource may be implemented as separate resources. These and other variations, modifications, additions, and improvements fall within a scope of embodiments of the present disclosure as represented by the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.

Claims

1. (canceled)

2. A method, comprising:

accessing, by one or more processors of a machine, a set of textual corpora, each textual corpus of the set of textual corpora containing one or more text sets;
dynamically partitioning, by one or more processors, the set of textual corpora to identify a textual corpus from the set of textual corpora containing the set of text sets associated with one or more search terms;
identifying, by one or more processors, a set of textual data based on the one or more search terms;
retrieving, by one or more processors, a data structure including textual identifications for the set of textual data and an indication of one or more data elements within one or more text sets of the set of textual data;
processing, by the one or more processors, the data structure to generate a modified data structure, the modified data structure generated by reducing to text sets included in the set of textual data identified based on the one or more search terms;
summing rows, by the one or more processors, within the modified data structure, the rows including values for data elements included in each of the identified set of textual data;
identifying, by the one or more processors, one or more elements of interest within the set of textual data based on the summed rows of the modified data structure; and
causing, by one or more processors, presentation of the elements of interest in a first portion of a graphical user interface and the textual identifications for the set of textual data in a second portion of the graphical user interface.

3. The method of claim 2, wherein the set of textual corpora comprises a set of document corpora, each textual corpus from the set of document corpora comprises a document corpus, and the set of text sets comprises a set of documents.

4. The method of claim 2, wherein each textual corpus is associated with a separate data source.

5. The method of claim 2, wherein each textual corpus is associated with a distinct client device.

6. The method of claim 2, wherein the causing the presentation of the elements of interest and the textual identifications comprises:

causing presentation of at least a portion of a text set of the set of textual data in a third portion of the graphical user interface.

7. The method of claim 2, wherein the causing the presentation of the elements of interest and the textual identifications comprises:

identifying an element type for each element in the elements of interest; and
causing presentation of a visual indicator differentiating the elements of interest based on an element type.

8. The method of claim 2, further comprising:

determining a context of occurrence for each element of interest within the set of textual data;
in response to determining the context of occurrence for each element of interest, generating a set of tokens for each element of interest, the set of tokens representing the context of occurrence;
identifying an overlap of two or more of the elements of interest based on the set of tokens for the two or more elements of interest; and
linking two or more elements of interest.

9. The method of claim 2, further comprising:

receiving a selection of a given textual corpus from the set of textual corpora, the set of textual data identified from the selected given textual corpus.

10. A computer implemented system, comprising:

one or more processors; and
a processor-readable storage device comprising processor-executable instructions that, when executed by the one or more processors, cause the one or more processors to perform operations comprising: accessing a set of textual corpora, each textual corpus of the set of textual corpora containing one or more text sets; dynamically partitioning the set of textual corpora to identify a textual corpus from the set of textual corpora containing the set of text sets associated with one or more search terms; identifying a set of textual data based on the one or more search terms; retrieving a data structure including textual identifications for the set of textual data and an indication of one or more data elements within one or more text sets of the set of textual data; processing the data structure to generate a modified data structure, the modified data structure generated by reducing to text sets included in the set of textual data identified based on the one or more search terms; summing rows within the modified data structure, the rows including values for data elements included in each of the identified set of textual data; identifying one or more elements of interest within the set of textual data based on the summed rows of the modified data structure; and causing presentation of the elements of interest in a first portion of a graphical user interface and the textual identifications for the set of textual data in a second portion of the graphical user interface.

11. The system of claim 10, wherein the set of textual corpora comprises a set of document corpora, each textual corpus from the set of document corpora comprises a document corpus, and the set of text sets comprises a set of documents.

12. The system of claim 10, wherein each textual corpus is associated with a separate data source.

13. The system of claim 10, wherein each textual corpus is associated with a distinct client device.

14. The system of claim 10, wherein the causing the presentation of the elements of interest and the textual identifications comprises:

causing presentation of at least a portion of a text set of the set of textual data in a third portion of the graphical user interface.

15. The system of claim 10, wherein the causing the presentation of the elements of interest and the textual identifications comprises:

identifying an element type for each element in the elements of interest; and
causing presentation of a visual indicator differentiating the elements of interest based on an element type.

16. The system of claim 10, wherein the operations further comprise:

determining a context of occurrence for each element of interest within the set of textual data;
in response to determining the context of occurrence for each element of interest, generating a set of tokens for each element of interest, the set of tokens representing the context of occurrence;
identifying an overlap of two or more of the elements of interest based on the set of tokens for the two or more elements of interest; and
linking two or more elements of interest.

17. The system of claim 10, wherein the operations further comprise:

receiving a selection of a given textual corpus from the set of textual corpora, the set of textual data identified from the selected given textual corpus.

18. A processor-readable storage device comprising instructions that, when executed by one or more processors of a machine, cause the machine to perform operations comprising:

accessing a set of textual corpora, each textual corpus of the set of textual corpora containing one or more text sets;
dynamically partitioning the set of textual corpora to identify a textual corpus from the set of textual corpora containing the set of text sets associated with one or more search terms;
identifying a set of textual data based on the one or more search terms;
retrieving a data structure including textual identifications for the set of textual data and an indication of one or more data elements within one or more text sets of the set of textual data;
processing the data structure to generate a modified data structure, the modified data structure generated by reducing to text sets included in the set of textual data identified based on the one or more search terms;
summing rows within the modified data structure, the rows including values for data elements included in each of the identified set of textual data;
identifying one or more elements of interest within the set of textual data based on the summed rows of the modified data structure; and
causing presentation of the elements of interest in a first portion of a graphical user interface and the textual identifications for the set of textual data in a second portion of the graphical user interface.

19. The processor-readable storage device of claim 18, wherein the set of textual corpora comprises a set of document corpora, each textual corpus from the set of document corpora comprises a document corpus, and the set of text sets comprises a set of documents.

20. The processor-readable storage device of claim 18, wherein each textual corpus is associated with a separate data source.

21. The processor-readable storage device of claim 18, wherein each textual corpus is associated with a distinct client device.

Patent History
Publication number: 20190243897
Type: Application
Filed: Mar 15, 2019
Publication Date: Aug 8, 2019
Inventors: Maxim Kesin (Woodmere, NY), Paul Gribelyuk (Jersey City, NJ)
Application Number: 16/354,688
Classifications
International Classification: G06F 17/27 (20060101); G06F 17/22 (20060101);