In some jurisdictions, recording a participant of a call may be forbidden by local law or may require the explicit permission of the recorded participant or all participants. In other jurisdictions, any participant may consent to a recording. Even in cases where a participant does not consent to recording or when gaining such consent may be off-putting or unpleasant, recording the other participants of a call may be useful.
In general, one innovative aspect of the subject matter described in this specification can be embodied in methods for halfalogue insight generation that include the actions of receiving speech from a sales call between at least two participants including an agent and a customer. The methods include identifying from the conversation, speech contributions from a subset of the participants, converting the speech contributions to text, parsing the converted text into halfalogue triples, storing the halfalogue triples in an enterprise knowledge graph of a semantic graph database, generating real-time sales insights from the stored halfalogue triples in the enterprise knowledge graph, and presenting the real-time sales insights to one or more sales agent.
Other embodiments of this aspect include corresponding computer systems, apparatus, computer products, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the methods.
The foregoing and other embodiments can each optionally include one or more of the following features, alone or in combination. In particular, one embodiment includes all the following features in combination. In some implementations, identifying the speech contributions includes comparing a voice print of at least one participant within the speech contributions.
In some implementations, identifying the speech contributions includes identifying speech contributions from all participants of the sales call and recording speech contribution of only the subset of the participants.
In some implementations, identifying the speech contributions includes identifying speech contribution of the sales agent and recording the speech contribution of the sales agent.
In some implementations, converting the speech contributions to text includes invoking an automated speech recognition engine to convert the speech contributions into text using a grammar module, a lexicon module, and an acoustic model.
In some implementations, parsing the converted text into halfalogue triples includes applying a halfalogue taxonomy.
In some implementations, generating real-time sales insights based on the stored halfalogue triples in the enterprise knowledge graph includes querying an enterprise knowledge graph storing the halfalogue triples and identifying one or more insights in dependence upon query results.
In some implementations, the real-time sales insights include budget, authority, need, and time insights.
In some implementations, the methods further include determining, from the halfalogue triples, an industry for the speech contributions, where the real-time sales insights are selected based in part on the industry.
In one or more implementations, the technology described herein can provide one or more of the following advantages. By providing a collection of artificial intelligence-based technologies, including natural and semantic language processing, the technology described herein allows for generating real-time insights based only on speech contributions of a subset of participants in a conversation associated with a sales call. For example, at times, only the speech contributions of a sales-agent is recorded and can be used to generate insights into the sales call. The generation of such relevant recommendations in real time can in turn can potentially improve quality, efficiency, and efficacy of outside sales calls, even in situations where one or more parties to a call do not consent to being recorded. Contextual awareness can be used to dynamically adapt and improve processing of the speech contributions and generation of insights. Moreover, processing of speech contributions can be adapted based on the identities or role of the contributors, where variables related to sampling of speech contributions can be adjusted based in part on the identity and/or role of the contributor of the speech contribution. For example, the system can build taxonomies including vocabulary specific to halfalogue speech contributions attributed to sales-agents, where the taxonomies can be biased around the sales-agent script and training, leading to more efficient and accurate generation of insights from the speech contributions.
The details of one or more embodiments of the subject matter of this specification are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the subject matter will become apparent from the description, the drawings, and the claims.
Example methods, systems, apparatuses, and products for halfalogue insight generation are described with reference to the accompanying drawings, beginning with
The overall example system illustrated in
The example system of
The example system of
The example system of
The example system of
As mentioned above, halfalogue insight generation according to various embodiments of the present technology is speech-enabled. In some implementations, a word (509) of digitized speech is speech for recognition from a tele-agent (128) or a conversation between the tele-agent (128) and a customer. The speech for recognition can be an entire conversation, where, for example, all persons speaking are in the same room, and the entire conversation is picked up by a microphone on a speech-enabled device.
In some implementations, a scope of speech for recognition can be reduced by providing, to a speech-enabled device conversation, speech from only one person or a person on one side of a conversation, e.g., from a single a microphone on a headset. In some implementations, a scope of speech for recognition can be reduced by providing for recognition only speech that responds to a prompt from, for example, a
VoiceXML dialogue executing on a speech-enabled device. As the scope of speech for recognition is reduced, data processing burdens can be reduced across the system as a whole. In some implementations, conversations including multiple participants of the conversation can be used for speech for recognition.
In the example of
Speech from a tele-agent in the example of
A triple is a three-part statement expressed in a form of logic. Depending on context, different terminologies are used to refer to effectively the same three parts of a statement in a logic. For example, in first order logic, the parts are called constant, unary predicate, and binary predicate. In another example, in the Web Ontology Language (“OWL”) the parts are individual, class, and property. In another example, in some description logics the parts are called individual, concept, and role.
In this example description, the elements of a triple are referred to as subject, predicate, and object—and expressed like this: <subject><predicate><object>. There are many modes of expression for triples. Elements of triples can be represented as Uniform Resource Locaters (“URLs”), Uniform Resource Identifiers (“URIs”), or International Resource Identifiers (“IRIs”). Triples can be expressed in N-Quads, Turtle syntax, TriG, Javascript Object Notation or “JSON,” and the like. The expression used here, subject-predicate-object in angle brackets, is one form of abstract syntax, optimized for human readability rather than machine processing, although its substantive content is correct for expression of triples. Using this abstract syntax, the following are examples of triples:
At times, a same item can be referenced in multiple triples. In the above example, Bob is the subject of four triples, and the Mona Lisa is the subject of one triple and the object of two. The ability to have the same item be the subject of one triple and the object of another makes it possible to effect connections among triples, where connected triples can form graphs, as described in further detail below.
At times, a taxonomy can be generated, e.g., by the client, by the sales-agent, or another third-party, to bias the NLP-SR engine for frequently used (e.g., common) terminology. For example, the taxonomy can include sales related terminology for the client's product lines. Sales related terminology can include standard (e.g., static) vocabulary that can be used as differentiators between different products and product lines for the client. The sales related terminology can be used, by the NLP-SR engine (153) to segregate product-specific vocabulary from the speech contributions.
In some implementations, the taxonomy can include vocabulary files composed of phonetic names built from the existing taxonomy that can be used for phonetic assistance. In other words, the phonemes included in vocabulary files can be used by the NLP-SR engine to recognize and decode words that are expected within the speech contributions, e.g., words associated with the taxonomy more accurately.
Phonetic assistance can be used to assist the NLP-SR engine to handle non-standard speech contributions. For example, to recognize different aliases (e.g., different pronunciations) of the terminology. In some implementations, vocabulary files can include an assembly of phonemes that are specific to the product, product lines, and/or company. For example, the phonemes can be generated for all the stock keeping units (SKUs) for a company. The taxonomy can be generated as a back-end process, e.g., a repository of terminology, vocabulary, phonetic assistance, phonemes, etc., can be stored in the voice server 151 to assist the NLP-SR engine 153 with generation of the halfalogue triples 138 from the converted speech-to-text.
In some implementations, vocabulary files included in a generated taxonomy can assist the NLP-SR engine 153 in differentiating between speech-to-text from various participants of a sales call. For example, the vocabulary files can include vocabulary (e.g., words/phrases), terminology, phonemes, etc., that are specific to halfalogue text, e.g., specific to the speech contribution from the sales agent or a customer. The vocabulary files can include contextual clues, that can aid in grouping together elements and/or parsing of a phrase or sentence that adds contextual meaning. For example, contextual clues can include first person, second person, or third person language, e.g., a speech contribution phrase including “[I] would like to find a solution for [my] problem” where the bracketed words can indicate a customer speech contribution. In another example, “[SRT Company] would like to help [you] find a solution to [your] needs” where the bracketed words can indicate a sales agent contribution.
In some implementations, the NLP-SR engine (153) can use entity extraction based on the stored vocabulary files to select and analyze the contextual clue words/phrases in the speech contributions including standard (e.g., known) taxonomy. For example, the NLP-SR engine can recognize standard taxonomy for a client, e.g., a product name or product line name, and search/select entities referenced in the phrase surrounding the standard taxonomy for contextual clues. For example, a phrase may include “You would like purchase an XYZ product in Ql”, where “XYZ product” is recognized as the standard taxonomy and “you would like to purchase . . . in Ql” can be used to extract additional contextual clues, e.g., a purchase target date range, price points, quantities, configurations of specific products, or the like.
In some implementations, vocabulary files include contextual clue words/phrases that can be used by the NLP-SR engine (153) to differentiate a speaker of the speech contribution. For example, a sales-agent may use rephrasing or confirmation language to relay back information provided by a customer. In instances where the customer speech contribution is not recorded, identifying the rephrasing language can be used by the NLP-SR engine (153) to identify specific information provided to the sales agent by the (non-recorded) customer. For example, a phrase may include “Just to confirm, you would like delivery of QRS products by end of May?” where “Just to confirm” can flag for the NLP-SR engine, e.g., based on a taxonomy specific to sales-agent speech contributions, that this phrase includes a rephrasing/affirmation of a statement made by a (e.g., non-recorded) customer. At times, the NLP-SR engine (153) can bias sampling of the speech contributions based in part on recognizing the contextual clues included the rephrasing/confirmation language. In other words, the NLP-SR engine (153) can adjust (e.g., dynamically) a sampling rate or sampling size based in part on a determined context of the speech contribution statements. The example of
In the example of
The semantic triple store (814) of
The semantic triple store (814) in the example of
The information stored in knowledge graph (816) of
The example of
In some implementations, intelligence assistant (300) and CRM (806) can be hosted by an enterprise server (820), e.g., also hosting a triple server (157). The intelligence assistance (300) can be in data communication with additional servers, for example, a voice server (151), a lead engine (134), a social media server (130), and an industry server (130).
In some implementations, the intelligence assistant can be configured to request leads from a third-party operating the lead engine (134). Such leads may provide information regarding customers. For example, including contact information, key employees, site locations, and other information regarding the customer. The leads can be parsed into semantic triples, e.g., by the intelligence assistant, and stored in the semantic triple store (814) of the enterprise knowledge graph (816).
In some implementations, the intelligence assistant (300) of
in some implementations, the intelligence assistant (300) 1 is connected for data communications with one or more industry servers. Such servers are often operated by third parties and can provide current and historic information regarding a particular industry, e.g., for companies in various industries. In the example of
The use of a lead server (824), social media server (826) and the industry server (828) in the example of
In the example of
In some implementations, halfalogue insight generation can be used, for example, by a sales-agent performing outside sales. For further explanation,
The example of
In the example of
For further explanation,
Such information may be provided to the sales agent through an agent dashboard (110) presented on an agent's device, e.g., mobile device (120). An agent dashboard may be implemented as a thin-client operating architecture, for example, as a web browser that implements HTTP communications with an intelligence assistant that provides insight generation according to embodiments of the present technology. In such a thin-client architecture, the intelligence assistant (300), the semantic graph database (818), the CRM (806) and the intelligence assistant (300) operate remotely, e.g., on enterprise server (820) in data communication with the sales-agent mobile device (120) through network (100).
In some implementations, as depicted in
The example of
In the example of
Widgets in this disclosure are implemented as software applications or components that perform one or more tasks and whose execution is administered by the intelligence assistant. Each of the widgets described in this disclosure have an accompanying GUI element configured to be (e.g., optionally) displayed in the dashboard (110) as illustrated in
In the example of
In the example of
In the example of
In the example of
In the example of
In the example of
In the example of
In the example of
In the example of
In the example of
In the example of
The components and widgets presented in the example of
For further explanation,
The semantic graph database (880) of
The semantic graph database (880) of
The system of
The intelligence assistant (300) of
In the example of
Communications administered by the communications engine may be text-based and often that text is maintained to be ingested by the intelligence assistant. Other communications may be live or recorded speech which is converted to text by the speech engine (153) for consumption by the intelligence assistant.
The channel engine (360) provides an always-on communications listener (330) that listens over each of the communications channels and provides the communication for use by the intelligence engine. Once the communications are received by the intelligence assistant, the text is then parsed into semantic triples, e.g., using the NLP-SR engine (153), such that the information may be usefully used to identify sales insights. The enterprise server (820) of
The triple parser of
The triple parser of
The enterprise server (820) of
The intelligence assistant (300) of
In some embodiments of the present technology, insights may be selected from predefined insights meeting certain criteria of the search results or may be formed from the query results themselves. Such insights may be useful to a sales agent during a conversation with a customer. Examples of insights useful according to embodiments of the present technology include information about an industry, a customer job title, insights relating to budget, authority, need, and time (‘BANT’), cost and pricing information, competitive products, positive or negative sentiment in call, chat, email or other communication, identification of key individuals, targets reached, contacts reached, industry terms, next best action for a tele-agent, product recommendations, custom metrics, etc.
The intelligence assistant (300) of
For further explanation of relations among triples and graphs,
In systems of knowledge representation, knowledge can be represented in graphs of triples, including, for example, knowledge representations implemented in Prolog databases, Lisp data structures, or in RDF-oriented ontologies in RDFS, OWL, and other ontology languages. Search and inference are effected against such graphs by search engines configured to execute semantic queries in, for example, Prolog or SPARQL. Prolog is a general-purpose logic programming language. SPARQL is a recursive acronym for “SPARQL Protocol and RDF Query Language.” Prolog supports queries against connected triples expressed as statements and rules in a Prolog database. SPARQL supports queries against ontologies expressed in RDFS or OWL or other RDF-oriented ontologies. Prolog, SPARQL, RDF, these are provided as non-limiting examples of technologies that can be used in example embodiments of the present technology. Knowledge representations useful according to embodiments of the present technology can take various forms, now or in the future, and all such are now and will continue to be within the scope of the technology described herein.
A description logic is a member of a family of formal knowledge representation languages. Some description logics are more expressive than propositional logic but less expressive than first-order logic. In contrast to first-order logics, reasoning problems for description logics are usually decidable. Efficient decision procedures therefore can be implemented for problem of search and inference in description logics. There are general, spatial, temporal, spatiotemporal, and fuzzy descriptions logics, and each description logic features a different balance between expressivity and reasoning complexity by supporting different sets of mathematical constructors.
Search queries are disposed along a scale of semantics. A traditional web search, for example, is disposed upon a zero point of that scale, no semantics, no structure. A traditional web search against the keyword “derivative” returns HTML, documents discussing the literary concept of derivative works as well as calculus procedures. A traditional web search against the keyword “differential” returns HTML pages describing automobile parts and calculus functions.
Other queries are disposed along mid-points of the scale, some semantics, some structure, not entirely complete. Such systems may be termed executable rather than decidable. From some points of view, decidability is not a primary concern. In many Web applications, for example, data sets are huge, and they simply do not require a 100 percent correct model to analyze data that may have been spidered, scraped, and converted into structure by some heuristic program that itself is imperfect.
Other classes of queries are disposed where correctness of results is key, and decidability enters. A user who is a tele-agent in a data center speaking by phone with an automotive customer discussing a front differential is concerned not to be required to sort through calculus results to find correct terminology. Such a user needs correct definitions of automotive terms, and the user needs query results in conversational real time, that is, for example, within seconds.
In formal logic, a system is decidable if there exists a method such that, for every assertion that can be expressed in terms of the system, the method can decide whether or not the assertion is valid within the system. In practical terms, a query against a decidable description logic will not loop indefinitely, crash, fail to return an answer, or return a wrong answer. A decidable description logic supports data models or ontologies that are clear, unambiguous, and machine-processable. Undecidable systems do not. A decidable description logic supports algorithms by which a computer system can determine equivalence of classes defined in the logic.
Undecidable systems do not. Decidable description logics can be implemented in C, C++, SQL, Lisp, RDF/RDFS/OWL, and so on. In the RDF space, subdivisions of OWL vary in decidability. Full OWL does not support decidability. OWL DL does.
Halfalogue insight generation according to embodiments of the present technology, particularly in a thin-client architecture, may be implemented with one or more voice servers. A voice server can be implemented on one or more computers, that is, automated computing machinery, that is configured to provide speech recognition and speech synthesis.
Stored in RAM (168) is a voice server application (188), a module of computer program instructions capable of operating a voice server in a system that is configured for use in configuring memory according to some embodiments of the present technology. Voice server application (188) provides voice recognition services for multimodal devices by accepting requests for speech recognition and returning speech recognition results, including text representing recognized speech, text for use as variable values in dialogs, and text as string representations of scripts for semantic interpretation. Voice server application (188) also includes computer program instructions that provide text-to-speech (‘TTS’) conversion for voice prompts and voice responses to user input in speech-enabled applications such as, for example, speech-enabled browsers, X+V applications, SALT applications, or Java Speech applications, and so on.
Voice server application (188) may be implemented as a web server, implemented in Java, C++, Python, Perl, or any language that supports X+V, SALT, VoiceXML, or other speech-enabled languages, by providing responses to HTTP requests from X+V clients, SALT clients, Java Speech clients, or other speech-enabled client devices. Voice server application (188) may, for a further example, be implemented as a Java server that runs on a Java Virtual Machine (102) and supports a Java voice framework by providing responses to HTTP requests from Java client applications running on speech-enabled devices. And voice server applications that support embodiments of the present technology may be implemented in other ways, and such ways are within the scope of the present technology.
The voice server (151) in this example includes a natural language processing speech recognition (“NLP-SR”) engine (153). An NLP-SR engine is sometimes referred to in this disclosure simply as a ‘speech engine.’ A speech engine is a functional module, typically a software module, although it may include specialized hardware also, that does the work of recognizing and generating human speech. In this example, the speech engine (153) is a natural language processing speech engine that includes a natural language processing (“NLP”) engine (155). The NLP engine accepts recognized speech from an automated speech recognition (‘ASR’) engine, processes the recognized speech into parts of speech, subject, predicates, object, etc., and then converts the recognized, processed parts of speech into semantic triples for inclusion in triple stores.
The speech engine (153) includes an automated speech recognition (‘ASR’) engine for speech recognition and a text-to-speech (‘TTS’) engine for generating speech. The language-specific acoustic model (108) is a data structure, a table or database, for example, that associates speech feature vectors (‘SFVs’) with phonemes representing pronunciations of words in a human language often stored in a vocabulary file. The lexicon module (106) is configured to associate words in text form with phonemes representing pronunciations of each word; the lexicon module effectively identifies words that are capable of recognition by an ASR engine. Also stored in RAM (168) is a Text-To-Speech (‘TTS’) Engine (194), a module of computer program instructions that accepts text as input and returns the same text in the form of digitally encoded speech, for use in providing speech as prompts for and responses to users of speech-enabled systems.
The grammar module (104) is configured to provide, to the ASR engine (150), a set of words and sequences of words that currently may be recognized from the input speech. In some implementations, lexicon module (106) associates the words that the ASR engine recognizes with phonemes. The grammar module selects the words currently eligible for recognition. The two sets of words identified by the grammar module and lexicon module at any time may be a same set of words or different sets of words.
Grammars selected by the grammar module may be expressed in several formats supported by ASR engines, including, for example, the Java Speech Grammar Format (USGF′), the format of the W3C Speech Recognition Grammar Specification (‘SRGS’), the Augmented Backus-Naur Format (‘ABNF’) from the IETF's RFC2234, in the form of a stochastic grammar as described in the W3C's Stochastic Language Models (N-Gram) Specification, and in other grammar formats. Grammars typically operate as elements of dialogs, such as, for example, a VoiceXML <menu> or an X+V<form>. A grammar's definition may be expressed in-line in a dialog. Or the grammar may be implemented externally in a separate grammar document and referenced from with a dialog with a URI. The example below exemplifies a grammar expressed in JSFG:
In this example, the elements named <command>, <name>, and <when> are rules of the grammar. Rules are a combination of a rulename and an expansion of a rule that advises an ASR engine or a voice interpreter which words presently can be recognized. In this example, expansion includes conjunction and disjunction, and the vertical bars ‘1’ mean ‘or.’ An ASR engine or a voice interpreter processes the rules in sequence, first <command>, then <name>, then <when>. The <command> rule accepts for recognition ‘call’ or ‘phone’ or ‘telephone’ plus, that is, in conjunction with, whatever is returned from the <name> rule and the <when> rule. The <name> rule accepts ‘bob’ or ‘martha’ or ‘joe’ or ‘pete’ or ‘chris’ or ‘john’ or ‘harold’, and the <when> rule accepts ‘today’ or ‘this afternoon’ or ‘tomorrow’ or ‘next week.’
The command grammar as a whole matches utterances like these, for example:
The voice server application (188) in this example is configured to receive, from a speech-enabled client device located remotely and in data communication with the voice server through network 100, digitized speech for recognition from a user and pass the speech along to the ASR engine (150) for recognition. In carrying out automated speech recognition, the ASR engine receives speech for recognition in the form of at least one digitized word and uses frequency components of the digitized word to derive a speech feature vector or SFV. An SFV may be defined, for example, by the first twelve or thirteen Fourier or frequency domain components of a sample of digitized speech. The ASR engine can use the SFV to infer phonemes for the word from the language-specific acoustic model (108). The ASR engine then uses the phonemes to find the word in the lexicon (106).
Also stored in RAM is a VoiceXML interpreter (192), a module of computer program instructions that processes VoiceXML grammars. VoiceXML input to VoiceXML interpreter (192) may originate, for example, from VoiceXML clients running remotely on speech-enabled devices, from X+V clients running remotely on speech-enabled devices, from SALT clients running on speech-enabled devices, from Java client applications running remotely on multimedia devices, and so on. In this example, VoiceXML interpreter (192) interprets and executes VoiceXML segments representing voice dialog instructions received from remote speech-enabled devices and provided to VoiceXML interpreter (192) through voice server application (188).
A speech-enabled application may provide voice dialog instructions, VoiceXML segments, VoiceXML <form> elements, and the like, to VoiceXML interpreter (149) through data communications across a network with such a speech-enabled application. The voice dialog instructions include one or more grammars, data input elements, event handlers, and so on, that advise the VoiceXML interpreter how to administer voice input from a user and voice prompts and responses to be presented to a user. The VoiceXML interpreter administers such dialogs by processing the dialog instructions sequentially in accordance with a VoiceXML Form Interpretation Algorithm (FIX) (193). The VoiceXML interpreter interprets VoiceXML dialogs provided to the VoiceXML interpreter by a speech-enabled application.
As mentioned above, a Form Interpretation Algorithm (‘FIA’) drives the interaction between the user and a speech-enabled application. The FIA is generally responsible for selecting and playing one or more speech prompts, collecting a user input, either a response that fills in one or more input items, or an execution of an event, and interpreting actions that pertained to the newly filled-in input items. The FIA also handles speech-enabled application initialization, grammar activation and deactivation, entering and leaving forms with matching utterances and many other tasks. The FIA also maintains an internal prompt counter that is increased with each attempt to provoke a response from a user. That is, with each failed attempt to prompt a matching speech response from a user an internal prompt counter is incremented.
Also stored in RAM (168) is an operating system (154). Operating systems useful in voice servers according to embodiments of the present technology include UNIX™, LinuxTM, Microsoft NTTM, AIXTM, IBM's i5/OSTM, and others. Operating system (154), voice server application (188), VoiceXML interpreter (192), ASR engine (150), JVM (102), and TTS Engine (194) in the example of
RAM (168). In some implementations, one or more of the components depicted in
Voice server (151) of
Voice server (151) of
The example voice server of
The example voice server (151) of
For further explanation,
Also disposed in RAM are a triple server application program (297), a semantic query engine (298), a semantic triple store (814), a triple parser/serializer module (294), a triple converter module (292), and one or more triple files (290). The triple server application program (297) accepts, through network (100) from speech-enabled devices such as laptop (126), semantic queries that it passes to the semantic query engine (298) for execution against the triple stores (323, 325).
The triple parser/serializer module (294) administers the transfer of triples between triple stores and various forms of disk storage. The triple parser/serializer (294) accepts as inputs the contents of triple stores and serializes them for output as triple files (290), tables, relational database records, spreadsheets, or the like, for long-term storage in non-volatile memory, such as, for example, a hard disk (170). The triple parser/serializer (294) accepts triple files (290) as inputs and outputs parsed triples into triple stores. In many embodiments, when the triple parser/serializer (294) accepts triple files (290) as inputs and outputs parsed triples into triple stores.
For further explanation,
The method of
The method of
The method of
The method of
The method of
The method of
It will be understood from the foregoing description that modifications and changes may be made in various embodiments of the present technology without departing from its true spirit. The descriptions in this specification are for purposes of illustration only and are not to be construed in a limiting sense.
The subject matter and the actions and operations described in this specification can be implemented in digital electronic circuitry, in tangibly-embodied computer software or firmware, in computer hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. The subject matter and the actions and operations described in this specification can be implemented as or in one or more computer programs, e.g., one or more modules of computer program instructions, encoded on a computer program carrier, for execution by, or to control the operation of, data processing apparatus. The carrier can be a tangible non-transitory computer storage medium. Alternatively, or in addition, the carrier can be an artificially-generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus. The computer storage medium can be or be part of a machine-readable storage device, a machine-readable storage substrate, a random or serial access memory device, or a combination of one or more of them. A computer storage medium is not a propagated signal.
The term “data processing apparatus” encompasses all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. Data processing apparatus can include special-purpose logic circuitry, e.g., an FPGA (field programmable gate array), an ASIC (application-specific integrated circuit), or a GPU (graphics processing unit). The apparatus can also include, in addition to hardware, code that creates an execution environment for computer programs, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them.
A computer program can be written in any form of programming language, including compiled or interpreted languages, or declarative or procedural languages; and it can be deployed in any form, including as a stand-alone program, e.g., as an app, or as a module, component, engine, subroutine, or other unit suitable for executing in a computing environment, which environment may include one or more computers interconnected by a data communication network in one or more locations.
A computer program may, but need not, correspond to a file in a file system. A computer program can be stored in a portion of a file that holds other programs or data, e.g., one or more scripts stored in a markup language document, in a single file dedicated to the program in question, or in multiple coordinated files, e.g., files that store one or more modules, sub-programs, or portions of code.
The processes and logic flows described in this specification can be performed by one or more computers executing one or more computer programs to perform operations by operating on input data and generating output. The processes and logic flows can also be performed by special-purpose logic circuitry, e.g., an FPGA, an ASIC, or a GPU, or by a combination of special-purpose logic circuitry and one or more programmed computers.
Computers suitable for the execution of a computer program can be based on general or special-purpose microprocessors or both, or any other kind of central processing unit. Generally, a central processing unit will receive instructions and data from a read-only memory or a random-access memory or both. The essential elements of a computer are a central processing unit for executing instructions and one or more memory devices for storing instructions and data. The central processing unit and the memory can be supplemented by, or incorporated in, special-purpose logic circuitry.
Generally, a computer will also include, or be operatively coupled to, one or more mass storage devices, and be configured to receive data from or transfer data to the mass storage devices. The mass storage devices can be, for example, magnetic, magneto-optical, or optical disks, or solid-state drives. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device, e.g., a universal serial bus (USB) flash drive, to name just a few.
To provide for interaction with a user, the subject matter described in this specification can be implemented on one or more computers having, or configured to communicate with, a display device, e.g., a LCD (liquid crystal display) monitor, or a virtual-reality (VR) or augmented-reality (AR) display, for displaying information to the user, and an input device by which the user can provide input to the computer, e.g., a keyboard and a pointing device, e.g., a mouse, a trackball or touchpad. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback and responses provided to the user can be any form of sensory feedback, e.g., visual, auditory, speech or tactile; and input from the user can be received in any form, including acoustic, speech, or tactile input, including touch motion or gestures, or kinetic motion or gestures or orientation motion or gestures. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's device in response to requests received from the web browser, or by interacting with an app running on a user device, e.g., a smartphone or electronic tablet. Also, a computer can interact with a user by sending text messages or other forms of message to a personal device, e.g., a smartphone that is running a messaging application, and receiving responsive messages from the user in return.
This specification uses the term “configured to” in connection with systems, apparatus, and computer program components. That a system of one or more computers is configured to perform particular operations or actions means that the system has installed on it software, firmware, hardware, or a combination of them that in operation cause the system to perform the operations or actions. That one or more computer programs is configured to perform particular operations or actions means that the one or more programs include instructions that, when executed by data processing apparatus, cause the apparatus to perform the operations or actions. That special-purpose logic circuitry is configured to perform particular operations or actions means that the circuitry has electronic logic that performs the operations or actions.
The subject matter described in this specification can be implemented in a computing system that includes a back-end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front-end component, e.g., a client computer having a graphical user interface, a web browser, or an app through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (LAN) and a wide area network (WAN), e.g., the Internet.
The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In some implementations, a server transmits data, e.g., an HTML, page, to a user device, e.g., for purposes of displaying data to and receiving user input from a user interacting with the device, which acts as a client. Data generated at the user device, e.g., a result of the user interaction, can be received at the server from the device.
This application claims priority to U.S. Provisional Application No. 63/314,025 filed on Feb. 25, 2022, the entire content of which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
63314025 | Feb 2022 | US |