New word classification technology

JP7610573B2Active Publication Date: 2025-01-08ORACLE INT CORP
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
JP2022505355
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-08-04
Filing Date
2020-08-07
Publication Date
2025-01-08
Estimated Expiration
2040-08-07

Smart Images

  • Figure 0007610573000001
    Figure 0007610573000001
  • Figure 0007610573000002
    Figure 0007610573000002
  • Figure 0007610573000003
    Figure 0007610573000003
Patent Text Reader

Abstract

Techniques are provided for identifying attributes associated with new words or unknown words or names. Real-world features can be predicted for the new words. Trigrams are identified for the input word, and word embedding model vector values ​​are calculated for the identified trigrams and entered into a matrix. Trigrams are identified for the closest name. Classification values ​​are calculated based on the trigrams for the input word and the trigrams from the closest name and entered into a matrix. A convolutional neural network can process the matrix to identify one or more features associated with the new word.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims priority pursuant to 35 U.S.C. §119(e) to U.S. Provisional Patent Application No. 62 / 888,998, filed August 19, 2019, entitled "NEOLOGISM CLASSIFICATION TECHNIQUES," the entire contents of which are incorporated herein by reference for all purposes.

[0002] background The present disclosure relates generally to data analysis and processing. More particularly, techniques for new word analysis and processing are disclosed. [Background technology]

[0003] Big data users may have large amounts of data (e.g., datasets) about their customers. Users may include users of the datasets, such as businesses. The datasets may be in the form of spreadsheets and tables and may include information about the customers, such as customer ID, first name, last name, address, etc. Users may have datasets from a variety of sources. The datasets may include names, demographic and geographic information, etc.

[0004] A data set may be more useful to a user if additional information can be determined from the data set For example, if additional information about customers, such as gender, generation, and other demographic information, is not readily available, it would be beneficial to know such additional information. Summary of the Invention [Problem to be solved by the invention]

[0005] A dataset may include previously unseen words (e.g., neologisms). For example, a customer's name may be a unique name or a unique spelling of a name. Additionally, the name of the business the customer works for may be an unknown name or may be invented. Determining additional information about previously unseen words is difficult because there is no existing information (e.g., attributes, features, etc.) to derive information about such words.

[0006] Techniques exist for determining the similarity between words. For example, given an unknown word, the most similar words in a corpus of words can be found. However, such techniques do not provide accurate results. For example, using the most similar words in a training corpus of words does not provide accurate results, and the attributes inferred for the unknown word are inaccurate. In particular, using whole words does not provide highly accurate results.

[0007] Thus, there is a need for a more accurate method of identifying features for unknown words.The illustrative embodiments address these and other problems.

[0008] Other embodiments are directed to systems, devices, and computer-readable media associated with the methods described herein. The nature and advantages of the exemplary embodiments may be better understood with reference to the following detailed description and accompanying drawings. [Means for solving the problem]

[0009] overview Exemplary embodiments are configured to make predictions regarding real-world characteristics of previously unseen words or names (eg, new words).

[0010] For a body of text (e.g., a dataset, a spreadsheet, etc.), there may be words that have never been seen before. For example, new names or names with different spellings may be included in the dataset. As another example, new words may be created or new variations of words may be created. A previously unseen word or name is one where the meaning and / or characteristics associated with the word or name are not currently known. A previously unseen word or name may be known as a neologism. An unknown word or name is referred to herein as an unknown word.

[0011] An exemplary embodiment enriches a dataset so that the dataset information can be more useful. For example, a user may have a large dataset (e.g., big data). The dataset may be more useful if additional information and features can be determined based on the dataset. An exemplary embodiment may determine meaning from unknown words, making the dataset more useful. The dataset may be in the form of a spreadsheet that includes columns and rows of data. The dataset may include a column of data that includes one or more new words. For example, a column of a dataset for first names may include several names that have never been seen before.

[0012] An exemplary embodiment can decipher additional information based on the unknown words. For example, an exemplary embodiment can determine characteristics such as industry, language, gender, generation, etc. based on an unknown name. Although industry, language, gender, and generation are described as examples, other characteristics and attributes can be determined for the dataset depending on the type of data in the dataset (e.g., first names, company names, etc.).

[0013] Moreover, an exemplary embodiment can determine features and additional information associated with unknown words with high accuracy, so that the user does not have to make guesses regarding classification.

[0014] Certain names or words may have known characteristics. For example, a name such as "Alice" may be associated as a female name. Specifically, given historical information and prior word analysis, names such as "Alice" are associated with women. However, there may be people who spell these names as "Allys." This may be a primary instance of such a name, or there may be no association with this name. Thus, the name "Allys" may not be associated with certain characteristics. In addition to names, there may be words that have never been seen before. New words or new spellings of words may be created, and thus these new words or new spellings of words may not have historical background or associations.

[0015] An exemplary embodiment can predict what language a word or name is from, predict the industry based on a name (e.g., a business name), and predict the gender based on a person's name. Predicting gender can be useful for aggregation in analyzing market segmentation.

[0016] An exemplary embodiment can infer meaning based on the spelling of the unknown word. Meaning can be inferred using trigrams, which can be used to provide information about the unknown word. Specifically, the meaning of the unknown word can be determined by treating three-letter trigrams as a language. That is, meaning can be inferred based on the order of trigrams in a word, similar to how the order of words in a sentence has meaning. For example, based on the trigrams and historical data, it can be determined that names ending in vowels are often associated with women.

[0017] An exemplary embodiment runs trigrams extracted from words of a training set through a neural network (e.g., Word2Vec). Furthermore, supervised learning can be performed to make predictions about attributes and features of unknown words. As mentioned above, attributes and features of unknown words, i.e., labels for supervised learning, may include the language from which the word comes, the industry, gender, generation, etc. The attributes and features of unknown words include additional information that can be determined about the unknown words. Thus, a user does not simply have a dataset of, for example, first names, but has additional information (e.g., labels for these data items), such as the gender of the customer, the industry the customer works in, etc. This makes the dataset more useful to the user.

[0018] BRIEF DESCRIPTION OF THE DRAWINGS The present disclosure will be readily understood by the following detailed description when taken in conjunction with the accompanying drawings, in which like reference numerals indicate like elements and in which: [Brief description of the drawings]

[0019] [Figure 1] FIG. 1 is a block diagram illustrating an analysis environment in accordance with some example embodiments. [Diagram 2] FIG. 1 is a block diagram illustrating a neologism classification server of a data enrichment system, according to some example embodiments. [Diagram 3] 1 is a flowchart of a method for classifying new words, according to some example embodiments. [Figure 4] 1 is an overview of variables for classifying new words according to some illustrative embodiments; [Diagram 5] FIG. 4 illustrates determining trigrams for an input word according to some example embodiments. [Figure 6] FIG. 1 illustrates a matrix with trigram word embedding model vectors according to some exemplary embodiments. [Figure 7]FIG. 2 illustrates a process for calculating vectors for words according to some example embodiments. [Figure 8] FIG. 1 illustrates determining the closest name for an input word, according to some exemplary embodiments. [Figure 9] 1 is a table depicting a list of queues according to some example embodiments. [Figure 10] 1 is a flowchart of a method for calculating a classification value, according to some example embodiments. [Figure 11] 4 is a detailed flowchart of a method for calculating a classification value, according to some example embodiments. [Figure 12] FIG. 2 illustrates a matrix including classification values, according to some example embodiments. [Figure 13] FIG. 1 illustrates a convolutional neural network in accordance with some demonstrative embodiments. [Figure 14] FIG. 1 illustrates a user interface for performing neologism classification, according to some example embodiments. [Figure 15] 1 is a simplified diagram illustrating a distributed system in accordance with some demonstrative embodiments. [Figure 16] FIG. 1 is a simplified block diagram illustrating one or more components of a system environment in which services may be offered as cloud services, according to some example embodiments. [Figure 17] FIG. 1 illustrates an example computer system that may be used to implement an example embodiment, in accordance with some example embodiments. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0020] Detailed Description In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of various embodiments of the present invention. However, it will be apparent to one skilled in the art that embodiments of the present invention may be practiced without some of these specific details. In other instances, well-known structures and devices are shown in block diagram form.

[0021] A neologism may be a new word or phrase. A neologism may be a newly invented word or a word that is not commonly used. Neologisms may be driven by changes in culture and technology. Additionally, neologisms may be driven by social media and popular culture. New words and names and spellings of words and names are constantly being created. An exemplary embodiment may determine attributes or characteristics that may be associated with a neologism.

[0022] In this specification, a user is a user of data, such as a business. However, a user may include any person or entity for which neologisms would be beneficial. Data may be more meaningful to a user if it includes additional information. Enriching the data makes the data more useful to the user. Data may include, for example, customer data (e.g., first name, last name, ID, social security number, etc.) and purchase data (e.g., store name, items purchased, etc.).

[0023] The exemplary embodiments can be used in various situations. For example, there may be a given word where it is unclear which language it belongs to. As another example, given a word such as the name of a company, the industry associated with the company is identified. As another example, the exemplary embodiments can be used to predict gender, for example by considering the first name. The exemplary embodiments can be used to predict the age or generation of a customer based on their first name. These are just exemplary situations where additional features can be identified to make the data more useful to the user.

[0024] Exemplary embodiments may be useful, for example, for market segmentation, which may involve dividing a broad consumer or business market, such as customers, into subgroups of consumers based on some type of shared characteristic.

[0025] An exemplary embodiment provides a solution for classifying words. For example, a reference list may include a list of first names and the gender typically represented by the first name. For example, the name "David" may be associated with the gender "male." The associated gender may be based on a frequency of association based on historical data.

[0026] However, new names and new spellings of names may be created. An exemplary embodiment may provide the gender for a name not seen before, i.e., for a name not identified in a dictionary of names or words. For example, the name "Chauna" may not be in a dictionary of names. Therefore, it is unclear whether the name is associated with a male or female. To determine the gender of the name "Chauna", a binary classification may be performed. That is, two classification groups may be identified. For use cases where making predictions about individuals may involve ethical issues, this technique may be useful in use cases where populations are aggregated, such as for identifying market segmentation. However, this is an exemplary embodiment and additional modifications may be made based on the desired classification. The exemplary embodiment is not limited to two classifications. Additional classifications may be made based on the needs of the user.

[0027] I. Analysis environment FIG. 1 illustrates a block diagram of an analysis environment 100 according to some example embodiments.

[0028] The data analysis environment 100 may include an analysis system 110, a data enrichment system 120, a data source 130, a client 140, a client data store 141, a distributed storage system 150, a data target 160, and a knowledge source 170. The data enrichment system 120 may include a user interface 121, an ingest server 122, a preparation server 123, a conversion server 124, a recommendation server 125, a sentiment analysis server 126, a publish server 127, a knowledge server 128, an enrichment server 129, and a neologism classification server 200. The neologism classification server 200 is described in more detail in connection with FIG. 2.

[0029] The analytics environment 100 may be a cloud-based environment. The analytics system 110 provides a single, integrated platform that includes self-service visualization, powerful inline data preparation, business reporting, advanced analytics, and self-learning analytics that provide proactive insights. The analytics system 110 may include, for example, Oracle Analytics Cloud.

[0030] A client or user 140 may submit a data enrichment request to the data enrichment system 120 of the analysis system 110. The client may include a client data store 141 for storing data associated with the client. The data enrichment system 120 may identify one or more of the data sources 130 (or portions thereof, e.g., particular tables, data sets, etc.). The data enrichment system 120 may then request the identified data sources 130 to process the data.

[0031] In some embodiments, data sources may be sampled and the sampled data may be analyzed for enrichment to make large data sets more manageable. The identified data may be received and added to a distributed storage system (such as a Hadoop Distributed Storage (HDFS) system) accessible to a data enrichment service. The data may be semantically processed by several processing stages (described herein as pipelines or semantic pipelines). These processing stages may include a preparation stage via a preparation server 123, a publishing stage via a publishing server 127, and an enrichment stage via an enrichment server 129.

[0032] In some embodiments, the preparation stage may include various processing sub-stages, which may include automatically detecting the data source format and performing content extraction and / or repair. Once the data source format is identified, the data source may be automatically normalized into a format that can be processed by the data enrichment service. In some embodiments, once the data source is prepared, it may be processed by the enrichment server 129. In some embodiments, the inbound data source may be loaded into a distributed storage system 150 accessible to the data enrichment system 120 (e.g., an HDFS system communicatively coupled to the data enrichment service).

[0033] The distributed storage system 150 provides temporary storage space for ingested data files and may store intermediate processing files and temporarily store pre-publication results. In some embodiments, the enhanced or enriched results may also be stored in the distributed storage system. In some embodiments, metadata captured during enrichment associated with the ingested data sources may be stored in the distributed storage system 150. System-level metadata (e.g., indicating the location of the data sources, results, processing history, user sessions, execution history, configuration, etc.) may be stored in the distributed storage system or in a separate repository accessible to the data enrichment service.

[0034] In some embodiments, the data enrichment system 120 may perform sentiment analysis via a sentiment analysis server 126. The sentiment analysis server 126 includes functionality for analyzing the sentiment of data from various data sources using techniques disclosed herein. Techniques include convolutional neural networks (CNNs), lexical co-occurrence networks, and the application of bigram word vectors to perform sentiment analysis to improve the accuracy of the analysis.

[0035] In some embodiments, the publishing stage via the publishing server 127 can provide the data source metadata captured during enrichment and any data source enrichment or repair to one or more visualization systems for analysis (e.g., displaying the transformation, enrichment, and / or other changes of the recommended data to a user). The publishing subsystem can deliver the processed data to one or more data targets. A data target can correspond to a location where the processed data can be sent. The location can be, for example, a memory, a computing system, a database, or a location within a system that provides a service. For example, data targets can include Oracle Storage Cloud Service (OSCS), URLs, third-party storage services, web services, and other cloud services, such as Oracle Business Intelligence (BI), Database as a Service, and Database Schema as a Service. In some embodiments, the syndication engine provides customers with a set of APIs to browse, select, and subscribe to results. Once subscribed and new results are generated, the result data can be provided as a direct feed to an external web service endpoint or as a large file download.

[0036] As described further below, the data can be enriched to include additional relevant information about the unknown or new words. The new word classification server 200 can analyze the new words to determine attributes or characteristics for the new words. The data can be obtained from the data source 130, and the new word classification server 200 can determine attributes and / or characteristics for the new words. The attributes can include qualities or characteristics that are characteristic or unique to people or things that have a particular word or name.

[0037] An exemplary embodiment provides a data enrichment system that uses machine learning to relieve a user from having to analyze all of the data. Moreover, the data enrichment system can make decisions without user intervention. Thus, the data enrichment system can perform the analysis for the user.

[0038] Throughout this disclosure, various flowcharts and techniques are disclosed illustrating processes according to some embodiments. Individual embodiments may be described as a process that is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe operations as a sequential process, many of the operations may be performed in parallel or simultaneously. In addition, the order of operations may be rearranged. A process terminates when its operations are completed, but may include additional steps not included in the diagram. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination may correspond to a return of the function to the calling function or to the main function.

[0039] The processes depicted in the figures may be implemented in software (e.g., code, instructions, programs) executed by one or more processing units (e.g., processor cores), hardware, or a combination thereof. For example, the data enrichment system 120 may be implemented by a computer system for the processes described with reference to any of the figures. Any of the processes may be implemented as a service. In some embodiments, any of the elements in the figures may be implemented with more or fewer subsystems and / or modules than shown in the figures, may combine two or more subsystems and / or modules, or may have different configurations or arrangements of subsystems and / or modules. The subsystems and modules may be implemented in software (e.g., program code, instructions executable by a processor), firmware, hardware, or a combination thereof. In some embodiments, the software may be stored in a memory (e.g., a non-transitory computer-readable medium), a memory device, or some other physical memory, and executed by one or more processing units (e.g., one or more processors, one or more processor cores, one or more GPUs, etc.).

[0040] The particular sequence of process steps in the figures is not intended to be limiting. Other sequences of steps may be performed in accordance with alternative embodiments. For example, alternative embodiments may perform the steps outlined above in a different order. Furthermore, individual steps depicted in the figures may include multiple sub-steps that may be performed in various orders appropriate to the individual step. Furthermore, additional steps may be added or removed depending on the particular application. Those skilled in the art will recognize many variations, modifications, and alternatives.

[0041] In some embodiments, data may be stored using one or more data structures. The data structures may be organized in a variety of ways depending on how, what, and / or where the data is stored. Although each of the data structures is shown containing specific data, more or fewer data structures may be implemented to store the data. The data structures may include references to other data structures. The data structures may be implemented using one or more types of data structures, including but not limited to linked lists, arrays, hash tables, maps, records, graphs, or other types of data structures. The data structures may be implemented hierarchically. Each of the data structures may be declaratively defined based on input by a user. The data structures may be defined based on a template, for example, a template defined based on a markup language such as Extended Markup Language (XML). The data structures may have one or more formats, also referred to as document formats.

[0042] II. New Word Classification Server FIG. 2 illustrates a block diagram of a new word classification server 200 of the data enrichment system 120, according to some example embodiments.

[0043] The new word classification server 200 may include a new word classification system 210, a trigram analysis system 211, a convolutional neural network (CNN) 212, a word embedding model 213, a data store 214, and a dictionary 215.

[0044] The new word classification system 210 can perform enrichment of unknown or new words. The new word classification system 210 can provide classifications for new words based on information received from a trigram analysis system 211, a convolutional neural network (CNN) 212, a word embedding model 213, a data store 214, and a dictionary 215.

[0045] The trigram analysis system 211 can perform analysis on new words using trigrams. A trigram is a group of three consecutive written units, such as letters, syllables, or words. In an exemplary embodiment, a trigram is three consecutive letters. The trigram analysis system generates trigrams for a given word. The generated trigrams include overlapping letters. For example, two letters in each trigram may overlap. Each trigram generated for a given word begins with a letter to the right of the previous trigram. For example, for the name "BOB," the trigrams would include "^BO," "BOB," and "OB$." Trigram analysis is described in more detail in connection with FIG. 5.

[0046] Convolutional Neural Networks (CNNs) 212 are a class of deep neural networks. CNNs weight values. A CNN can be trained to analyze a set of names, for example, in a matter of minutes. Convolutional Neural Networks are described in more detail in connection with FIG. 13.

[0047] The word embedding model 213 is a model that can be used to generate word embedding vectors. Word embedding can include natural language processing (NLP) where words or phrases from a vocabulary are mapped to vectors of real numbers. An exemplary word embedding model that can be used in an exemplary embodiment is Word2Vec. Word2Vec can be implemented using techniques disclosed in Mikolov et al., "Exploiting Similarities among Languages ​​for Machine Translation," (2013) (http: / / arxiv.org / pdf / 1309.4168.pdf), which is incorporated herein by reference for all purposes.

[0048] A word embedding model may include an algorithm that is fed a corpus of vocabulary. A large amount of text (e.g., from articles, newspapers) is taken and fed into the word embedding model algorithm. The word embedding model vector includes weight variables (e.g., 300 aspects for a trigram). The weight variables add dimension to the trigram being analyzed.

[0049] For names, the corpus words may include names from the Census Bureau. A word embedding model may be trained using name trigrams from the Census Bureau. Word embedding models are described in more detail in connection with FIG. 7.

[0050] The data store 214 may be used to store data from the dataset on which the neologism classification is to be performed. For example, a client may provide a spreadsheet of data including columns and rows of data. The data to be analyzed by the neologism classification server 200 may be stored in the data store 214. The data store 214 may also store counter values ​​and matrices including word embedding model vector values ​​and classification values.

[0051] The dictionary 215 may include a deep learning library (e.g., Deep Learning for JVM, Tiny Neural Network (TINN), etc.). The deep learning library may provide a library of functions and modules that can be used to generate code for the new word classification server 200. The deep learning library may help facilitate machine learning for the new word classification server 200.

[0052] III. Overview of methods for performing neologism classification An exemplary embodiment is directed to neologism classification. Classification can be performed using logistic regression. Logistic regression may include using a statistical model that models variables using a logistic function. In the described example, a binary classification (e.g., two classifications) is used, but the exemplary embodiment is not limited to binary classification. For example, generational identification may include three or more classifications (e.g., silent, boomer, X, millennial, Z, etc.). Classification may be based on several possible attributes or characteristics. Some classifications may be based on parameters entered by the user.

[0053] 3 illustrates a flow chart of a method 300 for classifying new words according to some exemplary embodiments. FIG. 3 will be described with reference to the variables illustrated in FIG.

[0054] FIG. 4 is an overview of variables 400 for classifying new words, according to some exemplary embodiments. The variables shown in FIG. 4 may be input variables or input values. The variable "w" represents an input word, which is a new word or unknown word or unknown name; the variable "M" represents a matrix in which the word embedding model vectors and classification values ​​are populated; the variable "k" represents some known nearest input values; the variable "S" represents a set containing the known nearest names, where the number of names in the set S corresponds to the number in the input value k; the variable wq represents the identified trigrams for the input word "w"; and the variable "Q" represents a list of N cues. In this case, each queue is initialized according to the longest common subsequence (LCS) between the input word w and the set of known nearest neighbors S. N in the list of N cues represents the number of cues. Each queue can be initialized according to the formula LCS(w,S[i]). The value of N in Figure 4 is 3 since there are 3 nearest neighbors. The variables and their values ​​are explained in more detail below.

[0055] At step 310, an initial input is received. The initial input may be known as a new word or an unknown word or name. The new word is represented by the variable "w". The initial input may be selected by a user to train the new word classification server to classify attributes of the new word. For illustrative purposes, one input word is received. However, in an exemplary embodiment, multiple inputs may be received, such as multiple words in a column of data (e.g., a column of data in a spreadsheet).

[0056] The initial input may be received on a user interface of the data enrichment system. The unknown words may be entered manually by a user. For example, the new words may be entered via a user interface of the data enrichment system. Alternatively, the unknown words may be entered automatically by a new word classification server. The new word classification server may obtain one or more unknown words generated by the data enrichment system or may obtain one or more unknown words from a data source.

[0057] In the example shown in Figure 4, the input word w is "JOANNA". However, this is merely for illustrative purposes and any name or word can be used for analysis. For ease of illustration and explanation, a known name is used to demonstrate how classification is performed. The illustrative embodiment can also be used to identify attributes for known names.

[0058] The exemplary embodiments can provide highly accurate classification results for new or unknown words or names. The exemplary embodiments are useful for assisting a user in determining attributes for previously unseen or non-existent names, a library of names. The library of names and words can be stored in the data store 214. Although names are described, the exemplary embodiments apply to any word and are not limited to names. Furthermore, although a single word is described, the exemplary embodiments can apply to a group of words, an expression, or a phrase.

[0059] In step 320, trigrams are determined for the input word. The identified trigrams may be represented by a variable wq. Trigrams are identified in order of letters since the order of letters has meaning. The order of trigrams holds additional meaning. Thus, trigrams refer to an ordered set of three letters based on the input word. Trigrams may be determined by the trigram analysis system 211.

[0060] FIG. 5 illustrates trigrams 500 for an input word, according to some exemplary embodiments. As shown in FIG. 5, six trigrams are identified for the input word in step 310. A trigram is a group of three consecutive written language units, such as letters, syllables, symbols, or words. In the example shown in FIG. 4, a trigram is a group of letters and symbols. The six trigrams identified for the input word "JOANNA" include "^JO, JOA, OAN, ANN, NNA, NA$". The identified trigrams are found in consecutive order in the word "JOANNA". The symbol "^" represents the beginning of a string, and "$" represents the end of a string. That is, at the "beginning of the string" and the "end of the string", ghost characters (e.g., ^ and $) are involved in breaking down the word into trigrams. During the generation of the trigrams, two characters are duplicated from the previous trigram.

[0061] In step 330, a word embedding vector value is calculated for the trigram. For each trigram wq, a word embedding vector value is trained. The word embedding vector value may be calculated using a word embedding model such as Word2Vec. The word embedding model is trained specifically for the type of word being analyzed. Thus, in the illustrated example, the word embedding model is trained specifically for first names, and more specifically for trigrams of first names.

[0062] A word embedding model is trained to analyze trigrams of words rather than whole words. Thus, a word embedding model according to an exemplary embodiment is trained on trigrams. Training is performed on trigrams since trigrams form language. Trigrams within a word form language in a similar manner to how words within a sentence form language. The position and order of letters and trigrams within a string can affect the classification of an input word. For example, based on trigram analysis, it can be determined that female names end in a vowel more often than male names.

[0063] In the illustrated example, the word type is first names. Other types or categories of words may include last names or business names, etc. However, these are merely examples and a wide variety of types of names or words may be used. The word embedding model is trained specifically for the type of word being analyzed, rather than using a general word embedding model trained for general words. In particular, using a general word embedding model would not provide as accurate results as using a word embedding model trained specifically for the type of word being analyzed.

[0064] In step 340, the calculated vector values ​​are entered into a matrix M. That is, the matrix M is populated to include the vector values ​​associated with the trigram wq. Although the population of the matrix M with the vector values ​​is performed in step 340, the population of the vector values ​​in the matrix M may be performed at a later time than before running the matrix through the convolutional neural network.

[0065] FIG. 6 illustrates a matrix M 600 with trigram word embedding model vectors according to some example embodiments.

[0066] As shown in FIG. 6, matrix M600 includes trigrams 610 generated in step 320. Thus, matrix M600 includes six rows for the six trigrams identified for the input word "JOANNA." The number of rows for matrix M600 will vary based on the number of trigrams determined for the new word. Matrix M600 includes word embedding model vector columns 620. In the illustrated example, 300 columns of word embedding model vectors are used. Matrix M is populated with trigram word embedding model vectors 620. Thus, the word embedding models have a dimension of 300. 300 is the number for word embedding models that are neither under-fitted nor over-fitted. 300 is used in examples where more or fewer vectors may be available based on the needs of the user.

[0067] Matrix M600 also includes a classification column 630. In this example, two classifications (e.g., male and female) are to be determined. The number of classification columns will depend on the number of possible classifications or the number of classifications desired by the user. For example, in generation identification, there may be five classification columns corresponding to five different possible generation classifications (e.g., silent, boomer, X, millennial, Z, etc.). The types of classifications may vary based on the data being analyzed or based on the classification information desired by the user. A classification may also be known as a label.

[0068] As shown in Figure 6, there is a first column 631 for a first classification column (e.g., male) and a second column 632 for a second classification (e.g., female). Although two classifications are shown in Figure 6, the exemplary embodiment is not limited to two classifications. Thus, the number of classification columns may vary based on the classification a user desires to determine. One exemplary embodiment provides a technique for filling the classification columns of the matrix M.

[0069] The matrix M is created where the rows are word embedding model vectors, arranged one after the other in the order in which they appear, to make the vertical axis of the matrix a form of a time dimension. The "words" modeled in the word embedding model are trigrams (of three letters) rather than words, as is done in sentiment analysis techniques. Sentiment analysis techniques may include training a CNN with one layer of convolution in addition to word vectors obtained from an unsupervised neural language model. The convolutional neural network can be built on top of the word embedding model (e.g., Word2Vec). The word embedding model is trained using input training data (e.g., a dictionary of first names). Sentiment analysis may be achieved using techniques disclosed in "Convolutional Neural Networks for Sentence Classification" by Kim, 2014 (https: / / arxiv.org / pdf / 1408.5882.pdf), which is incorporated herein by reference for all purposes.

[0070] The process for computing the word embedding model vector 620 is described in more detail below in connection with FIG.

[0071] In step 350, the k closest names or k nearest neighbors are determined for the input word. The k nearest neighbors or nearest names can be identified using a similarity metric. The similarity metric may include a semantic similarity metric such as Jaccard or Dice. The k closest names are names that contain a trigram similar to the input word. That is, the k closest names are first names that have a trigram similar to the input name "JOANNA".

[0072] Fuzzy string matching can be performed to identify the k nearest neighbors. Given a never-before-seen string, a similarity metric can find the closest match from a dictionary, and then a prediction can be made about the classification of the never-before-seen string based on the classification of the k nearest neighbors in the form of k nearest neighbors. The word whose classification is predicted (e.g., a never-before-seen first name) is run through, for example, StatSim's k nearest neighbors, and the top K (e.g., 3) matches are used. The top K matches are in a set S.

[0073] The k closest names may be identified. The input parameter k represents the number of closest names. The determined k closest names are identified in a set S. For simplicity of explanation, three closest names are identified. Thus, the value of k is three. However, the value of k may be changed based on the results desired by the user. For example, in an alternative embodiment, the value of k may be ten.

[0074] Element 640 of Figure 6 indicates that the number of k closest names identified by variable k is 3. Thus, 3 closest names have been identified for the input word.

[0075] 8 illustrates a set of closest names S800 for an input word according to some example embodiments. The set of nearest neighbors S for the input word "JOANNA" includes the three closest names "JOANNE", "JOHN", and "ANNA".

[0076] The longest common subsequence is determined in step 360. Specifically, the longest common subsequence is identified for trigrams from the input word and trigrams from the k nearest neighbors ("JOANNE", "JOHN" and "ANNA").

[0077] 9 illustrates a table Q900 representing a list of N queues according to some example embodiments. Each queue is initialized according to the longest common subsequence (LCS) between an input word w and a set of k nearest neighbors. Each queue may be initialized according to the formula LCS(w, S[i]). From the k nearest names identified in step 350, a longest common subsequence is identified.

[0078] Table Q900 includes a column 940 representing the k nearest neighbor trigrams common to the input word trigram wq, a column 950 containing the k nearest neighbors, and a column 960 identifying a classification (e.g., gender) for each of the k nearest neighbors in column 950. In the illustrated example, there are three nearest neighbors (k=3), so there are three rows for each of the k nearest neighbors. However, this is merely for illustrative purposes, and the k nearest neighbors are not limited to three. For example, ten nearest neighbors may be used. Table Q900 would be larger depending on the number of k nearest neighbors.

[0079] Row 910 corresponds to the name "JOANNE", row 920 corresponds to the name "JOHN", and row 930 corresponds to the k-nearest neighbor name "ANNA". Row 910 corresponds to the input word "JOANNE". Row 910 corresponding to "JOANNE" contains trigrams 911 (e.g., ^JO, JOA, OAN, ANN). Row 920 corresponding to the name "JOHN" contains trigrams 912 (e.g., ^JO). Row 930 corresponding to the name "ANNA" contains trigrams 913 (e.g., ANN, NNA, NA$).

[0080] Trigrams 911, 912, and 913 match trigrams in trigram wq for the input word w "JOANNA". Trigrams (JOANNE, ANNA, JOHN) for the k nearest neighbors that do not match trigram wq for the input word w "JOANNA" are not included in table Q900. For example, the name "JOHN" contains the trigram "OHN". Since the trigram "OHN" does not match a trigram in trigram wq for the input word w "JOANNA", the trigram "OHN" is not included in trigram 912 for one of the k nearest neighbors, "JOHN". Thus, table Q900 is populated with trigrams that are common to the k nearest neighbors and the input name.

[0081] The trigrams common to the k nearest neighbors and the input name are determined using Longest Common Subsequence (LCS). Given two input strings (e.g., the input name and one of the nearest neighbors), the LCS algorithm can be used to find the longest common subsequence between the two lists of trigrams. The LCS algorithm can be implemented using techniques disclosed in "The String-to-String Correction Problem" (1974) by Wagner (http: / / citeseerx.ist.psu.edu / viewdoc / download?doi=10.1.1.367.5281&rep=rep1&type=pdf), which is incorporated herein by reference for all purposes.

[0082] A classification value is calculated in step 370. The calculation of the classification value is explained in more detail in connection with Figures 10 and 11.

[0083] Figure 12 illustrates a matrix M 1200 that includes classification values ​​for a first classification 1231 and a second classification 1232, according to some demonstrative embodiments. Figure 12 illustrates the matrix M after the classification values ​​have been determined and populated into the matrix.

[0084] As shown in Figure 12, matrix M contains six rows 1210 for each trigram wq identified for the input word w. Each row in the matrix represents a trigram that matches a corresponding trigram in one or more of the N StatSim matched words from the dictionary. Matrix M contains word embedding vector values ​​1220 for the 300 column vectors.

[0085] Matrix M includes a classification column 1230. The classification column includes a first classification column 1231 and a second classification column 1232. Although two classification columns are described, the number of classifications or labels may vary based on the types of classifications identified by the user. The number of classifications may vary depending on, for example, the type of sales campaign the user wants to perform, the customer base the user wants to target, or the user's business strategy.

[0086] The classification value represents how many other similar names there are that contain that particular trigram. The other similar names are taken from a dictionary of known names. In the example being described, since names are being analyzed, the dictionary is of known names. However, if various types of input words (e.g., business names) were being analyzed, a dictionary of such names would be used for trigram comparison.

[0087] 12, the first classification column 1131 contains the values ​​"0.3, 0.1, 0.0, 0.0, 0.0, 0.0" for each of the trigrams "^JO, JOA, OAN, ANN, NNA, NA$". The second classification column 1232 contains the values ​​"0.1, 0.4, 0.3, 0.5, 0.3, 0.3" for each of the trigrams "^JO, JOA, OAN, ANN, NNA, NA$".

[0088] Based on the classification results, the second classification column 1132 results in a higher value than the first classification column 1131. Thus, the input word "JOANNA" is more likely to be classified into the second classification (e.g., female). However, because the matrix is ​​run through a Convolutional Neural Network (CNN), high accuracy results are obtained.

[0089] In step 380, the matrix M is run through a convolutional neural network. After the matrix M is populated with the word embedding model vector values ​​and the classification values, the matrix will be run through a convolutional neural network. The convolutional neural network can identify whether an input word is more likely to belong to a first classification or a second classification.

[0090] The CNN in the exemplary embodiment analyzes a matrix containing vectors from the word embedding model and classification values ​​obtained using trigram analysis. Since the activations between the dense layer and the Global Max-Pooling layer in the CNN are Rectified Linear Units (ReLUs), a ReLU weight initialization can be used for the CNN. Convolutional neural networks are described in more detail below in connection with FIG. 13.

[0091] IV. Word Embedding Model 7 shows a general process 700 for computing vectors for words in accordance with some exemplary embodiments. However, exemplary embodiments may compute vectors for trigrams.

[0092] In step 710, words are input. In the example shown in Figure 7, the input set of words may include "Bridgestone," "Firestone," and "Michelin." However, in an exemplary embodiment, the input set of words may include trigrams identified for new words.

[0093] At step 720, the input dataset is analyzed. The data can be analyzed by using machine learning techniques, such as Word2Vec, to analyze the input dataset. Word2Vec can be implemented using techniques disclosed in "Exploiting Similarities among Languages ​​for Machine Translation" by Mikolov et al., 2013 (http: / / arxiv.org / pdf / 1309.4168.pdf), which is incorporated by reference for all purposes. Word2Vec can receive text input (e.g., a text corpus from a large data source) and generate a data structure (e.g., a vector representation) of each input word as a set of words. The data structure is sometimes referred to herein as a "model" or a "Word2Vec model." Although Word2Vec is described, other word embedding models can also be used to perform the data analysis.

[0094] At step 730, each word in the set of words is associated with a number of attributes. Attributes may also be referred to as features, vectors, components, and feature vectors. For example, the data structure may include 300 features associated with each word in the set of words. The features may include, for example, gender, nationality, etc., that describe the word. Each of the features may be determined based on techniques for machine learning (e.g., supervised machine learning) trained on relevance to sentiment.

[0095] Using a Word2Vec model built using a large text corpus (e.g., news aggregators or other data sources such as the Google® News corpus), a corresponding numeric vector value (e.g., floating point) can be identified for each input word. When these vectors are analyzed, it can be determined that the vectors are (Euclidean) "close" in vector space. As shown in step 740, the three input words are closely clustered together in vector space.

[0096] In some embodiments, the Word2Vec model may be generated by a third-party provider. The Word2Vec model may be obtained via the provider's application programming interface (API). The API may provide functions to obtain the Word2Vec model, including information about the word embedding model, such as the number of components for each word in the model.

[0097] Step 730 may include generating a data structure (e.g., a vector data structure) based on the training data as a two-dimensional matrix. Each axis (x-axis and y-axis) in the matrix has a coordinate or dimension. For the training data, one or more applications (e.g., Lambda applications) may be utilized to calculate the height of the vector based on the length of the longest text string. For example, a data structure is generated for each message. The height is the maximum number of words in a single review. In constructing the two-dimensional matrix, each row may be defined as a word vector and each column may be defined as a feature vector. The data structure is created as an input to an API for implementing a convolutional neural network (CNN). The two-dimensional matrix is ​​created such that the y-axis has an entry for each word in a single message and the x-axis is for a baseline sentiment analysis approach. Each entry or dimension on the x-axis corresponds to a feature of the features in the Word2Vec model. Multiple features may be listed for the words on the x-axis. Each of the features for each word may be obtained from the Word2Vec model generated based on the training data.

[0098] The word embedding model vector column 620 in FIG. 6 illustrates an example of a generated data structure (eg, a vector data structure).

[0099] V. Calculation of classification values A. Overview of classification value calculation method 10 shows a flowchart of a method 1000 for calculating a classification value according to some example embodiments. The steps performed in FIG. 10 may correspond to step 370 in FIG.

[0100] In step 1010, trigrams from the input word are identified. The identified trigrams wq may be the trigrams identified in step 320 of FIG.

[0101] The trigrams for the k nearest neighbors common to the trigram for the input word are identified in step 1020. As shown in Figure 9, column 940 represents the k nearest neighbors common to the trigram wq of the input word.

[0102] In step 1030, the trigram from the input word is compared to the trigram for each of the k nearest neighbors. The frequency of matches between the trigrams from the input word is compared to the trigrams for each of the k nearest neighbors. The frequency of matches can be determined using a counter.

[0103] In step 1040, a classification value is calculated based on the frequency of matches between trigrams in the input word and trigrams from the k nearest neighbors.

[0104] The classification values ​​for the unknown word trigrams are populated with the calculated classification values ​​in step 1050. The classification values ​​may be populated into a matrix.

[0105] After the classification values ​​for the trigrams are determined and populated into a matrix, the matrix can be run through a convolutional neural network.

[0106] B. Detailed method for calculating classification values Figure 11 shows a detailed flow chart of a method 1100 for calculating a classification value according to some exemplary embodiments. The steps performed in Figure 11 may correspond to step 370 in Figure 3. Figure 11 describes the steps performed in Figure 10 in more detail.

[0107] The method shown in FIG. Loop through matrix M row by row Loop through Q If wq[0]==Q[i][0], then pop Q[i] Increment C[j] associated with S[i] Populate the additional columns of the matrix M with λ·C[j] / k The variable C represents a counter. A counter C can be started for each possible classification. The counter can be a temporary counter that is temporarily stored. The counter can be stored, for example, in the data store 214. In the illustrated example, there are two classifications to be determined (e.g., male and female), so two counters can be started. The variable λ is used to scale the additional feature columns. For illustrative purposes, the variable λ is represented by a value of 0.001. The value of the variable λ is based on the values ​​of the data that need to be scaled or made to more easily resemble the word embedding model vector values. The variable Q represents a list of N cues as shown in FIG. 9.

[0108] The variable Q[i] represents one of the k neighborhoods. The k neighborhoods can be obtained using the k Nearest Neighbor (KNN) algorithm. Thus, Q[i] represents the trigram for one of the k neighborhoods common to the trigram wq. The variable j in C[j] represents the classification. Thus, the variable C[j] represents the counter for classification.

[0109] In the illustrated example, the trigram wq for an input word w is "^JO, JOA, OAN, ANN, NNA, NA$". The trigrams in Q for k neighbors are "^JO, JOA, OAN, ANN", "^JO" and "ANN, NNA, NA$". The set of nearest names S includes "JOANNE", "JOHN" and "ANNA". Q in this example contains a list of N=3 cues for the 3 nearest neighbors.

[0110] In step 1110, a counter C is started for each possible classification. The counters can be represented by C[j], where j represents the classification (e.g., first, second, third, etc.). In the illustrated example, there are two classifications (e.g., male and female), so two counters are started. The first counter C[0] can correspond to the first classification (e.g., male) and the second counter C[1] can correspond to the second classification (e.g., female). The counters can be stored in a data store of the neologism classification server. The counters can be removed after each iteration after the trigrams of wq are analyzed, and a new counter can be started.

[0111] In step 1120, a trigram (e.g., ^JO) in matrix M for the input word w is identified or selected for analysis. The method of FIG. 11 would continue to be repeated for each trigram wq for the input word. The trigrams in matrix M for analysis are looped over one at a time in sequence. Now, since there are six trigrams in wq "^JO, JOA, OAN, ANN, NNA, NA$", the first trigram to be analyzed is "^JO" and the last trigram to be analyzed is "NA$". Thus, for an example involving six trigrams wq, steps 1120-1170 may be repeated six times for each trigram.

[0112] In step 1130, a trigram (e.g., ^JO) in the list of N queues Q for the k nearest neighbors (e.g., JOANNE, JOHN, ANNA) that matches the trigram identified in step 1120 is determined. In this example, the trigram ^JO occurs twice. The k nearest name trigrams that match the first trigram of the input word are determined: once for the k nearest neighbors "JOANNE" and once for the k nearest neighbors "JOHN".

[0113] In step 1140, the classification of the matching trigram for the particular nearest neighbor that matches the trigram from the input word is determined. The classification of the matching trigram (e.g., ^JO) is identified, for example, from column 960, which indicates the classification for each nearest neighbor. Thus, the classification of the name "JOANNE" (e.g., female) is identified, and the classification of the name "JOHN" (e.g., male) is identified, since both "JOANNE" and "JOHN" contain the trigram "^JO."

[0114] In step 1150, counters associated with the classifications are incremented. A counter for each of the multiple classifications corresponding to the determined classifications of one or more trigrams for the k closest names is incremented. Because the classification for the particular nearest neighbor "JOANNE" is "female", a second counter C[2] for the second classification is incremented. Because the classification for the particular nearest neighbor "JOHN" is "male", a first counter C[1] for the first classification is also incremented.

[0115] In step 1160, the list of N cues Q may be updated. Trigrams (e.g., ^JO) that match the input word trigrams (e.g., ^JO) may be removed from the list of N cues Q (e.g., for the name “JOANNE” and the name “JOHN”).

[0116] In step 1170, the classification values ​​may be populated into the matrix M for the identified trigrams wq. Thus, the classification values ​​shown in row 1233 in the classification column 1230 of FIG.

[0117] In an exemplary embodiment, the classification values ​​are populated after each trigram (e.g., ̂JO, JOA, OAN, ANN, NNA, NA$) is classified. However, the population of the classification values ​​in matrix M may be performed after all of the trigrams wq for the input word have been analyzed.

[0118] The classification column can be populated based on the formula λ·C[j] / k, where k is the number or quantity of nearest neighbors. The variable λ is used for scaling. Scaling is performed so that the classification values ​​have the same order of magnitude as the word embedding model values ​​in column 1220. The word embedding values ​​in the example above have three leading zeros before the decimal point. If the classification values ​​were not scaled, the extra columns in the classification values ​​could stifle the CNN.

[0119] At 1180, it is determined whether there are additional trigrams wq for the input word to be analyzed. Steps 1020, 1030, 1040, 1050, 1060, and 1070 are repeated until all trigrams wq for the input word have been compared to the trigrams for its k nearest neighbors, i.e., steps 1020, 1030, 1040, 1050, 1060, and 1070 are repeated until all trigrams wq for the input word w "JOANNA" have been compared to all trigrams in the list of N queues Q for its k nearest neighbors.

[0120] If there are additional trigrams wq for the input word w to be analyzed, then step 1020 is repeated for the next trigram in wq. For example, the next trigram to be analyzed in wq is "JOA."

[0121] If, in step 1180, it is determined that there are no additional trigrams wq for the input word w to be analyzed, then the process ends.

[0122] C. A matrix populated with classification values 12 illustrates a matrix M completed to include classification values ​​according to some example embodiments. The matrix M illustrated in FIG. 12 is a populated matrix after performing the methods illustrated in FIG. 10 and FIG. 11.

[0123] 12, a first classification column 1231 includes the values ​​"0.3, 0.1, 0.0, 0.0, 0.0, 0.0" for each of the trigrams "^JO, JOA, OAN, ANN, NNA, NA$." A second classification column 1232 includes the values ​​"0.1, 0.4, 0.3, 0.5, 0.3, 0.3" for each of the trigrams "^JO, JOA, OAN, ANN, NNA, NA$."

[0124] Based on the classification results, the second classification column 1232 results in a higher value than the first classification column 1231. Thus, the input word "JOANNA" is more likely to be classified into the second classification (e.g., female).

[0125] However, to ensure accuracy of the classification results, the matrix M will be run through a CNN. The output from the CNN is a softmax vector of length n, where n is the number of possible classifications. A softmax function is a function that can take as input a vector z of K real numbers and normalize the input into a probability distribution with K probabilities proportional to the exponent of the input numbers. In a softmax vector, each element represents the probability (0.0 to 1.0) of the sample being in that class. Often, the class with the highest probability is selected as the prediction and the other probabilities are ignored.

[0126] VI. Convolutional Neural Networks FIG. 13 illustrates a convolutional neural network 1300 according to some demonstrative embodiments.

[0127] FIG. 13 shows an example of a standard convolutional neural network. A convolutional neural network (CNN) for modeling sentences can use the techniques in A Convolutional Neural Network for Modelling Sentences by Kalchbrenner, 2014 (http: / / www.aclweb.org / anthology / P14-1062), which is incorporated by reference for all purposes. A CNN can be implemented using one-dimensional convolutional layers. A CNN can be implemented using a package or library provided by a third party (e.g., GitHub). The package can be Keras implemented using Python and / or DeepLearing4J for Java and Scala. Furthermore, a CNN can be, for example, a 3-layer or 7-layer CNN. These are merely examples, and various CNNs can be used. Furthermore, a CNN can be created independently by a user.

[0128] In at least one embodiment, the array referencing the vector for each message may be used with CNN techniques to determine sentiment analysis. Examples of the techniques may be implemented based on the techniques found at http: / / www.wildml.com / 2015 / 11 / understanding-convolutional-neural-networks-for-nlp / and https: / / github.com / fchollet / keras / blob / master / examples / imdb_cnn.py / , which are incorporated by reference for all purposes. To implement the CNN technique, values ​​for the variables filterlength=3, CNNDenseDropout=0.2, dense_dims=20, batch_size=10, nb_epoch=5, validation_split=0.1 may be set. The CNN may be implemented by executing the following function calls using the data structure generated above. The CNN may be implemented based on a data structure for words as one-dimensional structures.

[0129] By running the CNN based on the function calls, training data is run for testing with the CNN to perform an initial sentiment analysis.

[0130] VII. User Interface FIG. 14 illustrates a user interface 1400 for performing new word classification, according to some example embodiments.

[0131] The user interface 1400 may be displayed on a display of the data enrichment system 120 of the analysis system 110 shown in FIG. 1. The user interface 1400 includes multiple columns 1420 of data from a dataset. The dataset may include, for example, customer information, or other types of data available in a spreadsheet. In the example shown in FIG. 14, the customer information includes city name, state, and zip code. However, this is merely an example and the dataset may include various types of information.

[0132] A user can input a dataset on which neologism classification is to be performed. For example, a user can select a dataset on an interactive user interface of the data enrichment system. The user interface can display multiple data source options from which the datasets can be derived. A user can upload the dataset that they want to enrich, analyze, or visualize. The dataset can be in the form of columns, such as a spreadsheet.

[0133] The user interface 1400 includes a recommendation panel 1410. The recommendation panel provides the user with one or more recommendations for actions to apply to the dataset. For example, the recommendation may include enriching the data by determining new terms for the columns of data. The recommendation may include enriching the data by performing new term classification on one or more columns of data in the dataset. For example, the user may select recommendation 1430 to enrich the cities column of the dataset by performing new term classification.

[0134] The data enrichment system is configured to provide recommendations for performing operations on a dataset, such as enriching the data. That is, the data enrichment system can analyze the dataset and enrich the data by providing a user with recommended actions related to the dataset. The data enrichment system can automatically determine which enrichments may be beneficial for the data based on the provided dataset.

[0135] Given a data set, a portion of which is shown in panel 1410, a recommendation may be presented to the user to enrich columns of data by selecting to perform neologism classification (element 1430). Figure 14 shows a simplified diagram of a user interface where the user may select to perform neologism classification. Additional displays may be provided, or the user may be prompted to provide additional information before neologism classification is performed.

[0136] Thus, in one exemplary embodiment, if the dataset includes data on which neologism classification can be performed, the data enrichment system may suggest to the user to perform neologism classification. When the user selects to perform neologism classification (e.g., selects element 1430), neologism classification may be achieved for the selected columns of data.

[0137] The illustrative embodiments provide a system, method, and computer-readable medium with improved accuracy. Thus, the illustrative embodiments improve the determination of classifications of new words.

[0138] Because the exemplary embodiments provide highly accurate classification, the data provided to a user of the data enrichment system can be more complete, which makes the data more useful to the user.

[0139] An example embodiment may include a combination of trigrams, a word embedding model for trigrams (e.g., Word2Vec), k-closest names (e.g., StatSim), additional classification with counters (e.g., male / female), and a convolutional neural network (CNN).

[0140] Trigrams provide improved results in determining the precise features associated with new words: meaning is inferred from the order of the trigrams, not just the value of the trigrams themselves.

[0141] Furthermore, the exemplary embodiment uses a combination of the word embedding model CNN for trigrams. An additional column is added to the right side of the matrix as an additional feature.

[0142] VIII. Hardware Overview 15 shows a simplified diagram of a distributed system 1500 for implementing an embodiment. In the illustrated embodiment, the distributed system 1500 includes one or more client computing devices 1502, 1504, 1506, and 1508 coupled to a server 1512 via one or more communication networks 1510. The client computing devices 1502, 1504, 1506, and 1508 may be configured to execute one or more applications.

[0143] In various embodiments, server 1512 may be adapted to execute one or more services or software applications that enable automated generation of regular expressions described in this disclosure. For example, in a particular embodiment, server 1512 may receive user input data sent from a client device. In this case, the user input data is received by the client device via a user interface displayed on the client device. Server 1512 may then convert the user input data into a regular expression that is sent to the client device for display via the user interface.

[0144] In particular embodiments, server 1512 may also provide other services or software applications, which may include non-virtual and virtual environments. In some embodiments, these services may be provided as web-based or cloud services, such as in a Software as a Service (SaaS) model, to users of client computing devices 1502, 1504, 1506, and / or 1508. Users operating client computing devices 1502, 1504, 1506, and / or 1508 may utilize one or more client applications to interact with server 1512 to utilize the services provided by these components.

[0145] In the configuration shown in Figure 15, the server 1512 may include one or more components 1518, 1520, and 1522 that implement the functions performed by the server 1512. These components may include software components that may be executed by one or more processors, hardware components, or a combination thereof. It should be appreciated that a wide variety of system configurations are possible that may differ from the distributed system 1500. Thus, the embodiment shown in Figure 15 is an example of a distributed system for implementing the system of the embodiments and is not intended to be limiting.

[0146] A user may use client computing devices 1502, 1504, 1506, and / or 1508 to execute one or more applications that may generate regular expressions according to the teachings of this disclosure. The client devices may provide an interface that allows a user of the client device to interact with the client device. The client devices may also output information to the user via the interface. Although FIG. 15 shows only four client computing devices, any number of client computing devices may be supported.

[0147] Client devices may include various types of computing systems, such as portable handheld devices, general purpose computers such as personal computers and laptops, workstation computers, wearable devices, gaming systems, thin clients, various messaging devices, sensors or other sensing devices, etc. These computing devices may include various types and versions of software applications and operating systems (e.g., Microsoft Windows, Apple Macintosh, UNIX or UNIX-like operating systems, Linux or Linux-like operating systems, e.g., Google Chrome OS), including various mobile operating systems (e.g., Microsoft Windows Mobile, iOS, Windows Phone, Android, BlackBerry, Palm OS). Portable handheld devices may include cellular phones, smartphones (e.g., iPhone), tablets (e.g., iPad), personal digital assistants (PDAs), etc. Wearable devices may include Google Glass head-mounted displays and other devices. The gaming systems may include various handheld gaming devices, Internet-enabled gaming devices (e.g., Microsoft Xbox® gaming consoles with or without Kinect® gesture input devices, Sony PlayStation® systems, various gaming systems offered by Nintendo®, etc.) The client devices may be capable of running a wide variety of applications, such as various Internet-related applications, communication applications (e.g., email applications, short message service (SMS) applications), and may use a variety of communication protocols.

[0148] Network 1510 may be any type of network known to those skilled in the art capable of supporting data communications using any of a variety of available protocols, including, but not limited to, TCP / IP (Transmission Control Protocol / Internet Protocol), SNA (Systems Network Architecture), IPX (Internet Packet Exchange), AppleTalk, etc. By way of example only, network 1510 may include a local area network (LAN), an Ethernet-based network, a token ring, a wide area network (WAN), the Internet, a virtual network, a virtual private network (VPN), an intranet, an extranet, a public switched telephone network (PSTN), an infrared network, a wireless network (e.g., a wireless network operating under any of the Institute of Electrical and Electronics Engineers (IEEE) 802.11 protocol suite, Bluetooth, and / or any other wireless protocol), and / or any combination of these and / or other networks.

[0149] The servers 1512 may be comprised of one or more general purpose computers, dedicated server computers (including, by way of example, PC (personal computer) servers, UNIX servers, mid-range servers, mainframe computers, rack-mounted servers, etc.), server farms, server clusters, or other suitable configurations and / or combinations. The servers 1512 may include one or more virtual machines running a virtual operating system, or other computing architectures involving virtualization, such as one or more flexible pools of logical storage that can be virtualized to maintain virtual storage for the servers. In various embodiments, the servers 1512 may be adapted to run one or more services or software applications that provide the functionality described in the disclosure above.

[0150] The computing systems in the servers 1512 may run one or more operating systems, including any of those mentioned above, and any commercially available server operating system. The servers 1512 may also run any of a variety of additional server and / or middle tier applications, including an HTTP (Hypertext Transfer Protocol) server, an FTP (File Transfer Protocol) server, a CGI (Common Gateway Interface) server, a JAVA® server, a database server, and the like. Exemplary database servers include, but are not limited to, those commercially available from Oracle®, Microsoft®, Sybase®, IBM® (International Business Machines), and the like.

[0151] In some implementations, the server 1512 may include one or more applications for parsing and consolidating data feeds and / or event updates received from users of the client computing devices 1502, 1504, 1506, and 1508. By way of example, the data feeds and / or event updates may include, but are not limited to, Twitter® feeds, Facebook® updates, or real-time updates received from one or more third party information sources and continuous data streams that may include real-time events related to sensor data applications, financial stock ticker boards, network performance measurement tools (e.g., network monitoring and traffic management applications), clickstream analysis tools, automobile traffic monitoring, etc. The server 1512 may also include one or more applications for displaying the data feeds and / or real-time events via one or more display devices of the client computing devices 1502, 1504, 1506, and 1508.

[0152] The distributed system 1500 may also include one or more data repositories 1514, 1516. In certain embodiments, these data repositories may be used to store data and other information. For example, one or more of the data repositories 1514, 1516 may be used to store information such as new strings of data that match regular expressions generated by the system. The data repositories 1514, 1516 may be in a variety of locations. For example, the data repository used by the server 1512 may be local to the server 1512 or may be remote from the server 1512 and communicate with the server 1512 via a network-based or dedicated connection. The data repositories 1514, 1516 may be of different types. In certain embodiments, the data repository used by the server 1512 may be a database, for example, a relational database such as databases provided by Oracle Corporation and other manufacturers. One or more of these databases may be adapted to allow data to be stored, updated, and retrieved from the database in response to SQL-formatted commands.

[0153] In particular embodiments, one or more of the data repositories 1514, 1516 may be used by an application to store application data. The data repositories used by an application may be of various types, such as, for example, a key-value store repository, an object store repository, or a general-purpose storage repository supported by a file system.

[0154] In certain embodiments, the functionality described in this disclosure may be provided as a service via a cloud environment. FIG. 16 is a simplified block diagram of a cloud-based system environment 1600 that may provide various services as cloud services, according to certain examples. In the example shown in FIG. 16, a cloud infrastructure system 1602 may provide one or more cloud services that users may request using one or more client computing devices 1604, 1606, and 1608. The cloud infrastructure system 1602 may include one or more computers and / or servers, which may include those previously described with respect to server 1512. The computers in the cloud infrastructure system 1602 may be organized as general purpose computers, dedicated server computers, server farms, server clusters, or any other suitable arrangement and / or combination.

[0155] The network 1610 may facilitate communication and exchange of data between the clients 1604, 1606, and 1608 and the cloud infrastructure system 1602. The network 1610 may include one or more networks. The networks may be of the same type or different types. The network 1610 may support one or more communication protocols, including wired and / or wireless protocols, to facilitate communication.

[0156] The example shown in Figure 16 is merely one example of a cloud infrastructure system and is not intended to be limiting. It should be understood that in other examples, cloud infrastructure system 1602 may have more or fewer components than those shown in Figure 16, may combine two or more components, or may have components in a different configuration or arrangement. For example, while Figure 16 shows three client computing devices, in alternative examples, any number of client computing devices may be supported.

[0157] The term cloud services is generally used to refer to services made available to users on demand via a communication network such as the Internet by a service provider's system (e.g., cloud infrastructure system 1602). Typically, in a public cloud environment, the servers and systems that make up the cloud service provider's system are different from the customer's own on-premise servers and systems. The cloud service provider's systems are managed by the cloud service provider. Thus, customers can use cloud services provided by the cloud service provider without having to purchase separate licenses, support, or hardware and software resources for the services. For example, the cloud service provider's system may host applications, and users may order and use the applications on demand via the Internet without having to purchase infrastructure resources to run the applications. Cloud services are designed to provide easy and scalable access to applications, resources, and services. Several providers offer cloud services. For example, several cloud services, such as middleware services, database services, and Java cloud services, are offered by Oracle Corporation of Redwood Shores, California.

[0158] In particular embodiments, cloud infrastructure system 1602 may provide one or more cloud services using a variety of models, such as a Software as a Service (SaaS) model, a Platform as a Service (PaaS) model, an Infrastructure as a Service (IaaS) model, etc., including hybrid service models. Cloud infrastructure system 1602 may include a suite of applications, middleware, databases, and other resources that enable the provisioning of various cloud services.

[0159] The SaaS model allows applications or software to be delivered as a service to customers over a communications network such as the Internet without the customer having to purchase the hardware or software for the underlying application. For example, the SaaS model may be used to allow customers to access on-demand applications hosted by the cloud infrastructure system 1602. Examples of SaaS services offered by Oracle Corporation include, but are not limited to, various services for human resource / capital management, customer relationship management (CRM), enterprise resource planning (ERP), supply chain management (SCM), enterprise performance management (EPM), analytics services, and social applications.

[0160] The IaaS model is commonly used to provide flexible computing and storage capabilities by providing infrastructure resources (e.g., servers, storage, hardware and networking resources) to customers as cloud services. Various IaaS services are offered by Oracle Corporation.

[0161] The PaaS model is generally used to provide platform and environment resources as a service that enable customers to develop, run, and manage applications and services without having to procure, build, or manage the environment resources. Examples of PaaS services provided by Oracle Corporation (registered trademark) include, but are not limited to, Oracle Java Cloud Service (JCS), Oracle Database Cloud Service (DBCS), data management cloud services, various application development solution services, etc.

[0162] Cloud services are typically provided on an on-demand, self-service basis, on a subscription basis, and in a flexible, scalable, reliable, highly available, and secure manner. For example, a customer may order one or more services provided by cloud infrastructure system 1602 via a subscription order. Cloud infrastructure system 1602 then provides the services requested in the customer's subscription order by performing processing. Cloud infrastructure system 1602 may be configured to provide one or more cloud services.

[0163] Cloud infrastructure system 1602 may provide cloud services through a variety of deployment models. In a public cloud model, cloud infrastructure system 1602 may be owned by a third-party cloud service provider and cloud services are provided to general public customers. The customers may be individuals or businesses. In a private cloud model, cloud infrastructure system 1602 may function within an organization (e.g., within a corporate organization) and services are provided to customers within the organization. For example, the customers may be various departments of a company, such as human resources, payroll, etc., or may be individuals within a company. In a community cloud model, cloud infrastructure system 1602 and the services provided may be shared among various organizations within an associated community. Various other models may be used, including hybrids of the above models.

[0164] Client computing devices 1604, 1606, and 1608 may be of different types (e.g., devices 1502, 1504, 1506, and 1508 shown in FIG. 15) and may be capable of operating one or more client applications. Users may use the client devices to interact with cloud infrastructure system 1602, such as to request services provided by cloud infrastructure system 1602.

[0165] In some embodiments, the processing that cloud infrastructure system 1602 performs to provide management-related services may include big data analytics. This analytics may include using, analyzing, and processing large data sets to detect and visualize various trends, behaviors, relationships, and the like within the data. This analytics may be performed by one or more processors, possibly processing the data in parallel, running simulations with the data, and the like. For example, big data analytics may be performed by cloud infrastructure system 1602 to automatically determine regular expressions. The data used for this analytics may include structured data (e.g., data stored in a database or structured according to a structured model) and / or unstructured data (e.g., data blobs (binary large objects)).

[0166] 16, cloud infrastructure system 1602 may include infrastructure resources 1630 utilized to facilitate the provision of various cloud services offered by cloud infrastructure system 1602. Infrastructure resources 1630 may include, for example, processing resources, storage or memory resources, networking resources, etc.

[0167] In certain embodiments, to facilitate efficient provisioning of these resources to support the various cloud services offered by cloud infrastructure system 1602 for different customers, resources may be organized into resource sets or resource modules (also referred to as "pods"). Each resource module or pod may include a pre-integrated and optimized combination of one or more types of resources. In certain embodiments, different pods may be pre-provisioned for different types of cloud services. For example, a first set of pods may be provisioned for database services, a second set of pods may be provisioned for Java services, etc., which may include a different combination of resources than the pods in the first set of pods. For some services, resources allocated to provision these services may be shared between the services.

[0168] Cloud infrastructure system 1602 itself may use services 1632 internally that are shared by different components of cloud infrastructure system 1602 and that facilitate provisioning of services by cloud infrastructure system 1602. These internal shared services may include, but are not limited to, security and identity services, integration services, enterprise repository services, enterprise manager services, virus scanning and whitelist services, high availability, backup and recovery services, services enabling cloud support, email services, notification services, file transfer services, etc.

[0169] Cloud infrastructure system 1602 may include multiple subsystems. These subsystems may be implemented in software, or hardware, or a combination thereof. As shown in FIG. 16, the subsystems may include a user interface subsystem 1612 that allows users or customers of cloud infrastructure system 1602 to interact with cloud infrastructure system 1602. User interface subsystem 1612 may include a variety of different interfaces, such as a web interface 1614, an online store interface 1616 through which cloud services offered by cloud infrastructure system 1602 are advertised and available for purchase by consumers, and other interfaces 1618. For example, a customer may use a client device to request (service request 1634) one or more services offered by cloud infrastructure system 1602 using one or more of interfaces 1614, 1616, and 1618. For example, a customer may access an online store, browse cloud services offered by cloud infrastructure system 1602, and place a subscription order for one or more services offered by cloud infrastructure system 1602 and for which the customer wishes to subscribe. The service request may include information identifying the customer and one or more services the customer wishes to subscribe to. For example, a customer may place an order for a subscription to an automated regular expression generation related service provided by cloud infrastructure system 1602.

[0170] 16, the cloud infrastructure system 1602 may include an order management subsystem (OMS) 1620 configured to process new orders. As part of this process, the OMS 1620 may be configured to create an account for the customer if not already created, receive billing and / or account information from the customer that will be used to charge the customer for providing the requested services to the customer, verify the customer information, and once verified, reserve the order for the customer, and prepare the order for provisioning by coordinating various workflows.

[0171] Upon proper validation, the OMS 1620 may invoke an order provisioning subsystem (OPS) 1624 configured to provision resources for the order, including processing, memory, and networking resources. Provisioning may include allocating resources for the order and configuring the resources to facilitate the service requested by the customer order. The manner in which resources are provisioned for the order and the types of resources provisioned may depend on the type of cloud service ordered by the customer. For example, following a workflow, the OPS 1624 may be configured to determine the specific cloud service being requested and identify the number of pods that may be pre-configured for the specific cloud service. The number of pods allocated for an order may depend on the size / amount / level / scope of the service requested. For example, the number of pods to allocate may be determined based on the number of users the service should support, the duration for which the service is requested, etc. The allocated pods may then be customized to the specific requesting customer to provide the requested service.

[0172] Cloud infrastructure system 1602 may send a response or notification 1644 to the requesting customer to indicate when the requested service will be available for use. In some examples, information (e.g., a link) may be sent to the customer that enables the customer to begin using and availing the benefits of the requested service. In certain embodiments, for a customer requesting a regular expression auto-generation related service, the response may include instructions that, when executed, cause a user interface to be displayed.

[0173] Cloud infrastructure system 1602 may provide services to multiple customers. For each customer, cloud infrastructure system 1602 is responsible for managing information associated with one or more subscription orders received from the customer, maintaining customer data associated with the orders, and providing the requested services to the customer. Cloud infrastructure system 1602 may also collect usage statistics regarding the customer's use of the subscribed services. For example, statistics may be collected on the amount of storage used, the amount of data transferred, the number of users, and the amount of system uptime and system downtime, etc. This usage information may be used to bill the customer. Billing may be on a monthly basis, for example.

[0174] Cloud infrastructure system 1602 may provide services to multiple customers in parallel. Cloud infrastructure system 1602 may store information about these customers, possibly including copyright information. In particular embodiments, cloud infrastructure system 1602 includes an identity management subsystem (IMS) 1628 configured to manage information about customers and separate the managed information so that information about one customer is not accessed from information about another customer. IMS 1628 may be configured to provide various security-related services, such as identity services, information access management, authentication and authorization services, services for managing customer identities and roles and associated capabilities, and the like.

[0175] FIG. 17 illustrates an example of a computer system 1700 according to some exemplary embodiments. In some embodiments, the computer system 1700 may be used to implement any of the systems described above. As shown in FIG. 17, the computer system 1700 includes various subsystems, including a processing subsystem 1704 that communicates with several other subsystems via a bus subsystem 1702. These other subsystems may include a processing acceleration unit 1706, an I / O subsystem 1708, a storage subsystem 1718, and a communication subsystem 1724. The storage subsystem 1718 may include non-transitory computer-readable storage media, including a storage medium 1722 and a system memory 1710.

[0176] Bus subsystem 1702 provides a mechanism for allowing the various components and subsystems of computer system 1700 to communicate with each other as intended. Although bus subsystem 1702 is shown diagrammatically as a single bus, alternative embodiments of the bus subsystem may utilize multiple buses. Bus subsystem 1702 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, a local bus, etc., using any of a variety of bus architectures. For example, such architectures may include an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, a Peripheral Component Interconnect (PCI) bus, which may be implemented as a mezzanine bus manufactured in accordance with the IEEE P1386.1 standard, and the like.

[0177] The processing subsystem 1704 controls the operation of the computer system 1700 and may include one or more processors, application specific integrated circuits (ASICs), or field programmable gate arrays (FPGAs). The processors may include single-core or multi-core processors. The processing resources of the computer system 1700 may be organized into one or more processing units 1732, 1734, etc. The processing units may include one or more processors, one or more cores from the same or different processors, combinations of cores and processors, or other combinations of cores and processors. In some embodiments, the processing subsystem 1704 may include one or more dedicated co-processors, such as graphics processors, digital signal processors (DSPs), etc. In some embodiments, some or all of the processing units of the processing subsystem 1704 may be implemented using customized circuitry, such as application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs).

[0178] In some embodiments, the processing units in the processing subsystem 1704 may execute instructions stored in the system memory 1710 or the computer-readable storage medium 1722. In various examples, the processing units may execute various program or code instructions and may maintain multiple programs or processes running simultaneously. At any given time, some or all of the program code to be executed may reside in the system memory 1710 and / or the computer-readable storage medium 1722, potentially including one or more storage devices. Through appropriate programming, the processing subsystem 1704 may provide the various functions described above. In examples where the computer system 1700 is running one or more virtual machines, one or more processing units may be assigned to each virtual machine.

[0179] In particular embodiments, a processing acceleration unit 1706 may optionally be provided to accelerate the overall processing performed by the computer system 1700, to perform customized processing, or to offload some of the processing performed by the processing subsystem 1704.

[0180] I / O subsystem 1708 may include devices and mechanisms for inputting information to computer system 1700 and / or outputting information from or through computer system 1700. In general, use of the term input device is intended to include all conceivable types of devices and mechanisms for inputting information to computer system 1700. User interface input devices may include, for example, keyboards, pointing devices such as mice or trackballs, touchpads or touchscreens integrated into displays, scroll wheels, click wheels, dials, buttons, switches, keypads, voice input devices with voice command recognition systems, microphones, and other types of input devices. User interface input devices may also include motion sensing and / or gesture recognition devices, such as a Microsoft Kinect® motion sensor that allows a user to control and interact with the input device, a Microsoft Xbox® 360 game controller, and devices with an interface for receiving input using gestures and voice commands. The user interface input devices may also include eye gesture recognition devices, such as a Google Glass® blink detector, that detects eye movements from the user (e.g., "blinking" while taking a picture and / or making a menu selection) and translates the eye gestures as input to the input device (e.g., Google Glass®). The user interface input devices may also include a voice recognition sensing device that allows the user to interact with a voice recognition system (e.g., the Siri® navigator) via voice commands.

[0181] Other examples of user interface input devices include, but are not limited to, three-dimensional (3D) mice, joysticks or pointing sticks, game pads and graphic tablets, as well as audio / visual devices such as speakers, digital cameras, digital camcorders, portable media players, webcams, image scanners, fingerprint scanners, barcode readers 3D scanners, 3D printers, laser range finders, and eye-tracking devices. In addition, user interface input devices may include medical imaging input devices, such as, for example, computed tomography, magnetic resonance imaging, positron emission tomography, and medical ultrasound devices. User interface input devices may also include audio input devices, such as, for example, MIDI keyboards, digital musical instruments, and the like.

[0182] In general, use of the term output device is intended to include all possible types of devices and mechanisms for outputting information from computer system 1700 to a user or to another computer. User interface output devices may include a display subsystem, indicator lights, or non-visual displays such as audio output devices, etc. The display subsystem may be a flat panel device such as one that uses a cathode ray tube (CRT), liquid crystal display (LCD) or plasma display, a projection device, a touch screen, etc. For example, user interface output devices may include, but are not limited to, various display devices that visually convey text, graphics, and audio / visual information, such as monitors, printers, speakers, headphones, automobile navigation systems, plotters, audio output devices, and modems.

[0183] The storage subsystem 1718 provides a repository or data store for storing information and data used by the computer system 1700. The storage subsystem 1718 comprises a tangible, non-transitory computer-readable storage medium for storing basic programming and data constructs that provide some example functionality. Software (e.g., programs, code modules, instructions) that, when executed by the processing subsystem 1704, provide the functionality described above may be stored in the storage subsystem 1718. The software may be executed by one or more processing units of the processing subsystem 1704. The storage subsystem 1718 may also comprise a repository for storing data used in accordance with the teachings of the present disclosure.

[0184] The storage subsystem 1718 may include one or more non-transitory memory devices, including volatile and non-volatile memory devices. As shown in FIG. 17, the storage subsystem 1718 includes a system memory 1710 and a computer-readable storage medium 1722. The system memory 1710 may include several memories, including a volatile main random access memory (RAM) for storing instructions and data during program execution, and a non-volatile read-only memory (ROM) or flash memory in which fixed instructions are stored. In some implementations, a basic input / output system (BIOS), containing the basic routines that help transfer information between elements within the computer system 1700, such as during start-up, may typically be stored in a ROM. Typically, the RAM contains data and / or program modules currently being operated on and executed by the processing subsystem 1704. In some implementations, the system memory 1710 may include several different types of memories, such as static random access memory (SRAM), dynamic random access memory (DRAM), and the like.

[0185] 17, system memory 1710 may load running application programs 1712, program data 1714, and operating system 1716, which may include various applications such as a web browser, a middle tier application, a relational database management system (RDBMS), etc. By way of example, operating system 1716 may include various versions of Microsoft Windows®, Apple Macintosh®, and / or Linux operating systems, various commercially available UNIX® or UNIX-like operating systems (including but not limited to various GNU / Linux operating systems, Google Chrome® OS, etc.), and / or mobile operating systems such as iOS®, Windows® Phone, Android® OS, BlackBerry® OS, Palm® OS operating systems, etc.

[0186] The computer-readable storage medium 1722 may store programming and data configurations that provide some example functionality. The computer-readable storage medium 1722 may provide storage of computer-readable instructions, data structures, program modules, and other data for the computer system 1700. Software (programs, code modules, instructions) that provide the above-mentioned functionality when executed by the processing subsystem 1704 may be stored in the storage subsystem 1718. As an example, the computer-readable storage medium 1722 may include non-volatile memory such as a hard disk drive, a magnetic disk drive, a CD ROM, a DVD, an optical disk drive such as a Blu-Ray® disk, or other optical media. The computer-readable storage medium 1722 may include, but is not limited to, a Zip® drive, a flash memory card, a Universal Serial Bus (USB) flash drive, a Secure Digital (SD) card, a DVD disk, a digital video tape, and the like. The computer-readable storage medium 1722 may also include solid-state drives (SSDs) based on non-volatile memory such as flash memory-based SSDs, enterprise flash drives, solid-state ROM, etc., SSDs based on volatile memory such as solid-state RAM, dynamic RAM, static RAM, DRAM-based SSDs, magnetoresistive RAM (MRAM) SSDs, and hybrid SSDs that use a combination of DRAM and flash memory-based SSDs.

[0187] In particular embodiments, storage subsystem 1718 may also include a computer readable storage medium reader 1720, which may be further connected to a computer readable storage medium 1722. Reader 1720 may receive data from and be configured to read data from a memory device, such as a disk, a flash drive, or the like.

[0188] In certain embodiments, computer system 1700 may support virtualization techniques, including but not limited to virtualization of processing and memory resources. For example, computer system 1700 may provide support for running one or more virtual machines. In certain embodiments, computer system 1700 may execute a program, such as a hypervisor, that facilitates configuration and management of virtual machines. Each virtual machine may be assigned memory, computing (e.g., processors, cores), I / O, and networking resources. Each virtual machine typically runs independently from other virtual machines. A virtual machine typically runs its own operating system, which may be the same or different from the operating systems run by other virtual machines executed by computer system 1700. Thus, potentially multiple operating systems may be run simultaneously by computer system 1700.

[0189] The communications subsystem 1724 provides an interface to other computer systems and networks. The communications subsystem 1724 serves as an interface for sending and receiving data between other systems and the computer system 1700. For example, the communications subsystem 1724 may enable the computer system 1700 to establish a communications channel over the Internet to one or more client devices to send information to and receive information from the one or more client devices.

[0190] The communications subsystem 1724 may support both wired and / or wireless communications protocols. In particular embodiments, the communications subsystem 1724 may include a radio frequency (RF) transceiver component for accessing wireless voice and / or data networks (e.g., using cellular telephone technology, advanced data network technologies such as 3G, 4G, or EDGE (Enhanced Data Rates for Global Evolution), WiFi (IEEE 802.XX family of standards, or other mobile communications technologies, or any combination thereof), a global positioning system (GPS) receiver component, and / or other components. In some embodiments, the communications subsystem 1724 may provide a wired network connection (e.g., Ethernet) in addition to or in lieu of a wireless interface.

[0191] The communications subsystem 1724 may receive and transmit data in a variety of formats. In some embodiments, the communications subsystem 1724 may receive incoming communications in the form of structured and / or unstructured data feeds 1726, event streams 1728, event updates 1730, etc., in addition to other formats. For example, the communications subsystem 1724 may be configured to receive (or transmit) data feeds 1726 in real time from users of social media networks and / or other communications services, such as web feeds, such as Twitter® feeds, Facebook® updates, Rich Site Summary (RSS) feeds, and / or real-time updates from one or more third party sources, etc.

[0192] In particular embodiments, the communications subsystem 1724 may be configured to receive data in the form of a continuous data stream, which may include an event stream 1728 of real-time events and / or event updates 1730, which may be continuous or infinite in nature without a clear end. Examples of applications that generate continuous data may include, for example, sensor data applications, financial stock ticker boards, network performance measurement tools (e.g., network monitoring and traffic management applications), clickstream analysis tools, automobile traffic monitoring, and the like.

[0193] Communications subsystem 1724 may be configured to communicate data from computer system 1700 to other computer systems or networks. This data may be communicated in a variety of different formats, such as structured and / or unstructured data feeds 1726, event streams 1728, event updates 1730, etc., to one or more databases that may be in communication with one or more streaming data source computers coupled to computer system 1700.

[0194] The computer system 1700 may be one of a variety of types, including a handheld portable device (e.g., an iPhone® cellular phone, an iPad® computing tablet, a PDA), a wearable device (e.g., a Google Glass® head-mounted display), a personal computer, a workstation, a mainframe, a kiosk, a server rack, or other data processing system. Due to the ever-changing nature of computers and networks, the description of the computer system 1700 shown in FIG. 17 is intended as an example only. Many other configurations having more or fewer components than the system shown in FIG. 17 are possible. Those skilled in the art will recognize other aspects and / or methods for implementing the various examples based on the disclosure and teachings herein.

[0195] While specific examples have been described, various variations, modifications, alternative configurations, and equivalents are possible. The examples are not limited to operation in a particular data processing environment, but may freely operate in multiple data processing environments. In addition, while some examples have been described with a particular sequence of transactions and steps, it should be apparent to one skilled in the art that this is not intended to be limiting. Although some flow charts describe operations as a sequential process, many of these operations may be performed in parallel or simultaneously. In addition, the order of operations may be rearranged. A process may have additional steps not included in the figures. Various features and aspects of the above examples may be used individually or together.

[0196] Additionally, while some examples have been described using particular combinations of hardware and software, it should be understood that other combinations of hardware and software are possible. Some examples may be implemented exclusively in hardware, exclusively in software, or using a combination thereof. The various processes described herein may be implemented on the same processor or on different processors in any combination.

[0197] Where a device, system, component, or module is described as being configured to perform a particular operation or function, such configuration may be achieved, for example, by designing an electronic circuit to perform the operation, by programming a programmable electronic circuit (such as a microprocessor) to perform the operation, by executing, for example, computer instructions or code, or a processor or core programmed to execute code or instructions stored in a non-transitory memory medium, or any combination thereof. Processes may communicate using a variety of techniques, including, but not limited to, conventional techniques for inter-process communication, and different pairs of processes may use different techniques, and the same pair of processes may use different techniques at different times.

[0198] Specific details are provided in the present disclosure so that the above examples can be fully understood. However, the examples can be implemented without these specific details. For example, well-known circuits, processes, algorithms, structures, and techniques are provided without unnecessary details to avoid obscuring the examples. This specification provides only illustrative examples and is not intended to limit the scope, applicability, or configuration of other examples. Rather, the above description of the examples will provide those skilled in the art with an enabling description for implementing various examples. Various changes are possible within the function and configuration of the elements.

[0199] Accordingly, the specification and drawings are to be regarded in an illustrative rather than restrictive sense. It will be apparent, however, that additions, subtractions, deletions, and other modifications and changes may be made thereto without departing from the broader spirit and scope as set forth in the claims. Thus, while specific examples have been described, they are not intended to be limiting. Various modifications and equivalents are within the scope of the appended claims.

[0200] In the above specification, aspects of the disclosure are described with reference to specific examples thereof, but those skilled in the art will recognize that the disclosure is not limited thereto. Various features and aspects of the above disclosure may be used individually or together. Moreover, the examples may be utilized in various environments and applications beyond those described herein without departing from the broader spirit and scope of the specification. Thus, the specification and drawings should be regarded as illustrative rather than restrictive.

[0201] In the above description, the methods are described in a particular order for illustrative purposes. It should be understood that in alternative examples, the methods may be performed in an order different from that described. It should also be understood that the above methods may be performed by hardware components or embodied in a sequence of machine-executable instructions that may be used to cause a machine, such as a general-purpose or special-purpose processor or logic circuitry programmed with the instructions, to perform the methods. These machine-executable instructions may be stored on one or more machine-readable media, such as a CD-ROM or other type of optical disk, a floppy disk, a ROM, a RAM, an EPROM, an EEPROM, a magnetic or optical card, a flash memory, or other type of machine-readable medium suitable for storing electronic instructions. Alternatively, the methods may be performed by a combination of hardware and software.

[0202] Where a component is described as being configured to perform particular operations, such configuration may be achieved, for example, by designing electronic circuitry or other hardware to perform the particular operations, by programming a programmable electronic circuitry (e.g., a microprocessor or other suitable electronic circuitry) to perform the particular operations, or by any combination thereof.

[0203] Although illustrative examples of the present application have been described in detail herein, it is to be understood that the concepts of the present invention may be variously embodied and employed in other forms, and that the claims are intended to be construed to include such modifications except insofar as limited by the prior art.

[0204] Where a component is described as being "configured to" perform particular operations, such configuration may be achieved, for example, by designing electronic circuitry or other hardware to perform the particular operations, by programming a programmable electronic circuitry (e.g., a microprocessor or other suitable electronic circuitry) to perform the particular operations, or by any combination thereof.

Claims

1. 1. A method comprising: receiving, by a server computer having a processor and a memory, an input word including a first string; determining, by the server computer, a first plurality of trigrams for the input word; calculating, by the server computer, a plurality of word embedding vector values ​​for each of the determined first plurality of trigrams; inputting, by the server computer, the plurality of word embedding vector values ​​into a plurality of rows of a matrix, respectively; and determining, by the server computer, a plurality of closest names, the plurality of closest names being names having a second character string that is similar to the first character string of the input word, the method further comprising: determining, by the server computer, a second plurality of trigrams for each of the plurality of closest names; determining, by the server computer, trigrams common to the first plurality of trigrams of the input word and the second plurality of trigrams of each of the plurality of closest names; calculating, by the server computer, a plurality of classification values ​​for each of the first plurality of trigrams based on classifications of each of the plurality of closest names that include the common trigram; updating, by the server computer, the matrix such that rows of the matrix including word embedding vector values ​​of trigrams corresponding to the plurality of classification values ​​include the plurality of classification values; inputting, by the server computer, the updated matrix into a convolutional neural network and determining a classification of the input word based on an output of the convolutional neural network.

2. The method of claim 1 , wherein the input word is a new word.

3. The step of calculating the plurality of classification values ​​for each of the first plurality of trigrams comprises: identifying the first plurality of trigrams from the input word; identifying the second plurality of trigrams from each of the plurality of closest names; comparing the first plurality of trigrams from the input word to the second plurality of trigrams from each of the plurality of closest names; and calculating the plurality of classification values ​​for each of the first plurality of trigrams based on a number of matches between the first plurality of trigrams in the input word and the second plurality of trigrams from each of the plurality of closest names and a classification of each name containing a matching trigram among the plurality of closest names.

4. The step of calculating the plurality of classification values ​​for each of the first plurality of trigrams comprises: starting a counter for each of a plurality of classifications corresponding respectively to the plurality of classification values; selecting a first trigram from the first plurality of trigrams of the input word; determining one or more trigrams from the second plurality of trigrams of each of the plurality of closest names that match the first trigram of the input word; determining a classification for each of the one or more trigrams from a classification for each name that includes the one or more trigrams among the plurality of closest names; for the first trigram, incrementing the counter corresponding to a classification of each of the one or more trigrams; and calculating the plurality of classification values ​​for the first trigram based on the value of the counter.

5. the plurality of word embedding vector values ​​are calculated using a word embedding model; The method according to any one of claims 1 to 4, wherein the word embedding model is trained according to the type of the input word.

6. The method of claim 5 , wherein the word embedding model is trained to calculate word embedding vector values ​​for trigrams.

7. The method of any one of claims 1 to 6, wherein a trigram of the first plurality of trigrams comprises three letters, characters or symbols in consecutive order from the input word.

8. The method according to any one of claims 1 to 7, wherein the server computer is a neologism classification server of a data enrichment system.

9. The method of claim 8 , wherein the input words are received on an interactive user interface of the data enrichment system configured to enrich the input words.

10. The method of claim 9 , wherein the interactive user interface is configured to display recommendations for performing neologism classification on one or more input words.

11. A computer program product for causing one or more processors of a server computer to carry out the method according to any one of claims 1 to 10.

12. A processor; Memory, A server computer comprising: a computer readable storage medium coupled to said processor, said computer readable storage medium storing the computer program of claim 11.

Citation Information

Patent Citations

  • Text classification program

    JP2004348239A

  • Character string vector generation device, character string vector generation method, program, and computer readable storage medium storing program

    JP2011248483A

  • Character string similarity calculation device, method and program

    JP2013218628A

  • Domain name statistical classification using character-based n-grams

    US20090043720A1

  • Information processing device, information processing method, and computer-readable recording medium

    WO2019092868A1