The present technology may be generally described as systems and methods for extracting information from documents and determining annotation instances via analysis of the extracted information using various methods such as rule-based methods and feature-based methods.
In traditional approaches to information extraction, both engineering and domain knowledge are required to build an extractor that is used to extract information from documents. An extractor engineer using a complex development environment creates extractors manually. Especially for simple in-text fields (which constitute a majority of fields in most extraction projects), the generation of effective extraction rules seems possible for a domain expert without engineering knowledge. However, the complexity of the development environment currently requires extractor engineering knowledge that most domain experts do not possess.
According to some embodiments, the present technology is directed to a method that includes: (a) receiving training documents, the training documents having annotated words; (b) identifying a predetermined number of characters preceding and following each annotated word for each of the training documents to determine a context for each of the annotated words; (c) performing an alignment of an annotated word and its context with characters in the target document; (d) identifying common sequences between the target document and training corpus; based upon the alignment; and (e) assigning an annotation to a word in the target document when a common sequence between the target document and training corpus is found, the annotation comprising an annotation of an annotated word of the training corpus included in the common sequence.
According to some embodiments, the present technology is directed to a method that includes: (a) receiving training documents, the training documents having annotated words; (b) identifying a predetermined number of characters preceding and following each annotated word for each of the training documents to determine a context for each of the annotated words; (c) dividing the target document into n-gram strings; (d) identifying overlapping sequences of characters between the n-gram strings of the target document and the training documents; and (e) assigning an annotation to each word in the target document when the overlapping sequences between the n-gram strings of the target document and the training documents meet or exceed a threshold.
According to some embodiments, the present technology is directed to a method that includes: (a) receiving training documents, the training documents having annotated words; (b) for each annotated word, determining a distance between an annotated word and one or more document features; (c) calculating an averaged location for each annotated word, the averaged location defining an averaged placement of an annotated word within a training document; (d) for each word of a target document, determining a distance between an annotated word and one or more document features; (e) calculating an averaged location for each annotated word, the averaged location defining an averaged placement of an annotated word within a target document; (f) identifying matches between the distance and averaged location of words of the target document and the distances and averaged location of at least one of the annotated words of the training documents; and (g) assigning an annotation to a word of the target document that matches the at least one of the annotated words of the training documents.
According to some embodiments, the present technology is directed to a system that includes: (a) a processor; and (b) logic encoded in one or more tangible media for execution by the processor, the logic when executed by the processor causing the system to: (i) receive training documents, the training documents having annotated words; (ii) identify a predetermined number of characters preceding and following each annotated word for each of the training documents to determine a context for each of the annotated words; (iii) perform an alignment of an annotated word and its context with characters in the target document; (iv) assign an annotation to a word in the target document when a common sequence between the target document and training corpus is found, the annotation comprising an annotation of an annotated word of the training corpus included in the common sequence.
Certain embodiments of the present technology are illustrated by the accompanying figures. It will be understood that the figures are not necessarily to scale and that details not necessary for an understanding of the technology or that render other details difficult to perceive may be omitted. It will be understood that the technology is not necessarily limited to the particular embodiments illustrated herein.
While this technology is susceptible of embodiment in many different forms, there is shown in the drawings and will herein be described in detail several specific embodiments with the understanding that the present disclosure is to be considered as an exemplification of the principles of the technology and is not intended to limit the technology to the embodiments illustrated.
It will be understood that like or analogous elements and/or components, referred to herein, may be identified throughout the drawings with like reference characters. It will be further understood that several of the figures are merely schematic representations of the present technology. As such, some of the components may have been distorted from their actual scale for pictorial clarity.
Generally speaking, the present technology provides systems and methods for extracting information from documents, and in some instances, unstructured and semi-structured documents such as contracts. That is, a contract may include general sections such as price, duties, warranties, and so forth. In other instances, informal contracts, such as letters of intent, may include freeform documents having information that is not arranged in any particular manner.
The present technology makes extraction of in-text fields within documents more scalable by implementing extraction methods that do not require specific programming/engineering skills, but only domain knowledge. The present technology is more scalable in comparison to manual processes where both engineering and domain knowledge are required to build an extractor that is used to extract information from documents. That is, a domain expert initially examines and annotates the documents, formulates general extraction rules, and an extractor engineer translates those rules into executable extractors that are used to process documents.
Manual approaches focus on creating optimal regular expressions from a set of examples. In contrast, the present technology may be configured to identify discriminative sequences within documents and use these discriminative sequences to develop both rule-based extractors and feature-based extractors. The terms “discriminative sequence” is defined as a sequence of words within a document that are categorized as having a particular domain. For example, a discriminative sequence that indicates the start date of a contract may include the terms ‘start,’ ‘begin,’ ‘commence,’ or other similar terms that are spaced apart from a date within a given character proximity. In one example, the term ‘start’ is found within three words of a date, and is thus characterized as a discriminative sequence for a contract start field.
While optimal regular expressions try to generalize the pattern found, such methods have limitations that render the use of optimal regular expression less desirable in real-world extraction environments. Finding discriminative sequences is less ambitious in regard to generalization and therefore more suitable for real-world extraction environments.
In some instances, the present technology may utilize rule-based methods. In these methods, the user provides a sufficient number of annotations for a specified field within a set of training documents. The present technology identifies discriminative sequences in the context of these annotations. Based on these sequences rule suggestions are generated and provided to the user. The user may select or modify the suggested extraction rules and may save the extraction rules in a database. These rules (e.g., extractors) are exported into an extraction system and utilized to process target documents. This process creates an abstraction of the engineering function that would normally be performed by an extractor engineer. Thus, no programming knowledge is required by the domain expert in order to build an extractor.
According to some embodiments, the present technology may utilize sequence alignment to identify discriminative sequences in the context of a specified field. More specifically, similar sequences found in a plurality of annotated documents may be aligned with one another. Using alignment between these similar sequences, in context, discriminative sequences may be determined.
In some instances, the present technology may utilize a feature-based method for processing documents, where alignments in context are used to build features, rather than rules. These features can be used to train a classification engine. Based on a number of context-dependent features, a classification engine may decide whether a potential match is in fact the information that should be extracted.
The present technology may utilize a longest common subsequence algorithm to extract discriminative contextual features for extraction. Additionally, this longest common subsequence analysis is fine-tuned using a contiguity analysis. A greedy contiguity heuristic may be utilized to quantify aspects of contiguity within aligned sequences by analyzing the number of match segments, number of gap segments, and variance in segment length.
These and other advantages of the present technology will be described in greater detail below with reference to the drawings.
In some instances, the system 100 is configured to generate extractor rules that can be utilized by a rule-based annotator to annotate target documents. In other embodiments, the system 100 may be configured to generate feature-based vectors that can be utilized to train a classifier model annotator to annotate target documents. These various methodologies for annotating target documents will be described in greater detail below with reference to
A document annotator, such as a document domain expert may utilize various UIs to annotate the original documents to produce annotated documents. A document annotator may utilize a set of annotation tools, such as a common field lists. Again, exemplary annotation tools are illustrated and described in greater detail below with reference to
Generally, annotation of a document may include associating a word, date, or other group of characters (e.g., identifiable strings) with a particular field. In some instances, the annotations may consider these identifiable strings within their context relevant to the document. For example, the word ‘indemnification’ may be annotated as belonging to a field “Warranty and Indemnification.” The word indemnification may be confirmed as belonging to the Warranty and Indemnification field because the word indemnification was found within a certain distance from the word “warranty.”
The system 100 may employ a context and contiguity analysis module 115 to evaluate these annotated documents, specifically to generate extractor rules 130 and feature based vectors 135. For brevity, the context and contiguity analysis module 115 will hereinafter be referred to as the “analysis module 115”. The analysis module 115 determines discriminative sequences within strings in documents that comprise annotated fields. In some instances, determining discriminative sequences comprises locating (or closely corresponding) words or groups of characters that are proximate to the field date. In some instances the analysis module 115 evaluates words appearing before and after the annotated dates.
It will be understood that a discriminative sequence may include a single word or a group of characters, or may also include a group of words, numbers, symbols, or other similar textual structures. The discriminative sequence is used as a signal or identifier that provides a context for the annotated field with which they are associated. For example, the word ‘commencing’ within three words of an annotated field of a date is discriminative inasmuch as the word ‘commencing’ indicates that the annotated date is a performance start date.
After determining discriminative sequences, a rule-based extractor 120 may utilize the discriminative sequences to generate proposed extraction rules. An exemplary rule is shown in
The document annotator may approve the proposed extraction rule, reject the proposed extraction rule, and/or modify the proposed extraction rule. Once approved (either directly or after modification), the rule-based extractor 120 exports the proposed extraction rule as an extractor rule 130 that may be stored in a datastore 140 or provided directly to an annotation system 145.
A regular expression vector may be translated by the rule-based extractor 120 into rules that may be utilized to create an extractor rule 130.
The first rule 405 can be expressed linguistically as, “for the various regular expressions of ‘start,’ which are followed by a Date, where the Date is followed by various regular expressions of ‘agreement,’ classify or annotate the Date as a Start Date.
Turning to
Automatically annotated documents 165 may be generated by the annotator system 145 initially annotating documents with base annotations. For example, the documents may be processed to determine general fields such as names, dates, and so forth. Next, strings within the target documents 150 compared by the annotator system 145 to an applied rule. If the string corresponds to the rule, the date within the string may be automatically annotated as a Start Date field. In general, the automatically annotated documents 165 may be categorized by the annotator system 145 according to the annotations specified by the rule.
Turning back to
In the example shown in
More specifically, a pair-wise sequence alignment may be executed on all similar contexts within annotated documents. That is, the analysis module 115 may align a first string of a first date with a second string of a second date (as shown in
According to some embodiments, after the documents have been annotated with base annotations, the analysis module 115 may be executed to extract a longest contiguous common subsequence (LCCS) from every possible pair of context strings found between an aligned pair of strings. In some instances, common subsequences are extracted from every possible pair of contexts, and then grouped by similarity.
The analysis module 115 initiates this LCCS process by determining a context for keywords within the aligned strings by examining characters or words that appear before or after the annotated words/characters. The analysis module 115 then cleans or normalizes subsequences by extracting all matching segments of length>n1 aggregated by similarity.
According to some embodiments, the analysis module 115 then assigns a frequency to each LCCS.
It is noteworthy that the LCCS process can be utilized to create a ‘normalized’ representation of similar words that may have slight differences in spelling, such as when the words ‘begin’ and ‘begins.’ The context of these words within a string provides indications to the analysis module 115 that the words are synonymous. In some instances, the context is determined by determining the distance of the word from the annotated words/characters.
In
According to some embodiments, the analysis module 115 may be configured to assume that examples that were flagged by the base annotation module 105A, but not annotated by the document annotator as a specific annotated field, as negative instances. Conversely, the analysis module 115 considers annotations specifically defined by the document annotator as positive instances.
Instead of rule suggestions, features are created (e.g., feature representation) that are used to train a classifier model annotator 155 used by the annotator system 145. More specifically, feature-based extractor generator 125 may generate feature representations that are converted into a feature-based vector 135. The system 100, and specifically the feature-based extractor generator 125, creates a feature-based vector 135 that can be utilized by the classifier model annotator 155 to annotate target documents.
In some instances, features are mapped to a high-dimensional feature representation. Exemplary classifier models may comprise a support vector machine (SVM), a decision tree, or a naïve Bayes classifier, or other similar classifier that would be known to one of ordinary skill in the art with the present disclosure before them.
The analysis module 115 may utilize discriminative sequences to create a feature representation that is based on alignment percentage and that localizes and minimizes effects of OCR errors present in the target documents 150, if any. Additionally, the feature representation may be created in such a way that it is nuanced, allowing for weighting of parts of subsequences.
With regard to determining high-dimensional feature representations, instead of building rules using the most frequently identified sequences, frequent sequences serve as cluster centers. Once the sequences for the cluster centers have been identified, each sequence is transformed into n-grams using a windowing algorithm, which will be described in greater detail below. Resulting n-grams are used to define a set of features.
Each new aligned sequence of a context is split into n-grams and the distance (e.g., alignment coverage) between the different n-grams of the feature vector is computed. The resulting feature vector holds percentages of alignment coverage for each new context.
This information may be used by the annotator system 145 to train a classifier model annotator 155 using the annotated training data, expressed as feature-based vectors. For target documents 150, new context instances are first transformed to n-gram representation and then fed to the classifier model annotator 155. In some instances, the classifier model annotator 155 allows addition of additional meta-features beyond simple analysis of context. For example, distance between subsequence matches and instances, as well as other factors such as document section and the like. Annotated documents 165 may be generated by the extractor system 145 employing the classifier module annotator 155.
The dynamic programming solution to the longest common subsequence processes described herein may be augmented by the use of a greedy contiguity heuristic. This heuristic ensures that the output of the chosen classifier is close to the most contiguous of all candidates for the longest common subsequence. The heuristic may take into account number of match segments, number of gaps between segments, and variance of segment lengths. Losses due to greediness are stemmed by ensuring the heuristic is only followed if the mean of the length of currently matched segments is >n, thus reducing losses post-cleaning.
Because the heuristic is used as an additional measure on top of the match score in dynamic programming, usage of the heuristic can be controlled at each step to vary the contiguity of the final common subsequence outputted. In viewing the contextual feature extraction process as a whole, the contiguity heuristic, along with the cleaning process and variable application of greediness, ensures that sensible text features are extracted while only increasing the time and space complexities by a constant factor.
Advantageously, features are sensitive to the similarity between specified sequences and new contexts, and the ordering of characters within each specified sequence. Additionally, the magnitude of the distance between feature vectors generated from contexts containing OCR errors and feature vectors generated from an error-free context are preferably as small as possible. The proposed feature set generation method is a realignment/windowing method, specified by executing the instructions of
Next, the method may include a step 1410 of analyzing the annotated documents to determine contextual information for each of the annotated fields, as well as a step 1415 of determining discriminative sequences using the contextual information. In some instances the method may include a step 1420 of generating a proposed rule of a feature set using the discriminative sequences and annotated fields and a step 1425 of providing the proposed rule or the feature set to a document annotator. The proposed rule may be provided to a rule-based extractor generator, whereas the feature set is provided to a feature-based extractor generator. The rule-based extractor generator is configured to create an extractor rule from the proposed rule using, for example, user feedback. The feature-based extractor generator generates a feature-based vector from the feature set using any of the method described in greater detail above.
As mentioned previously, the extractor system may use the features to train a classifier module that is used to classify target documents.
Generally, the method of
Therefore, in some embodiments, the method includes receiving 1605 training documents. As mentioned above, the training documents include annotated words. For example, the training documents may include sales contracts where the effective date, parties, pricing, milestones, and other document features have been annotated.
In some embodiments the context module 115 is configured to determine contextual information surrounding each of the annotated words in the training documents. Using contextual information, the context module 115 can look for similar patterns (e.g., discriminative sequences) in an unannotated document and locate similar document features in the unannotated document.
More specifically, the method may include identifying 1610 a predetermined number of characters preceding and following each annotated word for each of the training documents to determine a context for each of the annotated words. By way of example, the context module 115 may obtain 50 or 100 characters both preceding an annotated word and following the annotated word. For similar annotations, the context module 115 may compare the preceding and following characters for multiple annotations to one another to discover or determine discriminative sequences therein. For example, the context module 115 may determine that the words “begin” and “beginning” always precede a start date annotation. As an aside, the word begin would be a longest common subsequence between the words “begin” and “beginning”. Thus, the system can infer that a date field that is proximate the words “begin” or “beginning” are likely to be start date fields.
As an illustration,
According to some embodiments, the method includes processing each annotation of the training documents to look for discriminative sequences in the training documents. Once the context module 115 builds a knowledge base from the training documents, the context module 115 can automatically annotate an unannotated document, which is hereinafter referred to as a target document. More specifically, the context module 115 may, in some instances, generate an extractor rule for each annotated word in a training document. The extractor rule includes not only the annotated word but also its context, which includes the words or characters that preceded or follow the annotated word.
An extractor rule may also be generated when it is determined that a plurality of similar annotated fields (e.g., such as date fields) include similar or substantially similar characters that precede the date field. Thus, the context module 115 may create an extractor rule when two or more training documents include the same or similar contextual information around the same type of annotated field. In other instances, the context module 115 may utilize the annotated fields and context information for a single training document as the basis for creating extract rules.
Prior to processing a target document and determining automatic annotations, the context module 115 may evaluate the target document to determine various features in the target document such as date fields, text fields, monetary fields, tables, lists, or other high level document fields. These features can be assigned (or confirm) a specific type of annotation by the context module 115 according to further aspects of the method.
Generally, the context module 115 applies the extractor rules created from the training document(s). More specifically, the application of the extractor rules includes performing an alignment between extractor rules created from the training documents with text in the target document. This process includes aligning 1615 of an annotated word and its context with characters in the target document. Advantageously, the method includes aligning each possible annotated word in the training documents, and their associated contexts, with characters in the target document.
The method also includes identifying 1620 common sequences between the target document and training corpus, based upon the alignment. For example, the context module 115 may determine that the target document includes the word “begin” within 100 characters preceding a date field. Thus, the context module 115 can infer that the date field is in fact a start date in a contract.
The method includes assigning 1625 an annotation to a word in the target document when a common sequence between the target document and training corpus is found. That is, the annotation comprises an annotation of an annotated word of the training corpus (e.g., annotated training documents) included in the common sequence.
The method is executed for each annotatable word in the target document until the context module 115 has annotated each unannotated word. In some embodiments, the context module 115 may not examine the document for fields that can be annotated and merely looks for discriminative sequence alignments between the training documents and the target document. When a match is found, the context module 115 can then examine the sections of the target document that match the training documents to locate a potential word or document feature, such as a date that can be annotated with an annotation that corresponds to the annotation of the training documents.
In some embodiments, the context module 115 utilizes an exact matching requirement where an alignment between training document sequences and target document sequences must perfectly align before an annotation can be assigned to a word in the target document. In other embodiments, the context module 115 may utilize a fuzzy matching algorithm, such as the windowing algorithm illustrated in
In some instances, the method includes storing 1630 an annotated word and its context, which includes the characters preceding and following the annotated word, as an extractor rule. Again, an extractor rule may be stored only if a sufficient number of training documents includes the same annotated word and context. For example, if at least three training documents include the same context (e.g., discriminative sequences of characters) as one another, the context module 115 may store the annotated word and context as an extractor rule. In other embodiments, annotated fields and their contexts are stored as extractor rules.
Using the annotated words and their contexts, the method includes generating a plurality of feature vectors, where each feature vector includes an annotated field and its context (e.g., characters before and after the annotated word). Once the extractor rules have been created from the training documents, the method includes obtaining a training document from the end user. Again, the target document includes a document that is similar in content and/or formatting to the training documents except that the target document does not include annotated fields.
The method includes dividing 1715 the target document into n-gram strings. In contrast with methods that require an exact match between the extractor rules and the method of
In some embodiments, the method includes identifying 1720 overlapping sequences of characters between the n-gram strings of the target document and the training documents. For example, an n-gram match between, for example, the words “begin date” as found in three training documents and the words “begin date” found in the target document may be found. Such a sequence may be found in a target document when an optical character recognition (OCR) error is introduced into a target document. Thus, the context module 115 would infer a match between ‘beg’, ‘n’, and ‘date’ when sequences of the training and target documents are aligned. The context module 115 would ignore the “1” which is present in the target document. This substantial alignment between the begin date” and “begin date” would be sufficient to justify asserting that a match exists therebetween.
Finally, the method includes assigning 1725 an annotation to each word in the target document when the overlapping sequences between the n-gram strings of the target document and the training documents meet or exceed a threshold. For example, the context module 115 may specify that at least 90% of a feature-based vector (e.g., n-gram model) should correspond to the n-gram text segments of the target document to justify assigning an annotation to a particular text field in the target document. The method may optionally include storing 1730 an identified overlapping sequence as a feature-based vector.
In other embodiments, the method may include calculating 1815 an averaged location for each annotated word, where the averaged location defines an averaged placement of an annotated word within a training document. Thus, the context module 115 would determine a document length and measure the placement of the annotated word from begging and the end of the document, or the beginning and end of a page of the document, or any combinations or variations thereof. This averaged location may include an average of all similar annotations in a plurality of documents. For example, a contract end date annotation is found to be an average of five inches from the beginning of training documents and an average of nine inches from the bottom of the first page of each of the training documents.
In other embodiments, the distance value calculated for an annotation may include not only a relative location of the word in the document, but also a distance between the word and other document features as described above. This value may be expressed as a single numerical value. In some instances, the context module 115 may weight each of the distance values so as to attribute more value or importance to a particular distance value. For example, distance from the title (Dt) may be weighted more highly than distance from nearest date value (Dv), but each of these distance values forms a part of the calculation. Ostensibly, the higher the calculated value, the more likely it is that the annotation of the training documents and the potential annotation of the target document are a match. A rudimentary exemplary calculation would include (Dt*0.7+Dv*0.3)/2. The coefficients assigned to the individual distance values can be assigned by the context module 115 and represent the relative importance of each distance value in the overall calculation.
Once the training documents have been processed, the method includes for each word of a target document, determining 1820 a distance between each word and one or more document features. In some instances, the document features include the same or similar document features as those present in the training documents. Also, the method includes calculating 1825 an averaged location for each word. Again, the averaged location defines an averaged placement of an annotated word within a target document.
Next, the method includes identifying 1830 matches between the distance and averaged location of words of the target document and the distances and averaged location of at least one of the annotated words of the training documents. When a match is found, the method includes assigning 1835 an annotation to a word of the target document that matches the at least one of the annotated words of the training documents.
In one embodiment, the present technology provides a method for not only determining context in a document but also for extracting meaning relative to statements in a document. For example, the present technology can be used to extract from a document meaning surrounding a particular topic or keyword. An example topic would be sub-contracting. In this example, a contractual document can be processed to determine if there are provisions relating to sub-contracting by a contractor or party to an agreement. Sentences that mention sub-contracting can be analyzed to determine meaning so as to infer if sub-contracting is allowed, not allowed, or conditionally allowed. These possibilities are referred to as categories or outcomes.
The present technology can leverage training documents that comprise words which were annotated with categories of meaning. Again, the annotations and meaning can relate to the position of words in the document relative to other words or features, the context of words/characters that precede or succeeded an annotated word, as well as other features in a document that would be indicative of meaning for a particular word or topic (e.g., subject matter or domain) associated with that word.
The present technology can initially review a target document for words or phrases (or other sets of characters) that are associated with sub-contracting. The training corpus is used to automatically classify words by determining the meaning of the located words. Again, this includes, in one embodiment, comparing the context of the word to a context of an annotated word one or more training documents. If a match is found there between, the word in the target document can be assigned a classification or category. For example, if the word sub-contractor is found in a target document, the context for that word can be determined by looking at the word in the context of the document. The present technology can evaluate the sentence in which the word belongs, as a whole and determine meaning that can be attributed to the word. Thus, by reviewing the sentence as a whole, or other words in the sentence, it can be determined if sub-contracting is allowed, not allowed, or conditionally allowed. By way of example, consider the sentence “Subject to the provision of Section 6.2, sub-contracts are permissible under this agreement.” The present technology locates the presence of the word “sub-contracts” and then locates other words within the sentence such as “permissible” and “subject to”, via comparison to a training corpus. From consulting a training corpus, the present technology extracts meaning for this sentence and classifies this sentence and the document as providing conditional provisions for sub-contracting.
The components shown in
Mass storage device 2030, which may be implemented with a magnetic disk drive or an optical disk drive, is a non-volatile storage device for storing data and instructions for use by processor 2010. Mass storage device 2030 can store the system software for implementing embodiments of the present technology for purposes of loading that software into main memory 2020.
Portable storage device 2040 operates in conjunction with a portable non-volatile storage medium, such as a floppy disk, compact disk or digital video disc, to input and output data and code to and from the computing system 2000 of
Input devices 2060 provide a portion of a user interface. Input devices 2060 may include an alphanumeric keypad, such as a keyboard, for inputting alphanumeric and other information, or a pointing device, such as a mouse, a trackball, stylus, or cursor direction keys. Additionally, the system 2000 as shown in
Display system 2070 may include a liquid crystal display (LCD) or other suitable display device. Display system 2070 receives textual and graphical information, and processes the information for output to the display device.
Peripherals 2080 may include any type of computer support device to add additional functionality to the computing system. Peripherals 2080 may include a modem or a router.
The components contained in the computing system 2000 of
Some of the above-described functions may be composed of instructions that are stored on storage media (e.g., computer-readable medium). The instructions may be retrieved and executed by the processor. Some examples of storage media are memory devices, tapes, disks, and the like. The instructions are operational when executed by the processor to direct the processor to operate in accord with the technology. Those skilled in the art are familiar with instructions, processor(s), and storage media.
It is noteworthy that any hardware platform suitable for performing the processing described herein is suitable for use with the technology. The terms “computer-readable storage medium” and “computer-readable storage media” as used herein refer to any medium or media that participate in providing instructions to a CPU for execution. Such media can take many forms, including, but not limited to, non-volatile media, volatile media and transmission media. Non-volatile media include, for example, optical or magnetic disks, such as a fixed disk. Volatile media include dynamic memory, such as system RAM. Transmission media include coaxial cables, copper wire and fiber optics, among others, including the wires that comprise one embodiment of a bus. Transmission media can also take the form of acoustic or light waves, such as those generated during radio frequency (RF) and infrared (IR) data communications. Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, a hard disk, magnetic tape, any other magnetic medium, a CD-ROM disk, digital video disk (DVD), any other optical medium, any other physical medium with patterns of marks or holes, a RAM, a PROM, an EPROM, an EEPROM, a FLASHEPROM, any other memory chip or data exchange adapter, a carrier wave, or any other medium from which a computer can read.
Various forms of computer-readable media may be involved in carrying one or more sequences of one or more instructions to a CPU for execution. A bus carries the data to system RAM, from which a CPU retrieves and executes the instructions. The instructions received by system RAM can optionally be stored on a fixed disk either before or after execution by a CPU.
Computer program code for carrying out operations for aspects of the present technology may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present technology has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. Exemplary embodiments were chosen and described in order to best explain the principles of the present technology and its practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.
Aspects of the present technology are described above with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present technology. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
While various embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. The descriptions are not intended to limit the scope of the technology to the particular forms set forth herein. Thus, the breadth and scope of a preferred embodiment should not be limited by any of the above-described exemplary embodiments. It should be understood that the above description is illustrative and not restrictive. To the contrary, the present descriptions are intended to cover such alternatives, modifications, and equivalents as may be included within the spirit and scope of the technology as defined by the appended claims and otherwise appreciated by one of ordinary skill in the art. The scope of the technology should, therefore, be determined not with reference to the above description, but instead should be determined with reference to the appended claims along with their full scope of equivalents.
This application claims the priority benefit of U.S. Provisional Application Ser. No. 61/905,764, filed on Nov. 18, 2013, titled “Information Extraction and Annotation Systems and Methods for Documents,” which is hereby incorporated herein by reference, including all references cited therein. This application is also a continuation-in-part application and claims priority benefit of U.S. Nonprovisional application Ser. No. 14/452,484, filed on Aug. 5, 2014, titled “Information Extraction and Annotation Systems and Methods for Documents,” which is a continuation application of U.S. Nonprovisional application Ser. No. 13/948,069, filed on Jul. 22, 2013, now U.S. Pat. No. 8,856,642, issued on Oct. 7, 2014, titled “Information Extraction and Annotation Systems and Methods for Documents,” all of which are hereby incorporated herein by reference, including all references cited therein.
Number | Date | Country | |
---|---|---|---|
61905764 | Nov 2013 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 13948069 | Jul 2013 | US |
Child | 14452484 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 14452484 | Aug 2014 | US |
Child | 14543821 | US |