Patent Publication Number: US-9886488-B2

Title: Conceptual document analysis and characterization

Description:
This application is a continuation application of U.S. patent application Ser. No. 14/697,315, filed Apr. 27, 2015, entitled “CONCEPTUAL DOCUMENT ANALYSIS AND CHARACTERIZATION,” which is hereby incorporated by reference in its entirety. 
    
    
     TECHNICAL FIELD 
     The subject matter described herein relates to computer systems, methods, and techniques for ingesting and analyzing corpora of electronic documents, and providing conceptual analysis and characterization. 
     BACKGROUND 
     In requests for information, discovery proceedings, general research, etc., a large body of information must be examined to find and extract relevant documents. When a non-sorted, and even disparate, collection of documents is examined, the relevant documents can be a very small fraction of the overall body of information. Furthermore, in many cases, the documents needed may not be readily apparent from titles, keywords, or other direct identifying means. When the body of information becomes large enough, it becomes untenable for a human to perform a search and analysis of each individual document due to either time, expense, or both. Furthermore, humans may apply different standards to their searching, resulting in inconsistent results. As a result, automated processes of document examination and retrieval, while are typically limited by the intelligence of the searching algorithm, are being increasingly adopted. 
     SUMMARY 
     In one aspect, data files are received from data sources that include textual content. The data files are categorized using a taxonomy of categories, where each category has sample textual content that defines a concept for the category. The categorizing includes comparing the textual content of the data file with the sample textual content for the category. A file score is calculated for each data file to compare the degree of similarity between the defined concept of the category and a determined concept for the data file. Each data file is associated with the category if the file score is equal to or greater than a pre-determined minimum score for the category. A portion of the data file and/or file score is be provided. 
     In some variations one or more of the following features can optionally be included in any feasible combination. 
     In one implementation, the taxonomy can be generated by adding categories each representing a concept. Sample textual content can be added to the categories to represent the concept. A minimum score can be added to each category. A text item can be identified from the sample textual content and given a text item score to identify the relevance of the text item to the sample. 
     In another implementation, the associating can be between the data file and only one category, that category being the category that generates the highest file score equal to or greater than the minimum score. The data file can include a source identifier identifying the data source. 
     In a further implementation, the textual content can be clustered into at least one cluster being representative of identified concepts. 
     In yet another implementation, providing the data files can include providing a first representation of the data file along with a second representation of all attachments, metadata, or electronic associations. Also, a portion of the data file and/or the associated file score can be displayed, loaded into memory, transmitted to a remote computing device, or stored into persistent memory. The persistent memory can be a local memory, cloud memory, or email storage. 
     In another implementation, the data files can be received from an ongoing data stream, for example, an email server. 
     Implementations of the current subject matter can include, but are not limited to, methods consistent with the descriptions provided herein as well as articles that comprise a tangibly embodied machine-readable medium operable to cause one or more machines (e.g., computers, etc.) to result in operations implementing one or more of the described features. Similarly, computer systems are also described that may include one or more processors and one or more memories coupled to the one or more processors. A memory, which can include a computer-readable storage medium, may include, encode, store, or the like one or more programs that cause one or more processors to perform one or more of the operations described herein. Computer implemented methods consistent with one or more implementations of the current subject matter can be implemented by one or more data processors residing in a single computing system or multiple computing systems. Such multiple computing systems can be connected and can exchange data and/or commands or other instructions or the like via one or more connections, including but not limited to a connection over a network (e.g. the Internet, a wireless wide area network, a local area network, a wide area network, a wired network, or the like), via a direct connection between one or more of the multiple computing systems, etc. 
     Implementations of the current subject matter can provide one or more advantages. For example, with the current subject matter, a taxonomy can be created that describes a particular search topic, which in turn, allows fast and accurate characterizing of documents that are determined to be relevant to or related to one or more categories that comprise the taxonomy. Further, the taxonomy can be built up with sample data to provide accurate sorting of documents when used in conjunction with a concept analytics engine. 
     The details of one or more variations of the subject matter described herein are set forth in the accompanying drawings and the description below. Other features and advantages of the subject matter described herein will be apparent from the description and drawings, and from the claims. While certain features of the currently disclosed subject matter are described for illustrative purposes in relation to a taxonomy and concept analytics engine, it should be readily understood that such features are not intended to be limiting. The claims that follow this disclosure are intended to define the scope of the protected subject matter. 
    
    
     
       DESCRIPTION OF DRAWINGS 
       The accompanying drawings, which are incorporated in and constitute a part of this specification, show certain aspects of the subject matter disclosed herein and, together with the description, help explain some of the principles associated with the disclosed implementations. In the drawings, 
         FIG. 1  is a system diagram illustrating a concept analysis application connected to data sources and databases; 
         FIG. 2  is a screen capture illustrating a taxonomy; 
         FIG. 3  is a screen capture illustrating the creation of a category; 
         FIG. 4  is a screen capture illustrating the creation of a sample; 
         FIG. 5  is a screen capture illustrating features identified from the sample; 
         FIG. 6  is a diagram illustrating a cluster; 
         FIG. 7  is a block diagram illustrating the categorizing of data files by a concept analytics engine; 
         FIG. 8  is a screen capture illustrating an exporting graphical user interface used to export the categorized data files; 
         FIG. 9  is a screen capture illustrating a report generated after categorizing the data files; and 
         FIG. 10  is a process flow diagram illustrating the analysis and characterization of the data files according to the taxonomy. 
     
    
    
     When practical, similar reference numbers denote similar structures, features, or elements. 
     As used herein, the term “document” and “data file” are synonymous and include structured and unstructured data, for example, text files, email, scanned documents, spreadsheets, tables, charts, etc. 
     DETAILED DESCRIPTION 
     The current subject matter is directed to methods, systems, apparatus, articles/computer program products for contextually analyzing documents. Document searches, for example in a legal discovery proceeding, often involve the searching of dozens, hundreds, or even thousands of documents, emails, or other electronic records. This laborious process is further complicated by the fact that what is valuable may not be readily or explicitly apparent. The current subject matter provides a method by which a taxonomy of categories is used as a structure with which to identify and characterize data files according the contents of the data files. The data files can be, for example, documents, emails, other electronic records, etc. The sorting is based on each category in the taxonomy having a particular concept associated with it. A conceptual analytics engine analyzes each data file and determines if it matches the concept of a particular category. If so, the data file is associated with that category. In this way, one need only have a well-defined taxonomy that can be applied to any collection of data files in order to extract the relevant data files. 
     The concept analytics engine can be used to find documents of interest, but can also be used to indicate that no documents of interest are present in the analyzed data files. This feature can be useful for compliance checks where the presence of certain types of data or documents should not be on a system. 
       FIG. 1  is a system diagram  100  illustrating a concept analysis application  110  connected to data sources and databases. A concept analysis application  110  can be a computer program that executes a concept analytics engine  120  which in turn determines if data sources  130  contain content that match a specified concept or concepts. The concept analysis application  110  accepts and categorizes data files  140  from data sources  130  connected via a network  150 . Once the data files  140  are categorized, the data files  140  and an identification of their categorization can be exported as data file representations  160  that provide a representation, or reproduction, of the categorized data files  140 . 
     The concept analysis application  110  can be executed, for example, on a desktop computer, mainframe computer, server, laptop computer, tablet computer, mobile device, etc. The concept analysis application  110  can also be accessed via a graphical user interface (GUI) connected to a hosting computer  170 . This can be done, for example, when the computing requirements for executing the concept analysis program cannot be met by a less powerful computer. Information can be passed between the GUI for the concept analysis application  110  and the hosting computer  170 . The data sources  130  and/or the hosting computer  170  can be connected to the concept analysis application through the network  150  or via direct link, for example, hardwired, USB port, CD, external hard drives, etc. 
     The data sources  130  can be a persistent memory repository of data files  140  or other electronic documents that contain text-based content, for example, emails, word processing documents, spreadsheets, text messages, etc. The data files  140  in the data sources  130  can be any file format, for example, zip, rar, ost, dat, rtf, pst, xls, html, pdf, etc. The data sources  130  can be databases, servers, personal computers, laptop computers, or any other device that stores electronic documents. The data sources  130  can be, for example, local persistent memory, USB drives, cloud memory, or e-mail servers. 
     The data sources  130  can be provided to the concept analysis application  110  via the network  150  or directly accessed on the local memory of the hosting computer  170 . The data sources  130  can also be on removable memory sources, for example, flash drives, external hard drives, etc. The data files  140  can be received by the concept analysis application  110  in an intermittent or incremental manner, for example connecting the concept analysis application  110  to the data source  130  only at certain times, or as desired by the user. In this way, the concept analytics application  110  ingests the data files  140  available at that time only. If other data files  140  were later added, the concept analytics  140  can be executed again, and can either re-ingest the entire corpus of the data files  140  or can only ingest the newly added data files  140 , i.e. “files added since last execution.” In another implementation, the data files  140  can be received by the concept analysis application  110  in an ongoing manner, where, as the data files  140  are generated, created, transmitted, etc. to or from the data sources  140  and/or from a data stream, that the concept analysis application  110  ingests the data files  140  and performs the analysis described herein. The data stream can be, for example, from the e-mail server, cloud servers, local servers, databases, networked computers, etc. 
     A taxonomy database  180  can be connected to the concept analysis application  110  for the retrieval and saving of taxonomies. Taxonomies are described in greater detail in the discussion of  FIG. 2 . The sample database  190  can be used to store samples  410  that are used to define concepts for taxonomies. The export database  160  can be used to store data files  140  categorized according to the taxonomy  210  used by the concept analysis application  110 . The export database  160  can also be used to store the taxonomy  210  or other identifying data that associates the categorized data files  140  with their corresponding concept. The taxonomy database  180 , and the sample database  190 , can be, for example, computer hard drives, servers, mainframe computers, optical disc drives, etc. 
       FIG. 2  is a screen capture  200  illustrating a taxonomy  210 . The concept analytics engine  120  can categorize the data files  140  according to the taxonomy  210  based on a scoring of how well the concepts identified in the data files  140  match the concepts in the taxonomy  210 . The process of categorizing the data files  140  into the taxonomy  210  can be divided into two separate processes. First, the taxonomy  210  can be generated by creating and linking categories  220  to form a tree of interrelated concepts. The concepts that are described by the categories  220  of the taxonomy  210  can be applied to the data files  140  in order to sort and/or extract the data files  140  of interest to a user. The formation and use of the categories  220  are described in greater detail in the discussion of  FIGS. 3-6 . Second, the taxonomy  210  and the data files  140  can be input into the concept analytics engine  120  that executes the functions that sorts the data files  140  according to the taxonomy  210 . This functionality is described in greater detail in the discussion of  FIG. 7 . 
     The taxonomy  210  can be a hierarchical structure, similar in form to that of a computer directory structure, where each category  220  in the taxonomy  210  can correspond to a particular concept. The concept can be completely arbitrary, for example, sexual harassment, boats, income, sports, business transactions, research projects, promotions, etc. Each category  220  can have one or more sub-categories  220 , which can be considered categories  220  of their own, but of more narrow scope than the parent category  220 . In the example illustrated in  FIG. 2 , the top, or root, category  220  is “harassment based on sex.” As sub-categories  220 , there can be categories  220  such as “gender harassment,” “sexual harassment,” etc. A sub-category  220  of sexual harassment is shown to be a “hostile workplace.” Additional sub-categories  220  are shown that are progressively more narrow categories  220  of their parent category  220 . There can be any number of sub-categories  220  of a category  220 , including zero, if the category  220  is a terminal category  220 . The taxonomy  210 , and the categories  220  that comprise it, can be memory repositories, for example, computer directories, folders, databases, node/pointer objects, containers, etc. In the GUI shown in  FIG. 2 , there can also be a sample preview window  230  that can display the sample text associated with a given sample. The sample text can be edited in the sample preview window  230  or be an immutable display. 
     The taxonomy tree can be represented by a binary tree. Each node in the taxonomy tree, starting with the root node, can have zero or more child nodes. Each node can be associated with a proprietary memory structure called a docmap. Docmaps can be run-length encoded collections of documents identifications. Each entry in the docmap references a document in the system&#39;s database. Docmaps can be optimized to use as little memory as possible while allowing for logical operators to be applied to two docmaps, yielding a third docmap. This allows for determining the union or intersection of two collections which is used to quickly determine document lists for entire branches of the taxonomy tree. 
       FIG. 3  is a screen capture  300  illustrating the creation of a category  220 . A category editor  310  can be a GUI used to create and/or edit the properties of the category  220 . The category  220  can be thought of as a branch of the taxonomy  210  tree, with each category  220  corresponding to a concept of arbitrary scope. The category  220  can have a category name  320  and a category description  330 . The category name  320  can be a simple identifier such as “workplace sexual harassment” or “turbine sales.” The category description  330  can be a plain-language description of what the category  220  represents, for example “Sexual harassment or unwanted attention that occurs at the workplace site.” or “The sales of turbines relating to the Bloomfield Station project.” The category description  330  can be used only to provide reference for the user, and not used to define the concept to which the category  220  represents. Defining of the concept associated with the category  220  can be done by the inclusion of sample text, described in  FIG. 4 . 
     The category  220  can also contain a minimum score  340 . The minimum score  340  can be a numerical rating that can be used after the data file  140  has been analyzed and scored by the concept analytics engine  120 . The minimum score  340  can represent the degree with which the conceptual content of the scored data file  140  matches the concept described by the category  220 . The numerical value of the minimum score  340  can be within any range, 0 to 1, 0 to 100, 1-10, etc. For example, if the minimum score  340  was set at the maximum, such as 100, then only an exact match would associate the data file  140  with the category  220 . Conversely, if the minimum score  340  was set to zero, any data file  140  would be associated with the category  220 . The minimum score  340  should be chosen such that data files  140  which are likely or very likely to have concepts in them that match the concept of the category  220  will be associated with that category  220 . In practice, this means that values of, for example, 70, 80, 90, etc. can be used to obtain relevant, but not exact matches. Some difference between the concept identified in the data file  140  and the concept of the category  220  can be useful because while the contents of the data file  140  may not match the concept exactly, it may be very close, or close enough to be considered relevant or merit further consideration. 
     Keywords are not used to sort the data files  140 , however keywords can be specified. Data files  140  will have keywords highlighted in the content of the data file  140 . This can provide a user with a visual comparison of keyword searches as compared to concept analytics. 
       FIG. 4  is a screen capture  400  illustrating the creation of the sample  410 . The sample  410  can be a collection of sample textual content  420  that can be used to define the concept associated with a given category  220 . For example, in the example of  FIG. 4 , the sample  410  used to define the concept of “Asset Assignment” can include a collection of text that describes the activities associated with a particular asset assignment. The sample textual content  420  can be obtained from a sample  410  data file  140 , which can include, or be independent of, the data files  140  to be analyzed. The clustering functionality, described by  FIG. 6 , can also be executed prior to creating the sample  410 , in order to provide a user a starting point for the creation of the sample  410 , the taxonomy  210 , or the categories  220 . 
     Referring now also to  FIG. 2 , it can be seen that the parent category  220  of a group of categories  220 , for example the “hostile workplace” category  220 , by definition can include the combined samples  410  of its child categories  220 . The parent category  220  can also include additional sample textual content  420  used for its sample(s)  410  in addition to the implied sample textual content  420  of the child categories  220 . 
       FIG. 5  is a screen capture  500  illustrating features identified from the sample  410 . A user may wish to use the sample  410  to define the category  220 , but not know what should be in included in the sample  410 . In one implementation, when evaluating the sample  410 , a visualization of text items  510  within the sample  410  can be generated that can show text items  510  along with a text item score  520 . The text item score  520  can represent the relevance of the text item  510  to the concept that the sample  410  embodies. This can also be referred to as providing an “instant context” for the sample  410 . For example, for a sample  410  describing the purchasing of turbine units, the text item “unit” receives a high score due to its close relationship with the concept of what the sample  410  describes. Similarly, the text item  510  “filing” can receive a lower score, which indicates that the concept for the sample  410  is less related to filing activities. This allows a user to easily determine what concepts are contained in a sample  410 . Also, the visualization and the text items  510  can be updated as the sample  410  is modified. For example, if the sample  410  had content that was about offensive jokes, but also comment about purchase orders, the material about the purchase orders could be excluded from the sample  410  to provide a clearer illustration of the concept. The text items  510  relating to the purchase orders can then be removed from the visualization. 
       FIG. 6  is a diagram  600  illustrating a cluster  610 . Clustering can be used as a way of organizing data files  140  to identify concepts within the data files  140 , and without the user having knowledge of the data or even a clear idea of what data to seek. The concepts identified by clustering can be used as a starting point for creating the taxonomy  210 . Clustering and ad-hoc keyword and concept searches can be performed without prior taxonomy creation. 
     The concept analytics engine  120  can organize the data into a tree of clusters  610 , similarly to that of the taxonomy  210 , but based only on the data itself without any input from the user. The cluster  610  can be made up of sets of parent clusters  620  and child clusters  630 . Each member of the cluster  610  can include any of the content in the data files  140 . The content that forms the cluster  610  can be, for example, words, phrases, file names, numbers, string and/or character sets, etc. Similar to the categories  220 , each member of the cluster  610  can include a well-defined theme or concept where the concept analytics engine  120  has determined that the content is closely related. When considering the parent clusters  620 , which can have additional child clusters  630  and by definition include them, the content in the parent cluster  610  can take on a broader character than that found in the child cluster  630 . The cluster  610  can be formed from any specified collection of data files  140 , for example, the cluster  610  can be formed from the entire collection of the data files  140 , from data files  140  that have not been placed into a category  220  (i.e. using the clustering to identify possibly a new category  220 ), or from a subset of documents that match one of the keywords defined in the taxonomy  210 . 
     Once the taxonomy  210  structure is defined and each of the categories  220  in the taxonomy  210  is populated with the samples  410 , the taxonomy  210  can be applied to any group of data files  140 , documents, etc. as described below. 
       FIG. 7  is a block diagram  700  illustrating the categorizing of the data files  140  by the concept analytics engine  120 . Before the taxonomy  210  is used to categorize the data files  140 , the data files  140  must be ingested into the concept analytics engine  120 . The concept analytics engine  120  can receive the data files  140  from any combination of the data sources  130 , as described in  FIG. 1 . The concept analytics engine  120  then can extract textual content  710  from the data files  140  and can also save the textual content to a database. When the desired data files  140  have been ingested by the concept analytics engine  120 , they can be categorized. Though the data files  140  must be ingested by the concept analytics engine  120  prior to the categorization, the taxonomy  210  can be constructed either before or after the ingestion of the data files  140 . The data files  140  can include, or have added to their ingested form, a source identifier used to identify the source of the data. For example, if the text of an email was ingested by the concept analytics engine  120 , the source identifier can reference the original email from which the text was extracted. This can be important later, when the data files  140  have been categorized, for providing the original data files  140  to a user. Before categorizing the data files  140 , the taxonomy  210  can be ingested by the concept analytics engine  120 . The taxonomy  210  can be a saved taxonomy  210  imported from the taxonomy database  180 , or the taxonomy  210  can be a new taxonomy  210 , created specifically for the desired project and then can be saved to the taxonomy database  180 . 
     The process of categorization can begin with comparing the textual content  710  from the data file  140  against the sample  410  for each of the categories  220  in the taxonomy  210  to determine a file score  720 . The file score  720  can represent the degree of similarity between the concepts identified in the data file  140  and the concepts identified in the category  220 . It is important to note that a new file score  720  can be calculated each time the data file  140  is compared to a new category  220 . This is denoted in  FIG. 7  by the subscript “i,” where the “i” refers to the i-th category  220  that the data file  140  has been compared with. 
     To calculate the file score  720 , the concept analytics engine  120  utilizes Latent Semantic Indexing (LSI). LSI is an indexing and retrieval method that uses singular value decomposition to identify patterns in the relationships between the terms and concepts contained in an unstructured body of text. LSI is based on the principle that words that are used in the same contexts tend to have similar meanings. A key feature of LSI is its ability to extract the conceptual content of a body of text by establishing associations between those terms that occur in similar contexts. The method can uncover the underlying latent semantic structure in the usage of words in a body of text and how it can be used to extract the meaning of the text in response to user queries, commonly referred to as concept searches. Queries, or concept searches, against a set of documents that have undergone LSI will return results that are conceptually similar in meaning to the search criteria even if the results don&#39;t share a specific word or words with the search criteria. 
     To apply the technique of singular value decomposition to the ingested documents/data files  140 , a term-document matrix A can be generated that identifies the occurrences of terms in the documents. The term-document matrix can be a large and sparse matrix of size m by n, where m corresponds to the number of unique terms and n corresponds to the number of documents. Singular value decomposition reduces the rank of the term-document matrix and identifies three matrices where A≈TSD T . T can represent the term vector space, and D can represent the document vector space. The singular value matrix S can represent a singular matrix containing the conceptual information from the document collection. The similarity between the documents in the vector spaces can be represented by the angle between the vector spaces T and D. For example, a perfect match would have a zero angle between the vector spaces, whereas no similarity would generate orthogonal vector spaces. Similar methods for scoring the ingested data files  140  against the taxonomy  210  can be used, for example latent semantic structure indexing, principal component analysis, correspondence analysis, probabilistic latent semantic analysis, etc. 
     Using the above techniques, each of the data files  140  can be compared to each of the categories  220 , in turn, until the data files  140  have been compared to all the categories  220 . Once the file score  720  for the data file  140  has been computed for each category  220 , if the maximum file score  720  is greater than or equal to the minimum score  340  for the corresponding category  220 , then the data file  140  can be associated with that category  220 . If the maximum file score  720  is less than the minimum score  340  for all categories  220 , then the data file  140  can remain unassociated or can be associated with an “uncategorized” category  220 . Documents associated with the uncategorized category are those which were not found to be represented by the taxonomy  210 . 
     In one implementation, the association can be single-valued, requiring that the data file  140  be associated with only one category  220 . This can be done to avoid multiple references to the data file  140  from occurring in the taxonomy  210 . In the event of the file score  720  exceeding the requirements of more than one category  220 , the file score  720  can be placed in only the category  220  with which it received the highest file score  720 , i.e. the best match. 
     For each of the data files  140  compared, after the data file  140  has been associated with the appropriate category  220 , a representation of the data file  140  can be transmitted to another computing system, displayed, sent to the export database  160 , or otherwise distributed. The data file  140  and the file score  720  associated with the data file  140  can be transmitted together to provide an indication of the confidence of the categorization of the data file  140  with the category  220 . The data files  140  transmitted can be from a single category  220 , from multiple categories  220 , or for the entire taxonomy  210 . Furthermore, an association identifier can be transmitted that shows which categories  220  are associated with the data files  140 . 
       FIG. 8  is a screen capture  800  illustrating an exporting graphical user interface  810  used to export the categorized data files  140 . An export GUI  810  can be used to select data files  140  to be exported along with information about what category  220  the data files  140  were categorized into. The export GUI  810  can contain a category field  820  that allows the user to select which categories  220  to include for export. There can be a file type field  830  where the user can select the output file type. The two examples of the output file type shown are native and text. A representation of the data file  140  can be produced that is a forensically accurate reproduction of the original file. Additionally, the data file  140  can be transmitted in its native format, with no manipulation, reformatting, alteration, etc. of the data file  140 . The transmission can also include all of the original metadata, attachments, or other electronic associations for the original data file  140 . The text file type  840  can specify the export to be an unformatted text file. The exported data files  140  can also be in formats such as EXCEL or delimited files. Other formats can also be used, such as formatted text files, compressed files, etc. A column item selector  850  can be used to customize the contents of the exported data files  140 . There can be columns such as “document id,” “external id,” “name,” “original path,” “repository path,” “Book marks”, “ingested time,” “categories,” “email,” etc. 
       FIG. 9  is a screen capture  900  illustrating a report  910  generated after categorizing the data files  140 . After the data files  140  have been categorized according to the taxonomy  210 , reports  910  can be generated that detail the results of the categorization. One example of the report  910  is shown in  FIG. 9  as a spreadsheet that displays the number of data files  140  categorized in each of the categories  220  in the taxonomy  210 . A histogram  920  can also be created to plot the data to visually see the distribution of the data files  140  across a category list  930 . As shown in the figure, the vast majority of the data files  140  have been placed into the “uncategorized” category  220 , meaning that they did not fall into the definition of the taxonomy  210 . This is expected, as it is likely that only a small percentage of documents in a document collection relate to a particular concept. To have a more meaningful histogram  920 , the “uncategorized” category  220  can be excluded from the category list  930  to more easily identify the predominant concepts. Other types of reports can be pie-charts describing the distribution of documents in the categories, communication matrices describing which users are in communication with each other, file type reports describing the distribution of file types ingested, statistics on counts (e.g. matches) per category in a sample, cluster summaries that describe document counts per each item in the cluster, top communications (best matches) by category, communications during a given timespan, keyword summaries that can show how many documents have the specified keyword, etc. 
       FIG. 10  is a process flow diagram  1000  illustrating the analysis and characterization of the data files  140  according to the taxonomy  210 . 
     At  1010 , the data file  140  can be received from the data source  130 . The data file  140  can include textual content  710  representative of the contents of the data file  140 . 
     At  1020 , the concept analytics engine  120  can, for each data file  140  and each category  220 , compare the textual content  710  with the sample textual content  420  for the category  220 . 
     At  1030 , the file score  720  can be calculated for each data file  140 —category  220  pair, indicating the degree of similarity between the concepts represented by the sample textual content  420  of the category  220  and the textual content  710  of the data file  140 . 
     At  1040 , the data file  140  can be associated with the category  220  based on the file score  720  being equal to or greater than the minimum score  340 . 
     At  1050 , the data file  140  and the file score  720  can be provided to another computing system. 
     One or more aspects or features of the subject matter described herein can be realized in digital electronic circuitry, integrated circuitry, specially designed application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs) computer hardware, firmware, software, and/or combinations thereof. These various aspects or features can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which can be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device. The programmable system or computing system may include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. 
     These computer programs, which can also be referred to as programs, software, software applications, applications, components, or code, include machine instructions for a programmable processor, and can be implemented in a high-level procedural language, an object-oriented programming language, a functional programming language, a logical programming language, and/or in assembly/machine language. As used herein, the term “machine-readable medium” refers to any computer program product, apparatus and/or device, such as for example magnetic discs, optical disks, memory, and Programmable Logic Devices (PLDs), used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term “machine-readable signal” refers to any signal used to provide machine instructions and/or data to a programmable processor. The machine-readable medium can store such machine instructions non-transitorily, such as for example as would a non-transient solid-state memory or a magnetic hard drive or any equivalent storage medium. The machine-readable medium can alternatively or additionally store such machine instructions in a transient manner, such as for example as would a processor cache or other random access memory associated with one or more physical processor cores. 
     To provide for interaction with a user, one or more aspects or features of the subject matter described herein can be implemented on a computer having a display device, such as for example a cathode ray tube (CRT) or a liquid crystal display (LCD) or a light emitting diode (LED) monitor for displaying information to the user and a keyboard and a pointing device, such as for example a mouse or a trackball, by which the user may provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well. For example, feedback provided to the user can be any form of sensory feedback, such as for example visual feedback, auditory feedback, or tactile feedback; and input from the user may be received in any form, including, but not limited to, acoustic, speech, or tactile input. Other possible input devices include, but are not limited to, touch screens or other touch-sensitive devices such as single or multi-point resistive or capacitive trackpads, voice recognition hardware and software, optical scanners, optical pointers, digital image capture devices and associated interpretation software, and the like. 
     In the descriptions above and in the claims, phrases such as “at least one of” or “one or more of” may occur followed by a conjunctive list of elements or features. The term “and/or” may also occur in a list of two or more elements or features. Unless otherwise implicitly or explicitly contradicted by the context in which it used, such a phrase is intended to mean any of the listed elements or features individually or any of the recited elements or features in combination with any of the other recited elements or features. For example, the phrases “at least one of A and B;” “one or more of A and B;” and “A and/or B” are each intended to mean “A alone, B alone, or A and B together.” A similar interpretation is also intended for lists including three or more items. For example, the phrases “at least one of A, B, and C;” “one or more of A, B, and C;” and “A, B, and/or C” are each intended to mean “A alone, B alone, C alone, A and B together, A and C together, B and C together, or A and B and C together.” Use of the term “based on,” above and in the claims is intended to mean, “based at least in part on,” such that an unrecited feature or element is also permissible. 
     The subject matter described herein can be embodied in systems, apparatus, methods, and/or articles depending on the desired configuration. The implementations set forth in the foregoing description do not represent all implementations consistent with the subject matter described herein. Instead, they are merely some examples consistent with aspects related to the described subject matter. Although a few variations have been described in detail above, other modifications or additions are possible. In particular, further features and/or variations can be provided in addition to those set forth herein. For example, the implementations described above can be directed to various combinations and subcombinations of the disclosed features and/or combinations and subcombinations of several further features disclosed above. In addition, the logic flows depicted in the accompanying figures and/or described herein do not necessarily require the particular order shown, or sequential order, to achieve desirable results. Other implementations may be within the scope of the following claims.