Task type conversation management framework, equipment and storage medium based on computational graph
1. A computational graph-based task-based session management framework, comprising:
the task management module is used for maintaining the task state of each session task and recording the task state, wherein the task state comprises the current state of each state node in the session task;
a task execution engine, configured to obtain a computation graph of the session task and the task state, and run the computation graph, where the task execution engine includes:
a loading module, configured to load a computational graph of the session task according to the session task in a current session, where the computational graph includes a step of completing the session task and a state node associated with the step, and the state node includes an input node and an output node;
a calculation module, configured to determine the input node and the output node, and perform forward calculation and backward calculation on the step in the calculation graph according to the input node to update the output node;
and the summarizing module is used for summarizing system action output generated by the calculation module when each step is operated.
2. The task-based session management framework of claim 1, wherein the task state further comprises: the current session information, the list of outstanding output nodes and the list of updated state nodes.
3. The task-based session management framework of claim 2, wherein the current session information comprises one or both of a session ID and a session count.
4. The task-based session management framework of claim 2, wherein the current state of the state node comprises: a current value and an update count of the state node.
5. The task-based session management framework of claim 1, wherein the computational graph is a directed acyclic graph.
6. The task-based session management framework of claim 1, wherein types of said steps comprise one or more of updating nodes according to user input, invoking various query/search interfaces, interacting and recommending, selecting from a list, predicting a node value, performing a function, and selecting a node value.
7. The task-based session management framework of claim 1, wherein the task management module confirms whether there is a current conversational task before the task execution engine executes the conversational task,
if not, the current session task is newly established, and the newly established session task is maintained and updated;
and if so, reading the task state in the existing session task.
8. The task-based session management framework of claim 1, wherein the computing module is further configured to:
analyzing the calculation graph according to the determined input node and the output node to obtain steps to be executed and the execution sequence of each step, and executing forward calculation and/or backward calculation on the steps in the calculation graph according to the execution sequence of each step.
9. The task-based session management framework of claim 8, wherein the conditions for performing forward computations on the steps in the computation graph in the order of execution of each step comprise:
the maximum value of the session count of the input node is greater than the maximum value of the session count of the output node;
there is an input in the input node; alternatively, the first and second electrodes may be,
there is an output in the output node.
10. The task-based session management framework of claim 9, wherein the computation module is configured to update a count of output nodes having outputs and update to a queue of nodes for inheritance.
11. A task-based session management framework according to claim 9 or 10, wherein the computing module is configured to add the system action to an action output queue if there is the system action output.
12. The task-based session management framework of claim 9 or 10, wherein the computing module is further configured to mark an unsatisfied flag when the output node is determined to be incomplete.
13. The task-based session management framework of claim 8, wherein the conditions for performing backward computations on the steps in the computation graph in the order of execution of each step comprise:
there are output nodes that do not meet the output after each of the steps has been run.
14. The task-based session management framework of claim 13, wherein in performing the backward computation, the computation module is configured to adjust output node values that are not satisfied or identify input nodes that are not satisfied.
15. A task-based session management framework according to claim 13 or 14, wherein the computing module is configured to add the system action to an action output queue if there is the system action output.
16. An electronic device, comprising:
a memory for storing instructions for execution by one or more processors of the device, an
A processor configured to execute the task-based session management framework of any of claims 1-15 above.
17. A computer-readable storage medium, having stored thereon a computer program, which, when executed by a processor, causes the processor to execute the task-based session management framework of any of claims 1-15.
Background
Existing dialog management schemes are mostly based on dialogflow dialog flow. A dialog flow is a state transition based dialog management framework in a form similar to a flow chart of a dialog script.
At present, because the existing framework for dialogue management adopts a design based on dialogue flow, the framework is suitable for processing simple single-round interactive tasks and closed multi-round interactive tasks with fixed flows. Closed type refers to interaction that does not require other tasks to be performed during the execution of a task. The method has the disadvantages of lacking support for complex multi-round interactive tasks at a framework level, and lacking support for free switching of tasks in a conversation, reference and omission of context information, jumping among task sub-processes and simultaneous execution of multiple tasks.
Disclosure of Invention
In view of the above, the present application provides a task-based session management framework, a device and a storage medium based on a computation graph, which can solve the technical problems mentioned in the background above.
Some embodiments of the present application provide a computational graph-based task-based session management framework. The present application is described below in terms of several aspects, embodiments and advantages of which are mutually referenced.
In a first aspect, the present application provides a computational graph-based task-based session management framework, comprising:
the task management module is used for maintaining the task state of each session task and recording the task state, wherein the task state comprises the current state of each state node in the session task;
a task execution engine, configured to obtain a computation graph of the session task and the task state, and run the computation graph, where the task execution engine includes:
a loading module, configured to load a computational graph of the session task according to the session task in a current session, where the computational graph includes a step of completing the session task and a state node associated with the step, and the state node includes an input node and an output node;
a calculation module, configured to determine the input node and the output node, and perform forward calculation and/or backward calculation on the step in the calculation graph according to the input node to update the output node;
and the summarizing module is used for summarizing system action output generated by the calculation module when each step is operated.
As an embodiment of the first aspect of the present invention, the task state further includes: the current session information, the list of outstanding output nodes and the list of updated state nodes.
As an embodiment of the first aspect of the present invention, the current session information includes one or both of a session ID and a session count.
As an embodiment of the first aspect of the present invention, the current state of the state node includes: a current value and an update count of the state node.
As an embodiment of the first aspect of the present invention, the computational graph is a directed acyclic graph.
As an embodiment of the first aspect of the present invention, the types of the steps include one or more of updating a node according to a user input, invoking various query/search interfaces, interacting and recommending, selecting from a list, predicting a node value, performing a function, and selecting a node value.
As an embodiment of the first aspect of the present invention, when the task execution engine executes the conversational task, the task management module confirms whether there is a current conversational task,
if not, the current session task is newly established, and the newly established session task is maintained and updated;
and if so, reading the task state in the existing session task.
As an embodiment of the first aspect of the present invention, the calculation module is further configured to: analyzing the calculation graph according to the determined input node and the output node to obtain steps to be executed and the execution sequence of each step, and executing forward calculation and/or backward calculation on the steps in the calculation graph according to the execution sequence of each step.
As an embodiment of the first aspect of the present invention, the condition for performing the forward calculation on the steps in the calculation graph according to the execution order of each step includes: the maximum value of the session count of the input node is greater than the maximum value of the session count of the output node; there is an input in the input node; alternatively, there is an output in the output node.
As an embodiment of the first aspect of the present invention, the computing module is configured to update a count of output nodes having outputs, and update the count to a node queue for inheritance.
As an embodiment of the first aspect of the present invention, if there is the system action output, the computing module is configured to add the system action to an action output queue.
As an embodiment of the first aspect of the present invention, the calculation module is further configured to mark an unsatisfied flag when it is determined that the output node is incomplete.
As an embodiment of the first aspect of the present invention, the condition for performing backward calculation on the steps in the calculation graph in the execution order of each step includes: there are output nodes that do not meet the output after each of the steps has been run.
As an embodiment of the first aspect of the present invention, in performing the backward calculation, the calculation module is configured to adjust the output node values that are not satisfied or identify input nodes that are not satisfied.
As an embodiment of the first aspect of the present invention, if there is the system action output, the computing module is configured to add the system action to an action output queue.
In a second aspect, the present application further provides an electronic device, comprising:
a memory for storing instructions for execution by one or more processors of the device, an
And the processor is used for executing the task type session management framework of the embodiment of the first aspect.
In a third aspect, the present application further provides a computer-readable storage medium, in which a computer program is stored, and when the computer program is executed by a processor, the computer program causes the processor to execute the task-based session management framework of the first aspect.
Drawings
FIG. 1 is a scenario diagram of an exemplary task-based dialog management of the present application;
FIG. 2 is a block diagram of a task-based dialog management framework according to an embodiment of the present application;
FIG. 3 is a flowchart illustrating task execution based on a task-based session management framework according to an embodiment of the present application;
FIG. 4 is a computational graph of tasks according to one embodiment of the present application;
FIG. 5 is a block diagram illustrating task-based dialog management, according to an embodiment of the present application;
FIG. 6 is a schematic structural diagram of an electronic device according to an embodiment of the present application;
FIG. 7 is a block diagram of an apparatus of some embodiments of the present application;
fig. 8 is a block diagram of a system on a chip (SoC) in accordance with some embodiments of the present application.
Detailed Description
The technical solutions in the embodiments of the present application will be clearly and completely described below with reference to the drawings in the embodiments of the present application.
The Dialog management Dialog Manager is responsible for managing the whole Dialog process in the Dialog system, determining a system target according to Natural Language Understanding (NLU) and combining Dialog history information, and generating a system Action (Action). The main tasks include maintaining dialog states, executing business logic or calling business interfaces, generating system decisions, etc.
Most of the existing dialog management schemes are based on dialog flow, which is a dialog management framework based on state transition and has a form similar to a flowchart of a dialog script. The basic idea is to define a multi-turn interaction process for the entire task by a designed dialog script. In the conversation process, one or some nodes entering the flow process through condition judgment execute corresponding business logic and output system actions. The realization of different task functions is realized by compiling different dialog scripts; the dialog state includes the current position in the dialog flow and other information that may be used for node condition determination. There is no clear mechanism to realize free switching and information intercommunication between different tasks at the framework level.
That is, in this process, the user does not always express all the related information completely at one time, and the related information is expressed in multiple times. Meanwhile, some service functions (such as taking out orders, searching for destinations and navigating, etc.) are difficult to complete in one round of interaction, and multiple steps of interaction are required. Therefore, how to provide the user with the functions of the system in multiple turns of dialog interaction with the user needs to be considered according to the needs and intentions expressed by the user. The technical scheme of the invention is convenient to realize different task functions on a dialogue system through a dialogue management framework, and simultaneously maintains the state in the task execution process, and realizes free switching and information intercommunication among tasks.
Referring to FIG. 1, FIG. 1 is a diagram of an exemplary scenario for task-based dialog management. As shown in fig. 1, the scenario includes a task management module 110, a task execution engine 120, and a task plug-in 130. The task plug-in 130 is a component which is associated with a task, can provide specific business capability, and is developed in a form specified by a framework. The task management module 110 and the task execution engine are independent of the task itself. The task execution engine 130 is not associated with the task itself as a core module, and the task execution engine 120 may obtain the computation graph of the current session task from the task plug-in 130 according to the fixed algorithm logic, and perform the computation of the computation graph according to the computation graph of the current task and the state (task state) of the task. The task management module 110 maintains a task state of the current session task and records the task state. The task execution engine may obtain the task state from the task management module, run the steps in the computation graph according to a fixed algorithmic logic, and generate system output actions during the running steps. The method can provide possible output actions for the user as much as possible to achieve the intention of the user.
Referring to fig. 2, fig. 2 is a schematic structural diagram of a task-based dialog management framework according to an embodiment of the present application. As shown in fig. 1, the schematic diagram includes a Task management module 110, a Task execution engine 120, and a Task plug-in, where the Task management plug-in may include a Task Schema 131(Task Schema) and a Step 132 (Step). The task execution engine needs to load a computational graph to be executed each time a current session task is executed, then determines input nodes and output nodes (namely target nodes of the task) from the computational graph, and then runs each step in the computational graph. During the operation, the simulation training is similar to that of the simulation training, and the method is divided into forward calculation (forward propagation) and backward calculation (backward propagation). Each step of the computation graph may produce a system action output (action) on the fly. And after the system action output in the merging queue is finished, summarizing the system action output in the merging queue. The task management module updates statistics on the state nodes in the steps executed by the task execution engine to determine the task state of the current session task. The task state may include current session information, such as session id, session count (counter), etc., the list of uncompleted output nodes (target nodes), the list of recently updated state nodes (nodes), and the current state of each state Node (Node) of the task, such as the current value (value) of the Node, update count (counter), etc. And when the task execution engine executes the steps, the information can be acquired from the task management module so as to realize the dependence on the input and the output of each step, and meanwhile, the user can continuously determine the action to be executed by the system based on the user input and the conversation state in the conversation process.
The invention adopts the calculation diagram to describe the task instead of the flow diagram, the calculation diagram only describes the necessary steps of the task, the input and output of each step are interdependent, and no fixed interactive flow exists. When the task is executed, the steps to be executed are selected in real time according to the current conversation state to complete the task, and rich interaction flow possibility can be generated according to the difference of the current node states and the difference of the execution results, so that the requirement of free interaction of a user is met.
In addition, when the task computation graph is executed, the analyzed part of the computation graph is executed by combining forward computation and backward computation, and the forward computation is mainly responsible for updating the state of each node. The backward calculation is responsible for tracing the unsatisfied node output and making possible adjustments. Both processes may output system interactions to meet the user's different needs and possible intentions.
In the application, the task execution engine and the task management module are independent of the task, and task development and framework core capacity can be decoupled. For a task developer, the task developer can focus on the design of a task computation graph (task schema) and the implementation of each step (step) of the task without being concerned about the core capability implementation of the framework. Meanwhile, some task steps can also be used as general components, so that a developer can reuse the steps when developing a new task.
The following describes a task execution process based on the task-based session management framework according to a specific embodiment.
Referring to fig. 3, fig. 3 is a flow chart illustrating task execution based on the task-based session management framework, as shown in fig. 3, including the following steps:
s310, the task execution engine receives the session task (session), and loads the computation graph corresponding to the session task. Such as a navigation routing task entered by the user, etc. Wherein the computation graph is a Directed Acyclic Graph (DAG) in the form of a generalized Directed Acyclic Graph (DAG). And constructing a task calculation graph by taking external signals, user input and the like as input nodes and taking task targets as output nodes. Meanwhile, system interaction acts as the outcome in the execution of each step.
S320, before the task execution engine executes the session task, the task management module determines whether there is a current session task. The session is composed of a session ID (session _ ID), a session count session _ counter, and session content (session _ content). The session count is incremented round by round. And recording the incomplete target node and the state information of each domain by the session content.
And if no, executing S330, newly building the current session task, and performing maintenance and update on the newly built session task.
If yes, executing S340, and reading the task state in the existing session task.
And S350, updating the session count.
S360, the task execution engine executes each step according to the forward sequence. The types of the steps may include update (updating the node according to user input), search (calling various query/search interfaces), recall (interacting and recommending), select (selecting from a list), predict (predicting a node value), execute (execution of various functions), and route (selection of a node value). The functions in each step are not limited to the implementation manner, and may be implemented by calling an external interface, or implemented by rule logic, or implemented by using various model algorithms for machine learning and deep learning. For example: the update-contained Dialog State Tracking (DST) capability may be implemented by rule mapping or a DST model based on deep learning. The recommendation capability contained in recammed can be realized by simply calling a recommendation engine, and the recommendation function can be strengthened by an interactive recommendation model based on deep learning.
If the maximum value of the count (counter) of the input node is larger than the maximum value of the count of the output node, or the input node has input and the output node has output, executing a forward function of the steps associated with the nodes, otherwise, skipping execution. If the output exists, the counter of the output Node is updated, and the counter is updated to the Node queue for inheritance. If the system action outputs, the action is added into the action output queue.
And judging whether the target node required to be output is finished or not, and if not, marking an unsatisfied mark.
If the output node associated with the step does not meet the requirement, performing backward calculation, namely executing a backward function; otherwise skip. During the execution process of the Backward function, the unsatisfied output node value is adjusted or the unsatisfied input node is identified, and meanwhile, system action actions such as inquiry/clarification/confirmation interaction actions and the like can be output.
S370, summarizing system action output generated when each step is executed.
Referring to FIG. 4, FIG. 4 is a computational graph illustrating a navigation task, according to an embodiment of the present invention.
The computation graph includes various steps and state nodes associated with each step, wherein the rectangular boxes represent the steps, the circles represent the state nodes, and the diamonds represent the outputs. As shown in fig. 4, the state nodes are divided into input nodes 410, which typically include user inputs and other signal inputs, and a previous round of designated state inputs, etc. The output node 420, i.e. the target node (goal). Is the task that the system is currently going to perform for the user. And intermediate state nodes 430 between the input nodes and the output nodes are information generated and relied upon during the execution of the task. And the task execution engine performs calculation according to each step in the calculation graph when executing the session task. For example, based on a current scene signal of the input node, such as the user's vehicle being at a certain location. Based on the input of the scene signal, an update step is performed to obtain the current position. If the current state node is the current route, executing a query step based on the current route, obtaining a route to be selected after query, and finally outputting and displaying the route to a user after passing through the route, display and intermediate state nodes such as a selection path, a focus path and the like associated with the steps. During this process, the system action may output a route for selection by the user. E.g. "select the fastest route for you," which route you are going to go ", etc. Therefore, the intention of the user can be guessed conveniently, and more convenience is provided for the user.
In some embodiments, the system action output may also be "search for rainbow bridge station, what restaurant family you want to go to, where you want to navigate to," "find these attractions nearby," "select rainbow bridge train stations for you," do you want to go to your usual kentucky you want to go to a or B, "" we go there the year, "" find multiple routes, "" start navigating, "" still ten minutes to, "and so on, as shown in fig. 4.
The management framework according to the embodiment of the invention can realize rich interaction process possibility to meet the requirement of free interaction of users, and the system interaction action is taken as the output in the execution process of each step. The task is not associated with a task execution engine and a task management module of the core, so that the task can be decoupled, a developer can intensively develop the design of a task calculation graph and the realization of each step of the task, and the development is facilitated. And some steps can be general, so that the resource utilization rate is improved.
Referring to fig. 5, fig. 5 illustrates a structural diagram of task-based dialog management, including:
the task management module 510 is configured to maintain a task state of each session task, and record the task state, where the task state includes a current state of each state node in the session task;
a task execution engine 520, configured to obtain a computation graph of the session task and the task state, and execute the computation graph, where the task execution engine includes:
a loading module 521, configured to load, in a current session, a computational graph of the session task according to the session task, where the computational graph includes a step of completing the session task and a state node associated with the step, and the state node includes an input node and an output node;
a calculation module 522, configured to determine the input node and the output node, and perform forward calculation and backward calculation on the step in the calculation graph according to the input node to update the output node;
a summarizing module 523 configured to summarize system action outputs generated by the computing module during the operation of each step.
The working process and the function of each module of the electronic device of the present invention have been described in detail in the above embodiments, and refer to the descriptions of fig. 1 to fig. 4 in the above embodiments, which are not described herein again.
With reference to fig. 6, the present application further provides an electronic device comprising:
a memory 610 for storing instructions for execution by one or more processors of the device, an
And a processor 620, configured to execute the task-based dialog management framework execution method described in the foregoing embodiments in fig. 1 to fig. 4.
The present application further provides a computer-readable storage medium, which stores a computer program, and when the computer program is executed by a processor, the computer program causes the processor to execute the task-based dialog management framework execution method described in the above embodiments in fig. 1 to fig. 4.
Referring now to FIG. 7, shown is a block diagram of an apparatus 1200 in accordance with one embodiment of the present application. The device 1200 may include one or more processors 1201 coupled to a controller hub 1203. For at least one embodiment, the controller hub 1203 communicates with the processor 1201 via a multi-drop Bus such as a Front Side Bus (FSB), a point-to-point interface such as a Quick Path Interconnect (QPI), or similar connection 1206. The processor 1201 executes instructions that control general types of data processing operations. In one embodiment, Controller Hub 1203 includes, but is not limited to, a Graphics Memory Controller Hub (GMCH) (not shown) and an Input/Output Hub (IOH) (which may be on separate chips) (not shown), where the GMCH includes a Memory and a Graphics Controller and is coupled to the IOH.
The device 1200 may also include a coprocessor 1202 and a memory 1204 coupled to the controller hub 1203. Alternatively, one or both of the memory and GMCH may be integrated within the processor (as described herein), with the memory 1204 and coprocessor 1202 being directly coupled to the processor 1201 and to the controller hub 1203, with the controller hub 1203 and IOH being in a single chip. The Memory 1204 may be, for example, a Dynamic Random Access Memory (DRAM), a Phase Change Memory (PCM), or a combination of the two. In one embodiment, coprocessor 1202 is a special-Purpose processor, such as, for example, a high-throughput MIC processor (MIC), a network or communication processor, compression engine, graphics processor, General Purpose Graphics Processor (GPGPU), embedded processor, or the like. The optional nature of coprocessor 1202 is represented in FIG. 7 by dashed lines.
Memory 1204, as a computer-readable storage medium, may include one or more tangible, non-transitory computer-readable media for storing data and/or instructions. For example, the memory 1204 may include any suitable non-volatile memory, such as flash memory, and/or any suitable non-volatile storage device, such as one or more Hard-Disk drives (Hard-Disk drives, hdd (s)), one or more Compact Discs (CD) drives, and/or one or more Digital Versatile Discs (DVD) drives.
In one embodiment, device 1200 may further include a Network Interface Controller (NIC) 1206. Network interface 1206 may include a transceiver to provide a radio interface for device 1200 to communicate with any other suitable device (e.g., front end module, antenna, etc.). In various embodiments, the network interface 1206 may be integrated with other components of the device 1200. The network interface 1206 may implement the functions of the communication unit in the above-described embodiments.
The device 1200 may further include an Input/Output (I/O) device 1205. I/O1205 may include: a user interface designed to enable a user to interact with the device 1200; the design of the peripheral component interface enables peripheral components to also interact with the device 1200; and/or sensors may be configured to determine environmental conditions and/or location information associated with device 1200.
It is noted that fig. 7 is merely exemplary. That is, although fig. 7 shows that the apparatus 1200 includes a plurality of devices, such as the processor 1201, the controller hub 1203, the memory 1204, etc., in practical applications, an apparatus using the methods of the present application may include only a part of the devices of the apparatus 1200, for example, only the processor 1201 and the NIC1206 may be included. The nature of the alternative device in fig. 7 is shown in dashed lines.
According to some embodiments of the present application, the memory 1204 serving as a computer-readable storage medium stores instructions, which when executed on a computer, enable the system 1200 to perform the computing method according to the above embodiments, and specifically, the task-based dialog management framework execution method described with reference to fig. 1 to 4 in the above embodiments may be described, and will not be described herein again.
Referring now to fig. 8, shown is a block diagram of a SoC (System on Chip) 1300 in accordance with an embodiment of the present application. In fig. 8, like parts have the same reference numerals. In addition, the dashed box is an optional feature of more advanced socs. In fig. 8, the SoC1300 includes: an interconnect unit 1350 coupled to the application processor 1310; a system agent unit 1380; a bus controller unit 1390; an integrated memory controller unit 1340; a set or one or more coprocessors 1320 which may include integrated graphics logic, an image processor, an audio processor, and a video processor; a Static Random Access Memory (SRAM) unit 1330; a Direct Memory Access (DMA) unit 1360. In one embodiment, the coprocessor 1320 includes a special-purpose processor, such as, for example, a network or communication processor, compression engine, GPGPU, a high-throughput MIC processor, embedded processor, or the like.
Included in Static Random Access Memory (SRAM) unit 1330 may be one or more computer-readable media for storing data and/or instructions. A computer-readable storage medium may have stored therein instructions, in particular, temporary and permanent copies of the instructions. The instructions may include: when executed by at least one unit in the processor, the Soc1300 is enabled to execute the computing method according to the foregoing embodiments, and the task-based dialog management framework execution method described with reference to fig. 1 to fig. 4 in the foregoing embodiments may be specifically referred to, and will not be described herein again.
Embodiments of the mechanisms disclosed herein may be implemented in hardware, software, firmware, or a combination of these implementations. Embodiments of the application may be implemented as computer programs or program code executing on programmable systems comprising at least one processor, a storage system (including volatile and non-volatile memory and/or storage elements), at least one input device, and at least one output device.
Program code may be applied to input instructions to perform the functions described herein and generate output information. The output information may be applied to one or more output devices in a known manner. For purposes of this Application, a processing system includes any system having a Processor such as, for example, a Digital Signal Processor (DSP), a microcontroller, an Application Specific Integrated Circuit (ASIC), or a microprocessor.
The program code may be implemented in a high level procedural or object oriented programming language to communicate with a processing system. The program code can also be implemented in assembly or machine language, if desired. Indeed, the mechanisms described in this application are not limited in scope to any particular programming language. In any case, the language may be a compiled or interpreted language.
In some cases, the disclosed embodiments may be implemented in hardware, firmware, software, or any combination thereof. The disclosed embodiments may also be implemented as instructions carried by or stored on one or more transitory or non-transitory machine-readable (e.g., computer-readable) storage media, which may be read and executed by one or more processors. For example, the instructions may be distributed via a network or via other computer readable media. Thus, a machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer), including, but not limited to, floppy diskettes, optical disks, Compact disk Read Only memories (CD-ROMs), magneto-optical disks, Read Only Memories (ROMs), Random Access Memories (RAMs), Erasable Programmable Read Only Memories (EPROMs), Electrically Erasable Programmable Read Only Memories (EEPROMs), magnetic or optical cards, flash Memory, or a tangible machine-readable Memory for transmitting information (e.g., carrier waves, infrared signals, digital signals, etc.) using the Internet in electrical, optical, acoustical or other forms of propagated signals. Thus, a machine-readable medium includes any type of machine-readable medium suitable for storing or transmitting electronic instructions or information in a form readable by a machine (e.g., a computer).
While the present application has been shown and described with reference to certain preferred embodiments thereof, it will be understood by those of ordinary skill in the art that various changes in form and details may be made therein without departing from the spirit and scope of the present application.