Systems and methods for distributing intent models

Systems, methods, and non-transitory computer-readable media can receive, from a first entity, training data for training an intent model associated with a first intent of a plurality of intents. A first intent model associated with the first intent is generated based on the training data. The first intent model is made available in an intent marketplace for access by a second entity.

FIELD OF THE INVENTION

The present technology relates to the field of automated natural language and machine learning processing. More particularly, the present technology relates to techniques for generating and distributing intent models.

BACKGROUND

Today, people often utilize computing devices (or systems) for a wide variety of purposes. Users can use their computing devices, for example, to interact with one another, create content, share content, and view content. In some cases, a user can utilize his or her computing device to access various services, such as a search service or a social networking system (or service). When utilizing a computing device, a user will generally interact with one or more computing devices or systems, and various interfaces associated therewith. In order to make such interactions more intuitive, users can be provided with the ability to interact using “natural language” requests. For example, rather than a user having to type in a search request for “weather Alameda, Calif.,” the user can type in the natural language request “What is the weather in Alameda today?” Automated natural language processing techniques can be used to analyze and determine an appropriate response to a user's natural language request.

SUMMARY

Various embodiments of the present disclosure can include systems, methods, and non-transitory computer readable media configured to receive, from a first entity, training data for training an intent model associated with a first intent of a plurality of intents. A first intent model associated with the first intent is generated based on the training data. The first intent model is made available in an intent marketplace for access by a second entity.

In an embodiment, an indication that the second entity has purchased access to the first intent model is received.

In an embodiment, a natural language user request directed to the second entity is received. It is determined that the natural language user request is associated with the first intent. The natural language user request is processed based on the first intent model.

In an embodiment, the processing the natural language user request based on the first intent model is performed based on a determination that the second entity has purchased access to the first intent model.

In an embodiment, the training data comprises a set of private training data, and a set of public training data.

In an embodiment, the first intent model is a public intent model generated based on the set of public training data, and without utilizing the set of private training data.

In an embodiment, a second intent model associated with the first intent is generated based on the set of private training data and the set of public training data.

In an embodiment, the first intent model is made available in the intent marketplace, and the second intent model is not made available in the intent marketplace.

In an embodiment, the first intent model is tested based on a set of testing data. Results of the testing are published in the intent marketplace.

In an embodiment, the set of testing data comprises a plurality of natural language user requests, and the testing the first intent model comprises processing the plurality of natural language user requests based on the first intent model.

DETAILED DESCRIPTION

Generation and Distribution of Machine Learning Intent Models for Automated Natural Language Processing

As mentioned, people often utilize computing devices (or systems) for a wide variety of purposes. Users can use their computing devices, for example, to interact with one another, create content, share content, and view content. In some cases, a user can utilize his or her computing device to access various services, such as a search service or a social networking system (or service). When utilizing a computing device, a user will generally interact with one or more computing devices or systems, and various interfaces associated therewith. In order to make such interactions more intuitive, users can be provided with the ability to interact using “natural language” requests. For example, rather than a user having to type in a search request for “weather Alameda, Calif.,” the user can type in the natural language request “What is the weather in Alameda today?” Automated natural language processing techniques can be used to analyze and determine an appropriate response to a user's natural language request.

Conventional approaches specifically arising in the realm of computer technology include machine learning models that are trained to analyze user natural language requests. Within the technical field of automated natural language processing, there exist the concepts of “intents” and “slots.” Intents are typically high-level use cases associated with various types of user requests, and slots are typically attributes or input parameters used to determine a response to a user request. One or more slots can be associated with an intent, such that the one or more slots associated with an intent may be useful for addressing a user's natural language request associated with the use case for the intent. For example, an example of an intent might include a WEATHER_FIND intent that is used to process user natural language requests directed to finding out the weather in a particular location at a particular time, and the slots associated with the WEATHER_FIND intent can include location information (e.g., a city name) and date/time information (e.g., today). Entities implementing automated natural language processing will generally train one or more machine learning models, sometimes referred to as intent models, to process a user natural language request by identifying an appropriate intent associated with the request, and identifying slot information (i.e., slots) included within the user request. For example, if a user submits the natural language request “What is the weather in Menlo Park going to be like tomorrow?”, one or more machine learning models can be trained to determine that this request is associated with the WEATHER_FIND intent, and to determine that the slot information contained in the request includes location information (Menlo Park) and date/time information (tomorrow).

Such conventional approaches are problematic for various reasons. For example, under conventional approaches, entities seeking to implement automated natural language processing must typically hire numerous in-house engineers to train intent models for each intent the entity plans to implement. These approaches are generally not scalable, and require the hiring of more engineers to train and implement more intent models. This can be particularly problematic for smaller or less sophisticated companies that may not have the technical know-how to properly train and implement machine learning intent models. The inability for conventional approaches to scale efficiently hinders the implementation of machine learned automated natural language processes. Furthermore, existing approaches represent an inefficient utilization of computing resources, as multiple entities must repeat the work of defining their own intents, slots, and intent models. These disparate, often incompatible intent models must then be stored and accessed individually, further exacerbating the waste of computing resources.

An improved approach rooted in computer technology overcomes the foregoing and other disadvantages associated with conventional approaches specifically arising in the realm of computer technology. In general, a set of intents and a set of slots can be defined. A set of domains can also be defined, with each domain comprising one or more intents. In various embodiments, the sets of domains, intents, and/or slots can be defined by any entity implementing an automated natural language processing system, and can include, for example, a platform entity (or platform provider) providing intent models, a social networking system, or an entity that is implementing an automated assistant application. However, rather than having a single entity provide training data and training machine learning models for each and every intent that is defined, the present disclosure contemplates provision of an infrastructure for third parties to train intent models. In other words, once a set of intents and a set of slots have been defined, training data can be received from one or more third parties to train intent models for various intents in the set of intents. A third party can maintain at least some degree of control or ownership over an intent model that has been trained based on the third party's training data. The third party can be provided with a platform on which to distribute its trained intent model. For example, a platform provider, such as a social networking system, can define a set of domains, a set of intents, and a set of slots. The set of domains can include, for example, a “Weather” domain, the set of intents can include one or more intents directed to weather-related user requests, and the set of slots can include one or more slots useful for processing weather-related user requests. However, the social networking system may not be ideally equipped to provide training data for training and implementing weather-related intent models. As such, rather than training its own weather-related intent models, the social networking system can provide an infrastructure for other, better-suited third parties to train weather-related intent models. For example, a provider of a weather application, Weather Company A, can provide training data to train one or more weather-related intent models. Weather Company A can also be provided with the option to distribute its trained weather-related intent models to other parties, such as other weather application providers. In this way, entities that are better suited to implement intent models can train and implement such models, and distribute them (e.g., sell and/or lease them) to other entities that may not have the technical know-how or resources to train intent models. Entities that are not equipped to develop their own intent models can purchase and/or otherwise acquire intent models from other entities. Entities or users, as discussed herein, can include different businesses, companies, organizations, individual users, and the like. More details relating to the disclosed technology are provided below.

FIG. 1illustrates an example system100including an intent marketplace module102, according to an embodiment of the present disclosure. The intent marketplace module102can be configured to manage a set of intents and a set of slots. In an embodiment, the intent marketplace module102can also be configured to manage a pre-defined set of domains. The intent marketplace module102can receive from a first entity training data for training a first intent model. In certain embodiments, an intent model can be associated with one intent of the set of intents. In other embodiments, an intent model can be associated with multiple intents. In certain embodiments, an intent model can be associated with one or more domains of a set of domains, with each domain comprising a plurality of intents. The intent marketplace module102can generate the first intent model based on the training data. The intent marketplace module102can make the first intent model available within a model marketplace. The intent marketplace module102can receive a request from a second entity to acquire access to the first intent model. For example, the request may take the form of a licensing or purchase transaction. The intent marketplace module102can provide the second entity with access to the first intent model based on the request.

In various embodiments, the intent marketplace module102can also receive as an input a natural language user request. The intent marketplace module102can determine an intent of the set of intents that is associated with the user request. The intent may be associated with one or more intent models associated with one or more entities (e.g., generated based on training data provided by the one or more entities). The intent marketplace module102can identify an intent model associated with the intent. The intent marketplace module102can generate a response to the user request based on the intent model.

As shown in the example ofFIG. 1, the intent marketplace module102can include a system definitions module104, an intent model training module106, and a model utilization module108. In some instances, the example system100can include at least one data store110. The components (e.g., modules, elements, etc.) shown in this figure and all figures herein are exemplary only, and other implementations may include additional, fewer, integrated, or different components. Some components may not be shown so as not to obscure relevant details. In various embodiments, one or more of the functionalities described in connection with the intent marketplace module102can be implemented in any suitable combinations.

In some embodiments, the intent marketplace module102can be implemented, in part or in whole, as software, hardware, or any combination thereof. In general, a module as discussed herein can be associated with software, hardware, or any combination thereof. In some implementations, one or more functions, tasks, and/or operations of modules can be carried out or performed by software routines, software processes, hardware, and/or any combination thereof. In some cases, the intent marketplace module102can be, in part or in whole, implemented as software running on one or more computing devices or systems, such as on a server system or a client computing device. In some instances, the intent marketplace module102can be, in part or in whole, implemented within or configured to operate in conjunction with or be integrated with a social networking system (or service), such as a social networking system630ofFIG. 6. Likewise, in some instances, the intent marketplace module102can be, in part or in whole, implemented within or configured to operate in conjunction with or be integrated with a client computing device, such as the user device610ofFIG. 6. For example, the intent marketplace module102can be implemented as or within a dedicated application (e.g., app), a program, or an applet running on a user computing device or client computing system. The application incorporating or implementing instructions for performing functionality of the intent marketplace module102can be created by a developer. The application can be provided to or maintained in a repository. In some cases, the application can be uploaded or otherwise transmitted over a network (e.g., Internet) to the repository. For example, a computing system (e.g., server) associated with or under control of the developer of the application can provide or transmit the application to the repository. The repository can include, for example, an “app” store in which the application can be maintained for access or download by a user. In response to a command by the user to download the application, the application can be provided or otherwise transmitted over a network from the repository to a computing device associated with the user. For example, a computing system (e.g., server) associated with or under control of an administrator of the repository can cause or permit the application to be transmitted to the computing device of the user so that the user can install and run the application. The developer of the application and the administrator of the repository can be different entities in some cases, but can be the same entity in other cases. It should be understood that many variations are possible.

The intent marketplace module102can be configured to communicate and/or operate with the at least one data store110, as shown in the example system100. The data store110can be configured to store and maintain various types of data. In some implementations, the data store110can store information associated with the social networking system (e.g., the social networking system630ofFIG. 6). The information associated with the social networking system can include data about users, user identifiers, social connections, social interactions, profile information, demographic information, locations, geo-fenced areas, maps, places, events, pages, groups, posts, communications, content, feeds, account settings, privacy settings, a social graph, and various other types of data. In some embodiments, the data store110can store information that is utilized by the intent marketplace module102. For example, the data store110can store a set of domains, a set of intents, a set of slots, hierarchical data defining relationships between domains, intents, and slots, training data for one or more intent models, one or more trained intent models, access rights information for the one or more trained intent models, and the like. It is contemplated that there can be many variations or other possibilities.

The system definitions module104can be configured to manage a set of systems definition information. As mentioned above, a platform entity, such as a social networking system, can provide a model generation platform on which one or more intent models can be trained and implemented, and also distributed in a model marketplace. The systems definition information can include a set of intents and a set of slots that have been defined in whole or in part by the platform entity. In an embodiment, the systems definition information can also include a set of domains, and each domain can comprise or be associated with one or more intents. For example, the systems definition information can define a set of domains, and the set of domains can include a first domain directed to “weather” and a second domain directed to “cooking.” The first domain, directed to weather, can include a first intent, “WEATHER_FIND,” which is directed to determining the weather for a particular location at a particular time or within a particular time interval. For example, the WEATHER_FIND intent can be used to respond to a user request “What will the weather be like tomorrow in Los Angeles?” The first domain, directed to weather, can also include a second intent, “WEATHER_ISTRUE,” which is directed to determining a binary attribute about the weather. For example, the WEATHER_ISTRUE intent can be used to respond to a user request “Will it rain in New York tomorrow?” The WEATHER_FIND intent can be associated with the slots “location” and “date/time,” while the WEATHER_ISTRUE intent can be associated with the slots “weather attribute,” “location,” and “date/time.” Similarly, the second domain, directed to “cooking,” can include its own set of intents. For example, the second domain can include a “FIND_RECIPE” intent for finding a recipe, and the intent can be associated with the slot “recipe_name,” to respond to user requests such as “Find me a recipe for chicken marsala.”

As discussed above, a domain can comprise one or more intents, and each intent can be associated with one or more slots. In various embodiments, slots may also be associated with one or more domains. In certain embodiments, certain slots may be “system slots” which can be utilized in any domain or intent. For example, the slots directed to date/time and location could be useful in any domain or intent. As such, these slots may be generally available for use with any domain or intent.

In an embodiment, the set of systems definition information can be defined and/or determined solely by a platform entity, such that the set of systems definition information cannot be modified by any third party without permission of the platform entity. This may be done in order to avoid unnecessary duplication of domains, intents, and/or slots by third parties. In certain embodiments, the system definitions module104can be configured to receive requests from third parties requesting the addition of new domains, intents, and/or slots that do not currently exist. The platform entity can review such requests, and make modifications to the systems definition information if deemed desirable or necessary.

The intent model training module106can be configured to train intent models, such as machine learning models, based on training data. The intent model training module106can receive a set of training data, and generate an intent model based on the set of training data. In certain instances, the intent model training module106can receive training data from a platform entity (e.g., an entity that has defined a set of systems definition information and has provided a model generation platform on which one or more intent models can be trained and implemented). However, as mentioned above, the number of intents defined by the platform entity may be very large such that it may be impractical or undesirable for the platform entity to train intent models to cover every intent. As such, the platform entity may choose to train intent models for a subset of the set of intents. The intent model training module106can also receive training data from one or more third parties to train intent models. For example, a first entity that has expertise in weather-related applications can provide training data to train intent models for weather-related intents, while a second entity that has expertise in cooking-related applications can provide training data to train intent models for cooking-related intents. As another example, a plurality of entities can collaborate by combining their training data and cooperatively training an intent model on the model generation platform.

In an embodiment, training data for training an intent model can comprise a plurality of training instances, with each training instance comprising a sequence of words (e.g., a natural language sentence). Each training instance can also comprise a sequence of slot outputs (or values) indicating which words in the sequence of words are directed to which slots. Each training instance can also comprise an intent output (or value) indicating the intent to which the training instance is directed. For example, a single training instance may include the sentence “What is the weather today in San Francisco?” The training instance can include the intent output “WEATHER_FIND” to indicate that this training instance is directed to the WEATHER_FIND intent. The training instance can also include a set of slot outputs indicating that the word “today” is directed to the slot “date/time,” and the words “San Francisco” are directed to the slot “location,” while all other words in the training instance are not directed to any slot. A second training instance can include the sentence “Tell me the current weather in Los Angeles.” This second training instance can have the same intent output, and slot outputs indicating that the word “current” is directed to the slot “date/time” and the words “Los Angeles” are directed to the slot “location.” By providing a large number of training instances, the intent model can be trained to receive a natural language user request as an input, determine an intent associated with the user request (or determine whether an associated intent is relevant to the user request), and identify slot information contained within the user request (i.e., which words in the user request are relevant to which slots).

As mentioned above, in various embodiments and various instances, an intent model can be associated with a single intent, a set of intents, a domain, and/or a set of domains. For example, an intent model can be directed to the WEATHER_FIND intent, or to all intents contained within the weather domain, or to a subset of intents contained within the weather domain. In certain embodiments, training data provided to the intent model training module106can be for training a new intent model, or for improving an existing intent model. For example, if an existing intent model for an intent is able to identify slot information for two different slots (e.g., location, date/time), additional training data can be provided so that the intent model can identify information relating to a third slot.

In certain embodiments, an entity can designate a subset of training data as private training data, and a subset of training data as public training data. In this way, an entity can submit a single set of training data, but the intent model training module106can train two separate models based on the set of training data: a private intent model based on the private training data and optionally the public data, that is accessible only to the entity that provided the private training data, and a public intent model based on the public training data, that may be accessible to other, additional entities (e.g., other entities that may want to acquire access to the public intent model). This may be useful, for example, if an entity has certain training data that it would like to keep proprietary, or if it has certain training data that is only applicable to the entity, and not to other entities. For example, consider an example scenario in which an automobile rideshare service would like to train an intent model for processing rideshare requests. The rideshare service includes various proprietary levels of service, e.g., LevelVIP, LevelBusiness, LevelPool, etc. It may be useful for the rideshare service's intent model to be able to identify and distinguish between these levels of service (for example, to appropriately distinguish between a first user's request “Book me a LevelVIP to SFO” and a second user's request “Please call me a LevelPool to San Francisco International Airport.”). However, distinguishing between these levels of service would not necessarily be useful for a third party that chose to purchase access to and/or otherwise utilize the rideshare intent model. As such, in this example, the rideshare service's training data can include a first subset of training instances which includes references to the rideshare service's proprietary levels of service, and a second subset of training instances which does not include references to the rideshare service's levels of service. The first subset of training instances can be labeled private training data, while the second subset of training instances can be labeled public training data. The model training module106can train a public intent model based on the public training data, and a private intent model based on the private training data and optionally the public training data. The private intent model can be made accessible only to the rideshare service (e.g., the private intent model is only used when users submit requests directed to the rideshare service), while the public intent model can be made accessible to third parties (e.g., other ridesharing services can acquire access rights to the public intent model so that it can be used to process ridesharing requests for the other ridesharing services).

The model utilization module108can be configured to make one or more intent models available in a model marketplace. Users can use the model marketplace to request and/or gain access to intent models implemented by other users/entities. The model utilization module108can also be configured to process natural language user requests based on intent models. The model utilization module108is described in greater detail with reference toFIG. 2.

FIG. 2illustrates an example model utilization module202configured to utilize one or more intent models, according to an embodiment of the present disclosure. In some embodiments, the model utilization module108ofFIG. 1can be implemented as the model utilization module202. As shown in the example ofFIG. 2, the model utilization module202can include a model marketplace module204and a natural language request processing module206.

The model marketplace module204can be configured to implement a model marketplace within which users can request and/or acquire access to intent models generated on a model generation platform. For example, the model generation platform may be provided by a platform entity, such as a social networking system. As described above, users (e.g., entities) can generate intent models directed to one or more intents defined by the platform by providing a set of training data. Users can opt to make intent models available in the model marketplace. If an intent model is available in the model marketplace, an acquiring user can purchase access to or otherwise secure rights to use the intent model for processing natural language user requests. For example, consider an example scenario in which an entity Weather Provider A has provided training data (e.g., to a social networking system, or other model generation platform) for training one or more weather-related intent models. Weather Provider A, having been responsible for generating the one or more intent models, can use such intent models to process weather-related natural language user requests. For example, a user can send a message to a Weather Provider A bot asking “Is it going to rain today in Washington D.C.?” and the one or more intent models can be used to process the message and generate an appropriate response. Now consider a further scenario in which another weather application, Weather Provider B, also wishes to use the one or more weather-related intent models trained by Weather Provider A. Weather Provider A can make the one or more intent models available in an intent marketplace. Weather Provider B can request access and secure access to the one or more intent models. Once Weather Provider B secures access to the one or more intent models, the model marketplace module204can associate Weather Provider B with the one or more intent models such that natural language user requests directed to Weather Provider B can now be processed using the one or more intent models. In various embodiments, an entity securing accessing to use an intent model can do so through an API or otherwise through networked communication with the model generation platform, the intent marketplace, and/or the entity that generated the intent model.

As mentioned above, a platform entity that implements the model marketplace and/or a model generation platform can train its own intent models for at least some intents. In one embodiment, users may be provided with access to the platform entity's intent models, and can purchase access to or otherwise secure access to upgraded or improved intent models provided by other entities.

In certain embodiments, the model marketplace module204can implement one or more quality control features for ensuring the quality of intent models available in the model marketplace. For example, the model marketplace module204can provide a test set of natural language user requests (or user inputs) to test an accuracy of an intent model. The model marketplace can include a reliability score for each intent model indicating how accurately the intent model was able to process the test set of natural language user inputs. In another embodiment, developers of intent models (i.e., the entity that provided training data for generating an intent model that is posted to the intent marketplace) can provide test data demonstrating the reliability of their intent model. The test data can be posted to the model marketplace so that potential purchasers of intent models can view the test data to assist in making a determination of which intent model to purchase access to or whether or not to purchase access to a particular intent model. In one embodiment, the model marketplace module204can implement a trial period during which a potential purchaser of an intent model can test the intent model to see if it is reliable and whether or not to purchase access to the intent model.

The natural language request processing module206can be configured to process a natural language user input based on one or more intent models. In one embodiment, the natural language request processing module206can determine an intent model that is relevant to the user input based on words contained in the user input. The natural language request processing module206can determine the relevant intent model based on one or more machine learning models. In one embodiment, the natural language request processing module206can utilize the identified intent model to identify slot information in the user input. Identifying slot information can comprise using the intent model to determine, for each word in the user input, whether the word is associated with a slot of a set of slots (e.g., the set of slots defined by a platform entity) and, if yes, which slot. A response to the user request can then be generated and provided to the user. For example, if a user submits the user input “Find me a macaroni and cheese recipe,” the natural language request processing module206can determine that a FIND_RECIPE intent is relevant to the user request, and the words “macaroni and cheese” are associated with and/or relevant to a “recipe name” slot. A search can be run using the slot information, and a response generated for the user wherein the response provides the user with a macaroni and cheese recipe.

In one embodiment, users, through their associated computing devices, can submit natural language user inputs (or natural language user requests) directly to a particular entity in networked communication with the computing devices. For example, if a user would like to obtain a certain type of information, the user, through a computing device associated with the user, can submit a request directly to a bot and/or application provided by an entity that maintains that type of information. The bot or application can include, for example, an application or utility running on a computing device associated with the user or a separate device in networked communication with the computing device associated with the user. In another embodiment, users can submit natural language user inputs to a general assistant application or device. For example, the general assistant application or device can be provided by the same entity that has defined and provided an model generation platform (i.e., the platform entity). In certain instances, the user request can be processed using intent models to which the general assistant application has access. In certain instances, the user request can be forwarded to a relevant entity and/or application for processing. For example, if a user submits a user input “Book me a ride on Rideshare Service A to LAX,” the natural language processing module206can determine that the user request should be forwarded to the entity Rideshare Service A.

FIG. 3illustrates an example function block diagram300associated with implementing a model generation platform and a model marketplace, according to an embodiment of the present disclosure. The functional block diagram300includes a computer system(s) associated with a model generation platform310which may, for example, be implemented using the intent marketplace module102discussed above. The model generation platform310is connected to a computer system(s) associated with one or more model generating users312that provide training data for training one or more intent models on the model generation platform310. The model generation platform310is also connected to a computer system(s) associated with one or more purchaser users314that may secure access to (e.g., purchase access to) one or more intent models on the model generation platform310using, for example, a model marketplace. The model generation platform310includes a set of defined domains D1-Dn. Each domain comprises one or more intents. For example, a domain D1is shown to comprise a set of intents I1-Im. The domain D1is associated with a set of slots s1-sx. Furthermore, each intent in D1is associated with one or more slots of the set of slots. For example, a first intent I1is associated with the slots s1, s3, s5, and s6, and a second intent I2is associated with the slots s2, s3, s4, and s7. The model generation platform310is also associated with a set of system slots directed to date, time, and location. The first intent I1is associated with two intent models320,330. This may be the case, for example, because two different entities have provided the model generation platform310with their own sets of training data for the intent I1, resulting in two different intent models for that intent. Both intent model320,330can be made available in an intent marketplace for other users to view and users can purchase access to use the intent models320,330in the intent marketplace. The second intent I2is also associated with two intent models340,350. However, the first intent model340is only trained to support slots s2, s3, s4, whereas the second intent model350is trained to also support additional slot s7. In this case, an entity that submitted training data for training the second intent model350may have provided training instances identifying examples of natural language user requests that utilize words associated with the slot s7. Once again, the intent models340,350can be made available in a model marketplace. Users may be able to purchase access to the intent model340for a lower price than the intent model350due to additional functionality and support for the additional slot57in relation to the intent model350.

FIG. 4illustrates an example method400associated with implementing an intent model marketplace, according to an embodiment of the present disclosure. It should be appreciated that there can be additional, fewer, or alternative steps performed in similar or alternative orders, or in parallel, within the scope of the various embodiments discussed herein unless otherwise stated.

At block402, the example method400can receive from a first entity training data for training an intent model associated with a first intent of a plurality of intents. At block404, the example method400can generate a first intent model associated with the first intent based on the training data. At block406, the example method400can make the first intent model available in an intent marketplace for purchase by other entities, wherein purchase of the first intent model permits a purchasing entity to utilize the first intent model in processing natural language user requests.

FIG. 5illustrates an example method500associated with processing a natural language user request, according to an embodiment of the present disclosure. It should be appreciated that there can be additional, fewer, or alternative steps performed in similar or alternative orders, or in parallel, within the scope of the various embodiments discussed herein unless otherwise stated.

At block502, the example method500can receive an indication that a first entity has purchased access to a first intent model through an intent marketplace, the first intent model associated with a first intent. At block504, the example method500can receive a natural language user request directed to the first entity. At block506, the example method500can determine that the natural language user request is associated with the first intent. At block508, the example method500can process the natural language user request based on the first intent model based on a determination that the first entity has purchased access to the first intent model.

It is contemplated that there can be many other uses, applications, and/or variations associated with the various embodiments of the present disclosure. For example, in some cases, user can choose whether or not to opt-in to utilize the disclosed technology. The disclosed technology can also ensure that various privacy settings and preferences are maintained and can prevent private information from being divulged. In another example, various embodiments of the present disclosure can learn, improve, and/or be refined over time.

Social Networking System—Example Implementation

The user device610comprises one or more computing devices that can receive input from a user and transmit and receive data via the network650. In one embodiment, the user device610is a conventional computer system executing, for example, a Microsoft Windows compatible operating system (OS), Apple OS X, and/or a Linux distribution. In another embodiment, the user device610can be a device having computer functionality, such as a smart-phone, a tablet, a personal digital assistant (PDA), a mobile telephone, etc. The user device610is configured to communicate via the network650. The user device610can execute an application, for example, a browser application that allows a user of the user device610to interact with the social networking system630. In another embodiment, the user device610interacts with the social networking system630through an application programming interface (API) provided by the native operating system of the user device610, such as iOS and ANDROID. The user device610is configured to communicate with the external system620and the social networking system630via the network650, which may comprise any combination of local area and/or wide area networks, using wired and/or wireless communication systems.

The external system620includes one or more web servers that include one or more web pages622a,622b, which are communicated to the user device610using the network650. The external system620is separate from the social networking system630. For example, the external system620is associated with a first domain, while the social networking system630is associated with a separate social networking domain. Web pages622a,622b, included in the external system620, comprise markup language documents614identifying content and including instructions specifying formatting or presentation of the identified content.

In some embodiments, the social networking system630can include an intent marketplace module646. The intent marketplace module646can, for example, be implemented as the intent marketplace module102, as discussed in more detail herein. As discussed previously, it should be appreciated that there can be many variations or other possibilities. For example, in some embodiments, one or more functionalities of the intent marketplace module646can be implemented in the user device610. As discussed previously, it should be appreciated that there can be many variations or other possibilities.

Hardware Implementation