Patent Publication Number: US-11398918-B1

Title: Passive user authentication

Description:
CROSS-REFERENCE TO RELATED PATENT DOCUMENTS 
     This patent application claims the benefit of priority, under 35 U.S.C. § 119(e), to U.S. Provisional Patent Application Ser. No. 62/748,704, titled “PREDICTIVE TEXT SYSTEM,” filed on Oct. 22, 2018, which is incorporated by reference in its entirety. 
    
    
     BACKGROUND 
     There are many types of character input devices used with computing devices. For example, a physical keyboard is often the main input device for a laptop computer or desktop computer. As smaller mobile devices become more prevalent, physical keyboard were often removed in favor of overloading numerical keys already present on phones. For example, the ‘2’ key may be used for ‘a’, ‘b’, or ‘c.’ A person may hit the ‘2’ key once for ‘a’, twice for ‘b’, and three times for ‘c.’ In many instances, touch interfaces with on-screen keyboards replaced physical keyboards and keypads. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       In the drawings, which are not necessarily drawn to scale, like numerals may describe similar components in different views. Like numerals having different letter suffixes may represent different instances of similar components. Some embodiments are illustrated by way of example, and not limitation, in the figures of the accompanying drawings. 
         FIG. 1  is a component diagram of a mobile application and a predictive text server, according to various examples. 
         FIG. 2  is a diagrammatic representation of training and using a suggestion component, according to various examples. 
         FIG. 3  is a user interface diagram on a mobile device, according to various examples. 
         FIG. 4  is a diagrammatic representation of training and using a suggestion component, according to various examples. 
         FIG. 5  is a user interface diagram on a mobile device, according to various examples. 
         FIG. 6  is a flowchart illustrating a method to present suggested terms to a user, according to various examples. 
         FIG. 7  is swim lane diagram illustrating a method to enroll a mobile application as a passive authenticator, in various examples. 
         FIG. 8  is a block diagram illustrating an example machine upon which any one or more of the techniques (e.g., methodologies) discussed herein may be performed, according to an example embodiment. 
     
    
    
     DETAILED DESCRIPTION 
     In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of some example embodiments. It will be evident, however, to one skilled in the art that the present invention may be practiced without these specific details. 
     Throughout this disclosure, electronic actions may be taken by components in response to different variable values (e.g., thresholds, user preferences, etc.). As a matter of convenience, this disclosure does not always detail where the variables are stored or how they are retrieved. In such instances, it may be assumed that the variables are stored on a storage device accessible by the component via an API or other program communication method. Similarly, the variables may be assumed to have a default values should a specific value not be described. User interfaces may be provided for an end-user or administrator to edit the variable values in some instances. 
     One of the problems when using keyboard entry methods on mobile devices with small display devices, like cellular phones, is the error rate when entering words. Additionally, the speed of text entry using mobile devices is often much lower than traditional, full-sized, physical keyboards. 
     Predictive text systems were introduced to help alleviate some of these challenges. For example, a user may enter ‘Ap’ and a completion suggestion for “April” may appear in a box above an on-screen keyboard. Because of the limited screen space available on mobile devices, only a few suggestions may be presented (e.g., three or fewer). Accordingly, the presented suggestions are often based on a combination of word stemming and frequency of use. A dictionary may be stored that indicates the relative frequency of a word. In some instances, user-specific terms (e.g., email-addresses, street names, etc.) may be added to the dictionary if they are used more than a threshold amount of times. 
     Predictive text systems may take into consideration the previous word entered in presenting suggestions. For example, if a user types “I&#39;ll” suggestions may appear—before the user even enters in another character—such as “be” or “do” or “have.” The suggestions may be refined as a user type. Thus, if a user types ‘d’ the suggestions may be updated to “do” and “definitively.” 
     Current predictive text systems are inadequate for specialized contexts or technical fields. For example, consider that a user is conversing via a messaging interface with a customer service agent of a bank. If the user types “Ap” the suggestions would not give an option for “APR” because “APR” is not frequently used in regular speech patterns compared to “app” or “apple”. A more intelligent predictive text system, as describe herein, considers the context of the chat, such that “APR” may be presented. As another example consider that a user may types “chec.” Current systems may suggest “checking,” but the next suggested set of words may be “in”, “out”, and “to,” not “balance” as is likely intended given a financial context. 
     In view of the above problems and limitations of existing predictive text systems, an improved predictive text mechanism may be used. The predictive text system may be used within a financial application installed on a user&#39;s mobile device, such as a cellular phone in various examples. The predictive text system may use a trained machine learning model, such as a neural network, to suggest words or phrases (herein referred as terms) based on characters input into a keyboard. Although discussed in a financial context, the described solution is not limited to such uses. For example, other specialized or context specific domains (e.g., medical) may train their own neural networks to suggest terms to a user. 
     In some examples, the described techniques may be used to suggest chatbots to a user as part of a predictive keyboard suggestion. The training data may be intents of users with respect to various tasks (e.g., checking balance, fraud, getting current interest rates, etc.) and if the intent of the user matches a chatbot that can help the user (as defined by a dataset), a chatbot may be presented as a suggestion. Thus, if a user types “help with fraud” a suggestion may include “chatbot” because the training data indicates that the chatbot is capable of helping answer questions about fraud. 
     The neural network may be trained using a subject matter specific text corpus. The limited corpus may include financial texts, relationship information of a user with an entity, line of business user experience optimized content, and suggested phrases. More detailed descriptions of the training corpus are described below. By using a subject matter specific corpus, the neural network may be trained to suggest terms in a specialized context as opposed to common usage terms—as done by existing predictive text systems. 
     In addition to the neural network, a scoring function (e.g., weighted values) may be used to re-rank some of the suggested terms from the neural network. In various examples, the suggested terms may be paired with user-specific information and presented to the user for selection. For example, if the user has a mortgage account with a financial institution, and types “mort” a suggested term may be “mortgage balance: $234,124.” 
     The described predictive text system provides many benefits over existing predictive text systems. First, it provides a subject-matter specific predictive library of words by using a neural network. Second, the suggest terms may incorporate data stored in remote servers outside of the predictive text system such as user profile or relationship information with an entity. Third, the suggested terms may include sensitive data (e.g., account balances) that are not stored on the cellular device. Other benefits may be apparent to one skilled in the art. 
     Given the limited screen space, the described predictive text system may provide an improved input method and user interface to users. Additionally, security benefits may be realized by using the authentication status with a third-party before presenting sensitive information. 
       FIG. 1  is a component diagram  100  of a mobile application and a predictive text server, according to various examples. Diagram  100  illustrates mobile device  102 , mobile application  104 , and predictive text system  106 . Mobile application  104  may include text input interface  108 , input processing  110 , authorization component  112 , suggestion interface  114 , neural network  130 , and content presentation component  116 . Predictive text system  106  may include Application Programming Interface (API)  118 , user profiles  120 , term scoring interface  122 , web server  124 , suggestion component  126 , content data store  128 , neural network  130 . Diagram  100  further shows character input sequence  134  being transmitted to predictive text system  106  and user specific term suggestion  136  being transmitted to mobile device  102 . Although discussed in the content of mobile devices without a physical keyboard, the described operations of predictive text (e.g.,  FIG. 6 ) and authentication (e.g.,  FIG. 7 ) may also be used on other user devices (e.g., a desktop device) with physical keyboards. 
     For illustration purposes, mobile application  104  and predictive text system  106  are illustrated as respective sets of separate functional units (e.g., text input interface  108 , input processing  110 , term scoring interface  122 , etc.). The functionality of multiple units may be performed by a single unit. In various examples, the features described for the functional units of mobile application  104  may be performed at predictive text system  106 , as well as the reverse. 
     A functional unit may represent computer program code that is executable by a processing unit (e.g., a core of a general-purpose computer processor, a graphical processing unit, an application specific integrated circuit, etc.). The program code may be stored on a storage device and loaded into a memory of the processing unit for execution. Portions of the program code may be executed in a parallel across multiple processing units. Execution of the code may be performed on a single device or distributed across multiple devices. In some example, the program code is executed on a cloud platform (e.g., MICROSOFT AZURE® and AMAZON EC2®) using shared computing infrastructure. 
     Mobile device  102  may be a device without a separate physical keyboard entry method such as a phone or tablet with a touch screen. Predictive text system  106  may be used with other client devices in various examples. Client devices may include, but are not limited to, a smartphone, tablet, laptop, multi-processor system, microprocessor-based or programmable consumer electronics, game console, set-top box, or other devices that a user utilizes to communicate over a network. In example embodiments, mobile device  102  may comprise a display module (not shown) to display information (e.g., in the form of specially configured user interfaces). In some embodiments, mobile device  102  may include one or more of a touch screen, camera, keyboard, microphone, and Global Positioning System (GPS) device. 
     In various examples, mobile device  102  and predictive text system  106  may communicate via one or more networks (not illustrated). A network may include local-area networks (LAN), wide-area networks (WAN), wireless networks (e.g., 802.11 or cellular network), the Public Switched Telephone Network (PSTN) network, ad hoc networks, cellular, personal area networks or peer-to-peer (e.g., Bluetooth®, Wi-Fi Direct), or other combinations or permutations of network protocols and network types. A network may include a single local area network (LAN) or wide-area network (WAN), or combinations of LAN&#39;s or WAN&#39;s, such as the Internet. 
     Mobile application  104  (also referred to a predictive keyboard) may be installed on mobile device  102  in variety of ways. Mobile application  104  may be used for text processing as part of a larger application. For example, a financial institution may offer one or more applications (e.g., a banking application, a business management application) that have input elements. When using the input elements, mobile application  104  may process the input and provide suggestions as the user types. The user may authenticate to the larger application before some of the suggestions are presented. For example, to have a suggestion with an account balance, the user may need to use a biometric sensor on mobile device  102  to confirm the user&#39;s identity. 
     Mobile application  104  may be used to process input in a chat application. The chat application may be associated with the same organization/enterprise as mobile application  104  or be a third-party application (e.g., Messenger by the FACEBOOK® social network). If a third-party application is used, mobile application  104  may restrict some of the suggestions regardless of the authentication status of the user. Restrictions may include preventing suggestions with account numbers or balances. Accordingly, in some instances, the predictive keyboard may function as financial specific predictive keyboard in contrast with a financial specific predictive keyboard customized to a user. 
     In various examples, mobile application  104  may be a replacement keyboard installed on mobile application  104  downloaded from an online store (e.g., the APPLE APP STORE® or the GOOGLE PLAY™ STORE). A user may select mobile device  102  for use as the input mechanism for text entry using preferences provided by the operating system of mobile device  102 . As with third-party applications, suggestions may be restricted when using mobile application  104  as a replacement keyboard outside of an application associated with the organization providing the keyboard. 
     A predictive keyboard may also be used as part of a web application. A web application may provide user interface (UI) components that are rendered on a display device of a computing device using a web browser. The user may interact (e.g., select, move, enter text into) with the UI components, and, based on the interaction, the web application may update one or more portions of the web page. A web application may be executed in whole, or in part, locally on a client device. The web application may use the functional units illustrated in mobile application  104  or predictive text system  106  to suggest terms to a user. 
     A web browser on mobile device  102  and web application hosted by web server  124  be may communicate via API  118 . An API provides a method for computing processes to exchange data. A web-based API may permit communications between two or more computing devices such as a client and a server. API  118  may define a set of HTTP calls according to Representational State Transfer (RESTful) practices. A RESTful API may define various GET, PUT, POST, DELETE methods to create, replace, update, and delete data stored on in a database on the server. For example, “GET/balance/userid” may be used to retrieve balance information for the identification indicated by “userid.” The balance may be used as part of a suggested paired term presented to a user. API  118  may transmit responses to requests for data according to the JavaScript Object Notation (JSON) format. 
     APIs may also be defined in frameworks provided by an operating system (OS) manufacturer to access data an application may not regularly be permitted to access. For example, an OS of mobile device  102  may define an authentication API call. Accordingly, an application provider may use the API call to request a user be authenticated using a biometric sensor on the mobile device. By segregating any underlying biometric data—e.g., by using a secure element—the risk of unauthorized transmission of the biometric data may be lowered while still providing the application with the knowledge that the user is authentic. The authentication of user with respect to mobile device  102  may be used to retrieve stored credentials for the mobile application  104 . This information may then be passed to an external server (e.g., a financial institution) for authentication with the external server. Only after the external service authenticates the user with their credentials may the user be considered authenticated with respect to mobile application  104  in various examples. 
     Text input interface  108  may be rendered as a text input box on a display of mobile device  102 . As the user enters characters into text input interface  108 , input processing  110  may convert the characters into a vector representation (discussed in more detail in  FIG. 2 ) for feeding into a trained neural network such as neural network  130 . The output of neural network  130  may, for a given vocabulary of terms, determine the likelihood expressed as a probability or cosine distance the user will type a term given the input vector. When neural network  130  is part of mobile application  104 , it may be updated periodically by a copy of neural network  130  located at predictive text system  106 . 
     Suggestion interface  114  may present the set of terms with the highest likelihood. The number of terms presented may be limited given the physical constraints of the display device of mobile device  102 . For example, when the display is only two inches across, three suggestions may be presented. Suggestion interface  114  may be displayed in a variety of places on a user interface on the display device. In some examples, the suggestions are presented above a keyboard interface on the display device. In some examples, the suggestions are presented as part of a drop-down menu. The suggestions may be selectable by touching the suggestion on the display device. 
     After a user selects one of the terms, input processing  110  may take the selected term and use it as an input into neural network  130 . Based on the output neural network  130 , suggestion interface  114  may be updated to present new suggestions. 
     Authorization component  112  may be used to authenticate the user with respect to an organization such as a financial institution. For example, authorization component  112  may present input boxes for a user name and password. In example, authorization component  112  uses an API provided by an OS of mobile device  102  to authenticate the user using biometrics (e.g., facial identification, fingerprint, etc.). 
     The suggested terms presented may be paired with user specific data values depending on the authentication status of the user with respect to mobile application  104  and the location of the predictive keyboard, such as a keyboard within an application provided by the same organization as the predictive keyboard or a third-party application such as a generic chat application. For example, if the most likely term is balance and the user is authenticated, an account balance may be paired with account to create a paired suggested term of “balance: $5,235.” The paired term may be presented within suggestion interface  114 . When the user is not authenticated, a non-paired term of “balance” may be presented. 
     Content presentation component  116  may be used to present content related to a selected term. For example, if text input interface  108  is part of a search query, content presentation component  116  may present content tagged with elements of the search of suggested terms of the search. The content may include documents, pictures, text, etc. The content may be retrieved from content data store  128 . For example, if a user types “apply for a” and the suggested term is “mortgage” content may appear with information regarding current mortgage rates and a link to apply for a mortgage. 
     With respect to predictive text system  106 , user profiles  120  may store information related to users. For example, consider that predictive text system  106  is provided as part of a financial institution&#39;s mobile application. A user may use the application to view account balances, transfer money, etc. In such a scenario, user profiles  120  may store account numbers, interest rates, account balances, fraud claims, etc. The information in predictive text system  106  may be used to create a paired term suggestion as described previously. 
     Different types of user data may be stored differently depending on a sensitivity classification and use case. For example, non-sensitive data may be cached on mobile device  102  regardless of authentication status such as neural network  130 . Some data such as content data may be stored at predictive text system  106  and retrieved on demand. Sensitive data such as account numbers and balances may be stored at predictive text system  106  and may only be accessed if the user is authenticated. Any sensitive data may be deleted from mobile application  104  when the user logs out or when a user session ends. 
     In various examples, sensitive data is only transmitted back to mobile device  102  as a suggested paired term. For example, suggestion component  126  may receive characters input into mobile application  104 . Suggestion component  126  may submit input the characters, in vector faun, into neural network  130  at predictive text system  106 . As discussed above, the output of neural network  130  may indicate the most likely completed or next term. If the likelihood includes a term that may be paired with sensitive user data, suggestion component  126  may retrieve the user data to create the paired term and transmit it back to mobile application  104  for presenting in suggestion interface  114 . 
     Term scoring interface  122  may be used to create additional training data for neural network  130  as well as increasing/decreasing weights for an output term given an input value. The most knowledgeable person be a specialized field or line of business may be a person that works within that line of business. Term scoring interface  122  is discussed in more detailed in the context of  FIG. 2 . 
       FIG. 2  is a diagrammatic representation of training and using suggestion component  126 , according to various examples.  FIG. 2  illustrates suggestion component  126  with vector space model of text  210 , neural network for predictions  212 , and scoring engine  214 . Inputs are illustrated as financial corpus  204 , banking information  206 , and phrase builder  208 . Term scoring interface  122  may be used to create training phrases for phrase builder  208 . Word/phrase suggestion coordinator  216  and word/phrase detector  218  may be used in conjunction with suggestion component  126  to generate suggestions for presenting on mobile device  102 . In various examples, neural network for predictions  212  is a neural network such as neural network  130 . Suggestion coordinator  216  may also use account information relationship resolver  220 , normalizer  222 , security filter  224  to obtain the account information suggestions  226  in various examples 
     Different machine learning models are used depending on the type of training data available. For example, supervised learning may be used with labeled data sets that include an input and output. Unsupervised learning may use non-labeled data sets. A subset of machine learning uses word embeddings to train a machine learning model. A word embedding is a vector representation of word or phrase that may be compared to another word to determining their similarity. Different machine learning models use and generate word embeddings in different ways. For example, suggestion component  126  may use training data such as financial corpus  204  (e.g., articles from financial related websites, novels, news articles, references, etc.) to generate the word embeddings. In some examples, pre-trained models may be used that include a set of word embeddings for use as a starting point. 
     Training of neural network for predictions  212  in suggestion component  126  may be implemented in a variety of ways, including but not limited to, Word2Vec, GloVe, fastText, and conceptnumberbatch. In some examples, neural network for predictions  212  is a shallow neural network with a single hidden layer (e.g., Word2Vec) or a distributional semantic model (e.g., GloVe). Word2vec supports two prediction types of embeddings: Continuous Bag of Words (CBOW) and Skip Gram. CBOW uses the context to predict the words whereas Skip Gram uses the opposite model of CBOW where context is predicted using a sequence of characters or words. Other neural network architecture may also be used such as recurrent neural networks using long short-term memory units that consider an order of words. Regardless of the precise model used, the result of training the model may be a set of word embeddings for words in the training data. 
     Word2vec is an example technique that generates word embeddings (e.g., vector representations) of a vocabulary of words. The number of features for each word embedding (e.g., how many dimensions in the vector) may be configurable. This technique first forms a “one-hot” or 1-of-N encoding from a vocabulary of words (e.g., vector space model of text  210 ), which may be based on financial corpus  204 . So, if the vocabulary includes [king, queen, man, women], king may be encoded in a vector of [1, 0, 0, 0], queen as [0, 1, 0, 0] and so forth. Each vector may only have a single ‘1’ and the rest ‘0’s. Once each word has a vector representation, mathematical calculations may be made such as v(King)−v(Man)+v(Woman) may approximately equal v(Queen). Furthermore, the word embeddings may be used to find semantically similar words. 
     Neural network for predictions  212  may be used to generate a word embedding, of N features, for each of the words in the vocabulary. Neural network for predictions  212  may include a single fully connected hidden layer with N×V nodes. The output layer may be the same size as the input layer—four nodes continuing the example above. A matrix of size V×N may connect the input layer to the hidden layer and a matrix N×V connections may connect the nodes of the hidden layer to the output layer. The SoftMax function may be used to translate the output layer into a series of probabilities that add up to one based on the corpus of text and given vocabulary. 
     The neural network may be trained by using word (or phrase) pairs (context, target) from corpus of training data. The neural network may have a window parameter that indicates how far from a “center word” pairs should be generated. The words in the window may be considered contextual terms for the center word. Consider the phrase “Your checking  account  balance is $15,345” with a two-word window. The underlined term may be the center word. Pairs may be created by selecting each word in the sentence and going forward or backward (respecting stops like periods) according to the window. So, when “account” is the center word, word pairs of [account, checking]; [account, your]; [account, balance]; and [account, is] may be created. 
     After training, the rows of the weight matrix between the input layer and the hidden layer are the word embeddings. For example, if the one-hot-encoded of “checking” was the 355 th  position (e.g., [0, 0, 0, . . . , 1, . . . ) the word embedding would be the 355 th  row of the weight matrix: 1st row [50, 23, 34, 23, . . . ] 2nd row [34, 34, 87, 34, . . . ] . . . 355th row [97, 48, 27, 54, . . . ]. Thus, in effect, the weight matrix becomes a lookup table for the word embeddings. The similarity of two words may be determined by calculating the cosine difference between two different words in the resulting vector space. Accordingly, the closer two words are in vector space, the more likely they have appeared near each other in the training data. Therefore, the closer a first word and a second word are in vector space, the more likely a user may type the second word given the first word. 
     A distributional semantic model like GloVe (global vectors for word representation) may apply an unsupervised learning algorithm that generates a co-occurrence matrix. GloVe looks at how many times a target word appears in the context (e.g., a window size or sentence) of a context word. GloVe may parse corpus of training data to obtain these counts. After parsing, the training objective of GloVe yields word embeddings such that their dot product equals the logarithm of the words&#39; probability of co-occurrence. Other latent semantic analysis methods may be also be used to derive the co-occurrence matrix. 
     In various examples, banking information  206  and phrases resulting from phrase builder  208  may also be used to train neural network. In some examples, banking information  206  and the phrases may be used to augment or modify the output from neural network for predictions  212 . Banking information  206  is user specific. For example, the most likely term for account may be “checking,” but if the user does not have a checking account according to banking information  206 , “checking” may not be shown as an example or may be placed lower in a result list. 
     Phrase builder  208  may include phrases entered various by subject matter experts using term scoring interface  122  that may not be prevalent in financial corpus  204 . The subject matter experts may also provide rules that override or modify a ranking of the suggestions of output by neural network for predictions  212 . The rules may be stored as part of business rules  214  for ranking. For example, a subject matter expert may indicate that if a user types “Reset” the first suggested term may be “password” regardless of what neural network for predictions  212  indicates. 
     Regardless of the precise methodology used (LSA, GloVe, word2Vec, the result of the training may be a lookup table that be used to suggest terms based on characters entered by a user. 
     Another source of suggestions may be banking information of the user based on the account relationships with the bank. The banking information may only be available if the user is authenticated with the bank. Account information relationship resolver may use the login information of the user with the bank to retrieve the banking information. Nomializer  222  may take account balances and normalize the balances into a prescribed format (e.g., $X,XXX). Security filter  224  may be used to confirm the authenticated status of the user before the banking information is used in a suggestion. Account relationship information suggestions  226  may be passed back to scoring engine  214 , which makes the ultimate decision of what suggestions to present to a user. 
     Word/phrase detector  218  may take the input from a user on mobile device  102  and submit it to suggestion component  126 . Vector space model of text  210  may be used to take the input and convert it to a feature vector for submission to neural network for predictions  212 . The most likely words based on neural network (or other training model) for predictions  212  may be modified based on scoring engine  214  used for ranking. If the user is authenticated, word/phrase suggestion coordinator  216  may take sensitive user data such as balance information and pair it with one of the suggested terms and present them to the user on mobile device  102 . 
     In various examples, scoring engine  214  is a scoring function (e.g., a weighting function, if/then rules, etc.) that decides which suggestions to ultimately present to a user. The suggestions may be of three types: financial corpus suggestions based on neural network  212 ; banking information (e.g., account balance) based on the user account relationships, and mobile in-app links. The mobile in-app link suggestions may be based a similarity comparison between characters entered by the user and in-app links (e.g., BillPay). 
       FIG. 3  is a user interface diagram on a mobile device, according to various examples. The user interface of mobile device  102  includes input box  302 , application content  304 , keyboard  306 , and term suggestions  308 - 312 . In various examples, the user interface is presented on a touch screen of mobile device  102 . 
     As illustrated, a user may have entered “Acc” into input box  302 . Input box  302  may be an example of text input interface  108 . Input processing  110  may use “Acc” as an input into neural network  130 . In response, a set of suggestions may be generated as discussed previously. Some of the suggested may be paired suggestions such as term suggestion  310  and term suggestion  312 . The paired suggestion may be a suggestion with banking information. 
       FIG. 4  is a diagrammatic representation of training and using a suggestion component  410 , according to various examples. Suggestion component  410  may be trained using all available mobile app screen information  402 . Mobile app screen information  402  may be text or links to areas of a mobile application (e.g., mobile application  104 ). A set of word embeddings from a word2vec model  404  may be used with LSTM classifier  406  to generate in-app link suggestions based on characters input from a user using mobile device  102 , for example. The suggestions may be presented by suggestion coordinator  408  in various examples. 
       FIG. 5  is a user interface diagram on a mobile device, according to various examples. The user interface of mobile device  102  includes input box  502 , application content  504 , keyboard  506 , in-app link  508 , and link action  510 . In various examples, the user interface is presented on a touch screen of mobile device  102 . 
     As illustrated, a user may have entered “Bi” into input box  502 . Input box  502  may be an example of text input interface  108 . Input processing  110  may use “Bi” as an input into neural network  130 . In response, a set of suggestions may be generated as discussed previously which include “Bill Pay”, “Billing Cycle” and “Billing Date”. Additionally, a scoring engine (e.g., scoring engine  214 ) may present suggestions based on in-app links and customer information. Accordingly, in  FIG. 5 , in-app link  508  may be a button that takes a user to their bill pay information. More granular suggestions may also be presented such as link action  510  which sets aside money. 
       FIG. 6  is a flowchart illustrating a method to present suggested terms to a user, according to various examples. The method is represented as a set of blocks that describe operations  602 - 612  of the method. The method may be embodied in a set of instructions stored in at least one computer-readable storage device of a computing device(s). A computer-readable storage device excludes transitory signals. In contrast, a signal-bearing medium may include such transitory signals. A machine-readable medium may be a computer-readable storage device or a signal-bearing medium. The computing device(s) may have one or more processors that execute the set of instructions to configure the one or more processors to perform the operations illustrated in  FIG. 6 . The one or more processors may instruct other component of the computing device(s) to carry out the set of instructions. For example, the computing device may instruct a network device to transmit data to another computing device or the computing device may provide data over a display interface to present a user interface. In some examples, performance of the method may be split across multiple computing devices using a shared computing infrastructure. 
     At operation  602 , in various examples, a user interface may be presented on a computing device. The user interface may include a character input portion and a predictive suggestion portion. The input portion may be presented as a search query as in input box  302  of  FIG. 3 . The user interface may be part of an application executing on the computing device. The predictive suggestion portion may be segmented in accordance with a number of suggested output terms. The output terms may be selected a user. When selected, the output term may be presented in the input portion of the user interface. 
     At operation  604 , in various examples, a set of characters entered in the character input portion may be converted into a word vector. The word vector may be of a length equal the number of possible output terms in a vocabulary. Each location in the vector may correspond to a possible term. A lookup table may be used to find the appropriate location in vector for the set of input characters. 
     At operation  606 , in various examples, the word vector may by input into a neural network. The neural network may be a feed forward neural network. An input layer of the neural network and an output layer of the neural network may be configured (e.g., the hyperparameters of the neural network) to be of a size equivalent to a number of terms in a vocabulary of subject-matter specific terms in which the set of output terms are determined. The neural network may include a single hidden layer of neurons with no activation function. In various examples, the neural network is configured using Word2Vec using CBOW. Other types of neural networks may be also be used such as recurrent neural networks. 
     At operation  608 , according to various examples, a set of output terms may be determined from the neural network according to the input. For example, the out neural network may indicate, for each term in the vocabulary, the probability that a user would type the respective subject-matter specific term given the input characters. The number in the set may be limited to according to a physical size or pixel resolution of the computing device. For example, a mobile phone with a 6.5-inch diagonal display may be limited to the top (e.g., highest probability) three terms. The probabilities may be based on comparing a distance in vector space between the set of characters and coordinates of terms represented in the neural network as discussed previously. 
     At operation  610 , according to various examples, a data store may be queried to retrieve a user specific data value for an output term of the set of output terms. For example, certain output terms may have a flag (e.g., in a database) indicating that a user specific value may be paired with the output term such as account with an account number or an account balance. In various examples, user specific data values are only received and paired with a term if the user is authenticated. 
     User specific values may also be used to remove suggested output terms from the set of output terms. For example, the method may include retrieving a set of account types—a user specific value—for the user from a user profile. An output term may be removed from the set of output terms based on the set of account types. For example, if the output term does not match one of the account types, the output term may be removed. In some examples, the user specific value (e.g., balance or account number) is associated with one of the retrieved account types. 
     At operation  612 , in various examples, a paired output term is presented that includes the output term and the user specific data value in the predictive suggestion portion of the user interface. In various examples, a non-paired output term may be presented simultaneously in the predictive suggestion portion of the user interface. 
     Determining the authentication status of a user as used in operation  610  and discussed above in this disclosure (e.g., authorization component  112 ) may be performed using active authentication or passive authentication, in various examples. Active authentication may include requesting the user enter in their credentials each time a mobile application (e.g., the predictive keyboard or application within another messaging application) is used outside of an associated application (e.g., a banking application). 
     For example, consider that a user wants to text their current balance to a user within Messenger by the FACEBOOK® social network. A keyboard may be installed/used within Messenger that presents a button to retrieve their current balance, but first a username/password may be entered to authenticate the user to the bank. This active authentication process may be repeated each time a balance is requested which may become cumbersome with the limited screen size on a mobile device. The keyboard may still be used without authenticating, but only in a generalized/limited context as described previously. 
     In various examples, the mobile application itself may be used to passively authenticate the user to the bank without requiring entering in a username/password each time information is requested. 
       FIG. 7  is swim lane diagram illustrating a method to enroll a mobile application as a passive authenticator, in various examples. The method is represented as a set of blocks that describe operations  706 - 728  of the method. The method may be embodied in a set of instructions stored in at least one computer-readable storage device of a computing device(s) such as mobile device  702  and enterprise server  704 . A computer-readable storage device excludes transitory signals. In contrast, a signal-bearing medium may include such transitory signals. A machine-readable medium may be a computer-readable storage device or a signal-bearing medium. The computing device(s) may have one or more processors that execute the set of instructions to configure the one or more processors to perform the operations illustrated in  FIG. 7 . The one or more processors may instruct other component of the computing device(s) to carry out the set of instructions. For example, the computing device may instruct a network device to transmit data to another computing device or the computing device may provide data over a display interface to present a user interface. In some examples, performance of the method may be split across multiple computing devices using a shared computing infrastructure. 
     At operation  706 , a user may install a mobile application on mobile device. Mobile device may be a mobile device such as mobile  102  in  FIG. 1 . The mobile application may be a mobile application such as mobile application  104  in  FIG. 1 . The mobile application may be associated with an enterprise that makes multiple installable applications. In an example, the mobile application is associated with the same enterprise (e.g., a financial institution) as enterprise server  704 . Enterprise server  704  may be a set of one or more computing devices that provide services for an enterprise (e.g., a financial institution). For example, enterprise  704  may include predictive text server  118 . The mobile application be associated with a mobile identification of mobile device  702  at enterprise server  704 . 
     Accordingly, a user may have a mobile application that is a keyboard application and a primary application provided by the enterprise that provides banking functions (e.g., bill pay, transfers, etc.). The primary application may be used to enroll the mobile application as a passive authenticator at operation  708 . For example, a user may log in to the enterprise using their username/password in the primary application. The primary application may present an option to enroll one or more secondary applications (e.g., the previously installed mobile application) as passive authenticators. A passive authenticator may be a mobile application that does not require the user to enter in their username/password when requesting user information (e.g., balances, etc.) from the enterprise. The passive authenticator may be associated with a user account of the user. 
     Once a user selects the mobile application for enrollment, a private/public key pair may be generated at operation  710 . The generation may be performed by the primary application or the mobile application, in various examples. At operation  716 , the private key may be stored in a secure element of mobile device  702 . 
     At operation  712 , the generated public key is transmitted to enterprise server  704 . The At enterprise server  704 , the public key may be stored as associated with the user (e.g., linked to the user profile). In some examples, the public key is associated with an enterprise identifier for the user at operation  714 . The enterprise identifier may be an identifier that does not include any personally identifiable information. In various examples, the public key is associated with a mobile identification of mobile device  702 . 
     Different security events may trigger deleting the private key from the secure element. For example, if a user logs out of the primary application, changes a pin code, changes a biometric authentication, etc., the private key may be deleted. A notification may also be transmitted to enterprise server  704  indicating that the mobile application is no longer a passive authenticator. A user may re-enroll the mobile application upon the user logging into the primary application again in which case a new private/public key pair may be generated. 
     At operation  718 , a request may be made for non-transaction data (e.g., balance information) to enterprise server  704 . The non-transaction data may be a user specific data value that is stored at enterprise server  704  in a user profile (e.g., user profile  120 ). Other types of data may also be requested that use the passive authenticator without departing from the scope of this disclosure. The request may be made from within mobile device  702 . The request may include a mobile identification, a user identification, or both. Enterprise  704  may use the identification(s) to retrieve the public key for the mobile application. 
     At operation  720 , an authentication request for a signed package with the stored private key is transmitted from enterprise  704  to mobile device  702 . The request may include a one-way hash of a challenge message, the challenge message, and be encrypted using a private key of enterprise server  704  and then again with the public key associated with the mobile application as previously received at operation  712 . 
     The mobile application may decrypt the request using the mobile application&#39;s private key, verify the digital signature using the public key of enterprise server  704 , and retrieve the challenge message using the same public key. At operation  722 , the mobile application may digitally sign a response package and transmit it back to enterprise server  704 . Digitally signing may include encrypting the challenge message with the mobile application&#39;s private key and then encrypting the encrypted message with the public key of enterprise server  704 . 
     At operation  724 , enterprise server  704  may verify the signed package by decrypting the signed package using the private key of enterprise server  704  and decrypting the encrypted challenged message using the public key associated with the mobile application/enterprise identifier. If the decrypted challenge message matches the challenge message sent at operation  720 , the mobile application is authenticated, and the requested non-transaction data is transmitted at operation  726 . At operation  728  the requested non-transactional data may be presented in the mobile application. 
     When the non-transactional data is a user specific data value such as a balance, the data may be paired with an output term on the application. For example, the keyboard application may operate in similar manner as described in operation  612  of  FIG. 6 . 
     Example Computer System 
     Embodiments described herein may be implemented in one or a combination of hardware, firmware, and software. Embodiments may also be implemented as instructions stored on a machine-readable storage device, which may be read and executed by at least one processor to perform the operations described herein. A machine-readable storage device may include any non-transitory mechanism for storing information in a form readable by a machine (e.g., a computer). For example, a machine-readable storage device may include read-only memory (ROM), random-access memory (RAM), magnetic disk storage media, optical storage media, flash-memory devices, and other storage devices and media. 
     Examples, as described herein, may include, or may operate on, logic or a number of components, modules, or mechanisms. Modules may be hardware, software, or firmware communicatively coupled to one or more processors in order to carry out the operations described herein. Modules may hardware modules, and as such modules may be considered tangible entities capable of performing specified operations and may be configured or arranged in a certain manner. In an example, circuits may be arranged (e.g., internally or with respect to external entities such as other circuits) in a specified manner as a module. In an example, the whole or part of one or more computer systems (e.g., a standalone, client or server computer system) or one or more hardware processors may be configured by firmware or software (e.g., instructions, an application portion, or an application) as a module that operates to perform specified operations. In an example, the software may reside on a machine-readable medium. In an example, the software, when executed by the underlying hardware of the module, causes the hardware to perform the specified operations. Accordingly, the term hardware module is understood to encompass a tangible entity, be that an entity that is physically constructed, specifically configured (e.g., hardwired), or temporarily (e.g., transitorily) configured (e.g., programmed) to operate in a specified manner or to perform part or all of any operation described herein. Considering examples in which modules are temporarily configured, each of the modules need not be instantiated at any one moment in time. For example, where the modules comprise a general-purpose hardware processor configured using software; the general-purpose hardware processor may be configured as respective different modules at different times. Software may accordingly configure a hardware processor, for example, to constitute a particular module at one instance of time and to constitute a different module at a different instance of time. Modules may also be software or firmware modules, which operate to perform the methodologies described herein. 
       FIG. 8  is a block diagram illustrating a machine in the example form of a computer system  800 , within which a set or sequence of instructions may be executed to cause the machine to perform any one of the methodologies discussed herein, according to an example embodiment. In alternative embodiments, the machine operates as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the machine may operate in the capacity of either a server or a client machine in server-client network environments, or it may act as a peer machine in peer-to-peer (or distributed) network environments. The machine may be an onboard vehicle system, wearable device, personal computer (PC), a tablet PC, a hybrid tablet, a personal digital assistant (PDA), a mobile telephone, or any machine capable of executing instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the min “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein. Similarly, the term “processor-based system” shall be taken to include any set of one or more machines that are controlled by or operated by a processor (e.g., a computer) to individually or jointly execute instructions to perform any one or more of the methodologies discussed herein. 
     Example computer system  800  includes at least one processor  802  (e.g., a central processing unit (CPU), a graphics processing unit (GPU) or both, processor cores, compute nodes, etc.), a main memory  804  and a static memory  806 , which communicate with each other via a link  808  (e.g., bus). The computer system  800  may further include a video display unit  810 , an alphanumeric input device  812  (e.g., a keyboard), and a user interface (UI) navigation device  814  (e.g., a mouse). In one embodiment, the video display unit  810 , input device  812  and UI navigation device  814  are incorporated into a touch screen display. The computer system  800  may additionally include a storage device  816  (e.g., a drive unit), a signal generation device  818  (e.g., a speaker), a network interface device  820 , and one or more sensors (not shown), such as a global positioning system (GPS) sensor, compass, accelerometer, or other sensor. 
     The storage device  816  includes a machine-readable medium  822  on which is stored one or more sets of data structures and instructions  824  (e.g., software) embodying or utilized by any one or more of the methodologies or functions described herein. The instructions  824  may also reside, completely or at least partially, within the main memory  804 , static memory  806 , and/or within the processor  802  during execution thereof by the computer system  800 , with the main memory  804 , static memory  806 , and the processor  802  also constituting machine-readable media. 
     While the machine-readable medium  822  is illustrated in an example embodiment to be a single medium, the term “machine-readable medium” may include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more instructions  824 . The term “machine-readable medium” shall also be taken to include any tangible medium that is capable of storing, encoding or carrying instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure or that is capable of storing, encoding or carrying data structures utilized by or associated with such instructions. The term “machine-readable medium” shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media. Specific examples of machine-readable media include non-volatile memory, including but not limited to, by way of example, semiconductor memory devices (e.g., electrically programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM)) and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. 
     The instructions  824  may further be transmitted or received over a communications network  826  using a transmission medium via the network interface device  820  utilizing any one of a number of well-known transfer protocols (e.g.; HTTP). Examples of communication networks include a local area network (LAN), a wide area network (WAN), the Internet, mobile telephone networks; plain old telephone (POTS) networks, and wireless data networks (e.g., Wi-Fi, 3G, and 4G LTE/LTE-A or 5G networks). The term “transmission medium” shall be taken to include any intangible medium that is capable of storing, encoding, or carrying instructions for execution by the machine, and includes digital or analog communications signals or other intangible medium to facilitate communication of such software. 
     The above detailed description includes references to the accompanying drawings, which form a part of the detailed description. The drawings show, by way of illustration, specific embodiments that may be practiced. These embodiments are also referred to herein as “examples.” Such examples may include elements in addition to those shown or described. However, also contemplated are examples that include the elements shown or described. Moreover, also contemplate are examples using any combination or permutation of those elements shown or described (or one or more aspects thereof), either with respect to a particular example (or one or more aspects thereof), or with respect to other examples (or one or more aspects thereof) shown or described herein.