DETAILED ACTION
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Claim Rejections - 35 USC § 101
35 U.S.C. 101 reads as follows:
Whoever invents or discovers any new and useful process, machine, manufacture, or composition of matter, or any new and useful improvement thereof, may obtain a patent therefor, subject to the conditions and requirements of this title.
Claims 1-20 are rejected under 35 U.S.C. 101 because the claimed invention is directed to generating answers based on input questions without significantly more.
The limitation in Independent Claims 1, 8, 12 and 16 of analyzing the input questions to generate information and using that information to answer the question, as drafted, are processes that, under their broadest reasonable interpretation, covers steps that could reasonably be performed in the mind, including with the aid of pen and paper, but for the recitation of generic computer components. That is, the limitations of “generating… commentary information of the source code text by analyzing the source code text based on a source code database” and “performing… natural language processing on the request data based on the commentary information of the source code text to generate answer data corresponding to the request data” in Claims 1, 8, 12 and 16, as drafted, are processes that, under their broadest reasonable interpretation, recite the abstract idea of mental processes. These limitations encompass a human mind carrying out these functions through observation, evaluation judgment and/or opinion, or even with the aid of pen and paper. Thus, these limitations recite and fall within the “Mental Processes” grouping of abstract ideas.
This judicial exception is not integrated into a practical application. Claims 1, 8, 12 and 16 recite the following additional elements “receiving… request data including source code text” and “provide the answer data…,” these limitations do nothing more than add insignificant extra solution activity to the judicial exception, such as data gathering and outputting the results of the abstract idea, see MPEP 2106.05(g).
Further, with regard to the “server” and “terminal” elements of Claim 1; the “server” and “chatbot” elements of Claim 8; the “communication module”, “memory” and “processor” elements of Claim 12; and the “input/output module”, “memory” and “processor” elements of Claim 16; these elements are recited at a high-level of generality such that it amounts no more than mere instructions to apply the exception using a generic computer component, see MPEP 2106.05(f). Accordingly, the additional elements do not integrate the abstract idea into a practical application because they do not impose any meaningful limits on practicing the abstract idea.
With regard to the individual dependent claims:
Claims 2, 9, 13 and 17 recite, “a source code database storing text of materials related to source codes of one or more programming languages and text analysis information on the text.”
Claims 3, 9, 13 and 17 recite, “storing the text analysis information generated by the server in the source code database.”
Claims 5, 11, 15 and 19 recite, “searching… whether source code commentary information corresponding to the source code text exists in the source code database.”
These limitations of Claims 2-3, 5, 9, 11, 13, 15, 17 and 19 are recited at a high-level of generality such that they amount to no more than mere instructions to apply the exception using generic computer components, see MPEP 2106.05(f). Accordingly, these additional elements do not integrate the abstract idea into a practical application because they do not impose any meaningful limits on practicing the abstract idea.
Further, these limitations of Claims 2-3, 5, 9, 11, 13, 15, 17 and 19 amount to no more than mere instructions to apply the exception using well-understood, routine and conventional computer components and functions, recited at a high level of generality, i.e. receiving/transmitting data over a network and storing/retrieving information in memory. As such, these additional elements do not amount to an inventive concept and are not by themselves sufficient to transform the judicial exception into a patent eligible invention, see MPEP 2106.05(d).
Claims 3, 9, 13 and 17 recite, “extracting… text keywords by performing morphological analysis for the text stored in the source code database; and analyzing… a relationship between the text keywords by performing sentence structure analysis for the text stored in the source code database and generating… the text analysis information including the text keywords and a relationship between the text keywords.”
Claims 4, 10, 14 and 18 recite, “setting… source code keywords corresponding to the text keywords based on variable information, class information, and function information used in one or more programming languages; and generating… the source code commentary information including names of source codes corresponding to the source code keywords, abbreviated names of the source codes, and a relationship between translation of the source codes and the source code keywords.”
Claims 5, 11, 15 and 19 further recite, “generating… the commentary information for the source code text including source code commentary text, based on source code commentary information corresponding to the source code text.”
Claim 7 recites, “generating additional answer data corresponding to the additional request data.”
These limitations of Claims 3-5, 7, 9-11, 13-15 and 17-19, as drafted, are processes that, under their broadest reasonable interpretation, recite the abstract idea of a mental process. These limitations encompass a human mind carrying out this function through observation, evaluation judgment and/or opinion, or even with the aid of pen and paper. Thus, these limitations recite and fall within the “Mental Processes” grouping of abstract ideas. Accordingly, these additional elements do not integrate the abstract idea into a practical application because they do not impose any meaningful limits on practicing the abstract idea.
Claims 4, 10, 14 and 18 further recite, “the text analysis information further includes source code commentary information.”
Claim 6 recites, “the source code commentary text is formed in the same language as the text included in the request data.”
These limitations of Claims 4, 6, 10, 14 and 18 do nothing more than generally link the judicial exception to a particular technological environment, see MPEP 2106.05(h). Accordingly, these additional elements do not integrate the abstract idea into a practical application because they do not impose any meaningful limits on practicing the abstract idea.
Claim 7 further recites, “receiving, by the server, additional request data for text keywords included in the source code commentary text from the terminal… and providing the additional answer data to the terminal.”
These limitations of Claim 7 do nothing more than add insignificant extra solution activity to the judicial exception, such as data gathering, transmitting and outputting the results of the abstract idea, see MPEP 2106.05(g). Accordingly, these additional elements do not integrate the abstract idea into a practical application because it does not impose any meaningful limits on practicing the abstract idea.
Further, these limitations of Claim 7 amount to no more than mere instructions to apply the exception using well-understood, routine and conventional computer components and functions, recited at a high level of generality, i.e. receiving/transmitting data over a network and storing/retrieving information in memory. As such, these additional elements do not amount to an inventive concept and are not by themselves sufficient to transform the judicial exception into a patent eligible invention, see MPEP 2106.05(d).
Claim Interpretation
The following is a quotation of 35 U.S.C. 112(f):
(f) Element in Claim for a Combination. – An element in a claim for a combination may be expressed as a means or step for performing a specified function without the recital of structure, material, or acts in support thereof, and such claim shall be construed to cover the corresponding structure, material, or acts described in the specification and equivalents thereof.
The claims in this application are given their broadest reasonable interpretation using the plain meaning of the claim language in light of the specification as it would be understood by one of ordinary skill in the art. The broadest reasonable interpretation of a claim element (also commonly referred to as a claim limitation) is limited by the description in the specification when 35 U.S.C. 112(f) is invoked.
As explained in MPEP § 2181, subsection I, claim limitations that meet the following three-prong test will be interpreted under 35 U.S.C. 112(f):
(A) the claim limitation uses the term “means” or “step” or a term used as a substitute for “means” that is a generic placeholder (also called a nonce term or a non-structural term having no specific structural meaning) for performing the claimed function;
(B) the term “means” or “step” or the generic placeholder is modified by functional language, typically, but not always linked by the transition word “for” (e.g., “means for”) or another linking word or phrase, such as “configured to” or “so that”; and
(C) the term “means” or “step” or the generic placeholder is not modified by sufficient structure, material, or acts for performing the claimed function.
Use of the word “means” (or “step”) in a claim with functional language creates a rebuttable presumption that the claim limitation is to be treated in accordance with 35 U.S.C. 112(f). The presumption that the claim limitation is interpreted under 35 U.S.C. 112(f) is rebutted when the claim limitation recites sufficient structure, material, or acts to entirely perform the recited function.
Absence of the word “means” (or “step”) in a claim creates a rebuttable presumption that the claim limitation is not to be treated in accordance with 35 U.S.C. 112(f). The presumption that the claim limitation is not interpreted under 35 U.S.C. 112(f) is rebutted when the claim limitation recites function without reciting sufficient structure, material or acts to entirely perform the recited function.
Claim limitations in this application that use the word “means” (or “step”) are being interpreted under 35 U.S.C. 112(f) except as otherwise indicated in an Office action. Conversely, claim limitations in this application that do not use the word “means” (or “step”) are not being interpreted under 35 U.S.C. 112(f) except as otherwise indicated in an Office action.
This application includes one or more claim limitations in Claims 12-15 that do not use the word “means,” but are nonetheless being interpreted under 35 U.S.C. 112(f) because the claim limitation(s) uses a generic placeholder that is coupled with functional language without reciting sufficient structure to perform the recited function and the generic placeholder is not preceded by a structural modifier. Such claim limitations are:
“a communication module configured to transmit and receive” in Claim 12.
Because these claim limitations are being interpreted under 35 U.S.C. 112(f) Claims 12-15 are being interpreted to cover the corresponding structure described in the specification as performing the claimed function, and equivalents thereof.
The following paragraphs disclose the corresponding structure associated with the identified limitations:
Paragraph [0030] discloses “a communication module”.
If applicant does not intend to have this/these limitation(s) interpreted under 35 U.S.C. 112(f) applicant may: (1) amend the claim limitation(s) to avoid it/them being interpreted under 35 U.S.C. 112(f) (e.g., by reciting sufficient structure to perform the claimed function); or (2) present a sufficient showing that the claim limitation(s) recite(s) sufficient structure to perform the claimed function so as to avoid it/them being interpreted under 35 U.S.C. 112(f).
Claim Rejections - 35 USC § 102
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
The following is a quotation of the appropriate paragraphs of 35 U.S.C. 102 that form the basis for the rejections under this section made in this Office action:
A person shall be entitled to a patent unless –
(a)(1) the claimed invention was patented, described in a printed publication, or in public use, on sale, or otherwise available to the public before the effective filing date of the claimed invention.
Claims 1-2, 12, 16 and 20 are rejected under 35 U.S.C. 102(a)(1) as being anticipated by Allen et al. (US PGPUB 2016/0283360; hereinafter “Allen”).
Claim 1:
Allen teaches a method of providing a question-answer service including source code commentary through a communication connection between a terminal and a server, the method comprising:
receiving, by the server, request data including source code text from the terminal ([0024] “Content users may access QA system 100 via a network connection or an Internet connection to the network 102, and may input questions to QA system 100,” wherein Fig. 1 shows a “Personal Computer 150”, i.e. the “terminal”, connected to the “QA System 100”, i.e. the “server”. [0074] “FIG. 6 processing commences at 600 and shows the steps taken by a process that performs a routine that processes a formulated question using the QA system. At step 605, the process submits the formulated question to the QA System where it is processed by QA system pipeline 310.” [0075] “As shown in FIG. 5, the submitted questions are formulated in a natural language format, such as ‘is the term ‘patient_record’ a domain specific term?’ and the like depending on the aspect of the source code file that is being analyzed,” wherein the request includes “source code text”, i.e. “patient_record”);
generating, by the server, commentary information of the source code text by analyzing the source code text based on a source code database ([0075] “At step 615, the QA system pipeline commences and first performs a question and topic analysis. Next, at step 620, the QA system pipeline performs a question decomposition process. At step 625, the QA system pipeline next performs a primary search for the submitted question using knowledge base 106. At step 630, the QA system pipeline then generates candidate answers to the submitted question,” wherein the “knowledge base” is the “source code database” and wherein the “candidate answers” are the “commentary information”.); and
performing, by the server, natural language processing on the request data based on the commentary information of the source code text to generate answer data corresponding to the request data and provide the answer data to the terminal ([0035] “FIGS. 3-6 depict an approach that uses a question answering (QA) system to analyze software code based on learned programming construct patterns and natural language processing (NLP) similarities to compliance regulations.” [0075] “At step 640, the QA system pipeline retrieves supporting evidence from the knowledge base (corpus). At step 645, the QA system pipeline performs a deep evidence scoring process using the knowledge base. At step 650, the QA system pipeline performs a final merging and ranking resulting in one or more candidate answers as well as a confidence value pertaining to the various candidate answers.” [0077] “At step 665, the process receives the response from the QA system. The response includes answers, confidence values, and supporting evidence as well as the cited regulations and the code sections, constructs, or relationships to which the regulations apply.”).
Claim 2:
Allen teaches the method of claim 1, wherein
the server includes a source code database storing text of materials related to source codes of one or more programming languages and text analysis information on the text (Fig. 1: Knowledge Manager (QA System) 100, i.e. “server”, including Knowledge Base 106 storing Electronic Documents 107 and Semantic Data 108. [0023] “QA system 100 may receive input from the network 102, a corpus of electronic documents 107 or other data, semantic data 108, and other possible sources of input… some or all of the inputs to QA system 100… stored in knowledge base 106.” [0024] “The document 107 may include any file, text, article, or source of data for use in QA system 100.” [0025] “Semantic data 108 is content based on the relation between signifiers, such as words, phrases, signs, and symbols, and what they stand for, their denotation, or connotation. In other words, semantic data 108 is content that interprets an expression, such as by using Natural Language Processing (NLP),” wherein the “Semantic data 108” comprises “text analysis information”. [0041] “Predefined process 350 ingests archive 340 in order to build a domain-specific base of source code knowledge (see FIG. 4 and corresponding text for processing details). After ingestion, the base of knowledge derived from the domain-specific source code are depicted as data store 360 which is part of the QA system's corpus (knowledge base 106),” wherein the text analysis information generated in Fig. 4 is stored within “Knowledge Base 106”, i.e. as part of the “Semantic Data 108”.).
Claim 12:
With regard to Claim 12, this claim is equivalent in scope to Claim 1 rejected above, merely having a different independent claim type, and as such Claim 12 is rejected under the same grounds and for the same reasons as discussed above with regard to Claim 1.
With further regard to Claim 12, the claim recites additional elements not specifically addressed in the rejection of Claim 1. The Allen reference also anticipates these additional elements of Claim 12, for example, wherein the system comprises:
a communication module configured to transmit and receive information to and from the terminal ([0022] “Computer network 102 may include other computing devices in communication with each other and with other devices or components via one or more wired and/or wireless data communication links, where each communication link may comprise one or more of wires, routers, switches, transmitters, receivers, or the like.” [0023] “QA system 100 may receive input from the network 102” [024] “Content users may access QA system 100 via a network connection or an Internet connection to the network 102, and may input questions to QA system 100, which QA system 100 answers according to the content in the corpus of data.”);
a memory storing a source code question-answer service program ([0016] “the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.”); and
a processor configured to execute the source code question-answer service program stored in the memory, wherein the processor is further configured to execute the source code question-answer service program ([0019] “These computer readable 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.”).
Claim 16:
With regard to Claim 16, this claim is equivalent in scope to Claim 1 rejected above, merely having a different independent claim type, and as such Claim 16 is rejected under the same grounds and for the same reasons as discussed above with regard to Claim 1.
With further regard to Claim 16, the claim recites additional elements not specifically addressed in the rejection of Claim 1. The Allen reference also anticipates these additional elements of Claim 16, for example, wherein the device comprises:
an input/output module ([0022] “Computer network 102 may include other computing devices in communication with each other and with other devices or components via one or more wired and/or wireless data communication links, where each communication link may comprise one or more of wires, routers, switches, transmitters, receivers, or the like.” [0023] “QA system 100 may receive input from the network 102, a corpus of electronic documents 107 or other data, semantic data 108, and other possible sources of input. In one embodiment, some or all of the inputs to QA system 100 route through the network 102 and stored in knowledge base 106. The various computing devices on the network 102 may include access points for content creators and content users.” [0024] “Content users may access QA system 100 via a network connection or an Internet connection to the network 102, and may input questions to QA system 100, which QA system 100 answers according to the content in the corpus of data.”);
a memory storing a source code commentary service program ([0016] “the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.”); and
a processor configured to execute the source code commentary service program stored in the memory, wherein the processor is further configured to execute the source code commentary service program ([0019] “These computer readable 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.”).
Claim 20:
Allen teaches ([0014] “The present invention may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.”).
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claims 3-5, 13-15 and 17-19 are rejected under 35 U.S.C. 103 as being unpatentable over Allen as applied to Claims 2, 12 and 16 above, and further in view of Dubey et al. (US PGPUB 2018/0173698; hereinafter “Dubey”).
Claim 3:
Allen teaches the method of claim 2, further comprising:
storing the text analysis information generated by the server in the source code database, wherein the storing of the text analysis information includes ([0023] “QA system 100 may receive input from the network 102, a corpus of electronic documents 107 or other data, semantic data 108, and other possible sources of input… some or all of the inputs to QA system 100… stored in knowledge base 106.”):
analyzing, by the server, a relationship between the text keywords by performing sentence structure analysis for the text stored in the source code database and generating, by the server, the text analysis information including the text keywords and a relationship between the text keywords ([0063] “At step 435, the process selects the first program construct in the selected code section (e.g., variable, class, etc.). The selected program construct is stored in memory area 440. At step 445, the process identifies the selected construct as either being domain-specific or general purpose with the identification being performed in a similar fashion as the identification of the code section itself (e.g., utilizing keywords, comparing such constructs to previously ingested constructs from other source code files, etc.).” [0064] “At step 455, the process maps relationships between the selected code section and other code sections. For example, the selected code section may call or reference another code section or the selected code section may be a function or procedure that is called or referenced by other code sections. Such relationship data between code sections is stored in memory area 460.”).
With further regard to Claim 3, Allen does not teach the following, however, Dubey teaches:
extracting, by the server, text keywords by performing morphological analysis for the text stored in the source code database ([0180] “the knowledge-base modification module 642 is configured to add, for individual words mapped to at least one class of the model, at least one of one or more synonyms of the respective word or one or more lexical or morphological forms of the respective word to a knowledge base 602 dictionary 606 associated with the model. A morphological form of a term can include, e.g., a stem of a term plus any endings (suffixes) of the stem”)
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified the method as disclosed by Allen with the morphological analysis as taught by Dubey in order to “to include enhancements that can be made to the ontology… and corresponding dictionary” (Dubey [0181]).
Claim 4:
Allen in view of Dubey teaches the method of Claim 3. Allen further teaches wherein
the text analysis information further includes source code commentary information ([0051] “3) Based on classification determine the object types and whether any of them are in the medical domain by lexical classification or manual annotation, or NLP parsing of comments.”), and
the storing of the text analysis information includes:
setting, by the server, source code keywords corresponding to the text keywords based on variable information, class information, and function information used in one or more programming languages ([0062] “In one embodiment, the selected code section is searched for keywords pertaining to the domain. If any such keywords are found, then the block is identified as domain-specific, otherwise the block is identified as a general purpose code section. In a further embodiment, non-program language terms (e.g., variables, function names, etc.) are compared to such non-program language terms found in previously ingested source code files.”); and
generating, by the server, the source code commentary information including names of source codes corresponding to the source code keywords, abbreviated names of the source codes ([0044] “0044] At step 425, the process classifies the selected block based on the operation(s) performed by the block. For example, the selected block could be a conditional assignment, a manipulation routine, a transformer function, a routing function, and the like.” [0045] “1) Use prior art to classify all blocks/methods.” [0046] “2) Blocks are classified:” [0051] “[0051] 3) Based on classification determine the object types.” [0063] “At step 435, the process selects the first program construct in the selected code section (e.g., variable, class, etc.). The selected program construct is stored in memory area 440. At step 445, the process identifies the selected construct as either being domain-specific or general purpose with the identification being performed in a similar fashion as the identification of the code section itself (e.g., utilizing keywords, comparing such constructs to previously ingested constructs from other source code files, etc.).”), and
a relationship between translation of the source codes and the source code keywords ([0052] “4) Determine the object types in the code and their relationships (affects, conditionally determines, routes to)” [0053] “5) Match the entity relationships to corpora for the domain.” [0064] “At step 455, the process maps relationships between the selected code section and other code sections. For example, the selected code section may call or reference another code section or the selected code section may be a function or procedure that is called or referenced by other code sections. Such relationship data between code sections is stored in memory area 460.”).
Claim 5:
Allen in view of Dubey teaches the method of Claim 4. Allen further teaches wherein the generating of the commentary information includes:
searching, by the server, whether source code commentary information corresponding to the source code text exists in the source code database ([0075] “QA system pipeline includes a number of processes that break the submitted question down in order to search the QA system's knowledge base 106 for an answer to the submitted question… Next, at step 620, the QA system pipeline performs a question decomposition process. At step 625, the QA system pipeline next performs a primary search for the submitted question using knowledge base 106. At step 630, the QA system pipeline then generates candidate answers to the submitted question.”); and
generating, by the server, the commentary information for the source code text including source code commentary text, based on source code commentary information corresponding to the source code text [0075] “At step 640, the QA system pipeline retrieves supporting evidence from the knowledge base (corpus). At step 645, the QA system pipeline performs a deep evidence scoring process using the knowledge base. At step 650, the QA system pipeline performs a final merging and ranking resulting in one or more candidate answers as well as a confidence value pertaining to the various candidate answers.” [0077] “At step 665, the process receives the response from the QA system. The response includes answers, confidence values, and supporting evidence as well as the cited regulations and the code sections, constructs, or relationships to which the regulations apply.”).
Claims 13-15:
With regard to Claims 13-15, these claims are equivalent in scope to Claims 2-5 rejected above, merely having a different independent claim type, and as such Claims 13-15 are rejected under the same grounds and for the same reasons as discussed above with regard to Claims 2-5. The Office notes that Claim 13 is equivalent in scope to a combination of Claims 2-3 rejected above.
Claims 17-19:
With regard to Claims 17-19, these claims are equivalent in scope to Claims 2-5 rejected above, merely having a different independent claim type, and as such Claims 17-19 are rejected under the same grounds and for the same reasons as discussed above with regard to Claims 2-5. The Office notes that Claim 17 is equivalent in scope to a combination of Claims 2-3 rejected above.
Claims 6-7 are rejected under 35 U.S.C. 103 as being unpatentable over Allen in view of Dubey as applied to Claim 5 above, and further in view of Gunaselara et al. (US PGPUB 2021/0365500; hereinafter “Gunaselara”).
Claim 6:
Allen in view of Dubey teaches all the limitations of claim 5 as described above. Allen in view of Dubey does not teach the following, however, Gunaselara teaches:
wherein the source code commentary text is formed in the same language as the text included in the request data ([0043] “a person who has a profile associated with a particular programming language such as JavaScript may have that personalized context integrated into the querying and sorting of results for a query.” [0114] “the method can include generating a list of context keywords which functions to mine relevant contextual keywords that may be used within collection of media content. Generating the list of context keywords can include identifying high frequency terms (or related terms) in (high frequency. For example, in a programming question-answer implementation, various programming languages or system names may be detected as context indicators. The list of context keywords may alternatively be extracted from category metadata, labels, tags, and/or other classifying data identified in source content.”).
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified the method as disclosed by Allen in view of Dubey with the language consideration as taught by Gunaselara as such “The results will automatically show results prioritized by their relevance to a modeled understanding of the user” (Gunaselara [0043]).
Claim 7:
Allen in view of Dubey and Gunaselara teaches the method of Claim 6. Allen teaches further comprising:
receiving, by the server, additional request data for text keywords included in the source code commentary text from the terminal, generating additional answer data corresponding to the additional request data, and providing the additional answer data to the terminal ([0026] “The IBM Watson™ knowledge manager system may receive an input question which it then parses to extract the major features of the question, that in turn are then used to formulate queries that are applied to the corpus of data. Based on the application of the queries to the corpus of data, a set of hypotheses, or candidate answers to the input question, are generated by looking across the corpus of data for portions of the corpus of data that have some potential for containing a valuable response to the input question,” wherein the formulated “queries” comprise the “additional request data”.).
Claim 8 is rejected under 35 U.S.C. 103 as being unpatentable over Allen in view of Szczepanik et al. (US PGPUB 2022/0091957; hereinafter “Szczepanik”).
Claim 8:
Allen teaches a method of providing source code question-answer service through a communication connection between a terminal and a server, the method comprising:
receiving, by the server, request data including source code text from the terminal ([0024] “Content users may access QA system 100 via a network connection or an Internet connection to the network 102, and may input questions to QA system 100,” wherein Fig. 1 shows a “Personal Computer 150”, i.e. the “terminal”, connected to the “QA System 100”, i.e. the “server”. [0074] “FIG. 6 processing commences at 600 and shows the steps taken by a process that performs a routine that processes a formulated question using the QA system. At step 605, the process submits the formulated question to the QA System where it is processed by QA system pipeline 310.” [0075] “As shown in FIG. 5, the submitted questions are formulated in a natural language format, such as ‘is the term ‘patient_record’ a domain specific term?’ and the like depending on the aspect of the source code file that is being analyzed,” wherein the request includes “source code text”, i.e. “patient_record”);
generating, by the server, commentary information of the source code text by analyzing the source code text based on a source code database ([0075] “At step 615, the QA system pipeline commences and first performs a question and topic analysis. Next, at step 620, the QA system pipeline performs a question decomposition process. At step 625, the QA system pipeline next performs a primary search for the submitted question using knowledge base 106. At step 630, the QA system pipeline then generates candidate answers to the submitted question,” wherein the “knowledge base” is the “source code database” and wherein the “candidate answers” are the “commentary information”.); and
performing, by the server, natural language processing on the request data based on the commentary information of the source code text to generate answer data corresponding to the request data and provide the answer data to the terminal ([0035] “FIGS. 3-6 depict an approach that uses a question answering (QA) system to analyze software code based on learned programming construct patterns and natural language processing (NLP) similarities to compliance regulations.” [0075] “At step 640, the QA system pipeline retrieves supporting evidence from the knowledge base (corpus). At step 645, the QA system pipeline performs a deep evidence scoring process using the knowledge base. At step 650, the QA system pipeline performs a final merging and ranking resulting in one or more candidate answers as well as a confidence value pertaining to the various candidate answers.” [0077] “At step 665, the process receives the response from the QA system. The response includes answers, confidence values, and supporting evidence as well as the cited regulations and the code sections, constructs, or relationships to which the regulations apply.”).
With further regard to Claim 8, Allen does not teach the following, however, Szczepanik teaches:
providing source code question-answer service by using a chatbot, comprising: receiving request data by using the chatbot; and provide the answer by using the chatbot ([0009] “Embodiments of the present invention can provide a chatbot to automatically review source code of a software product to identify information that is relevant to formulating an answer to a received query.” [0023] “chatbot program 200 automatically determines and provides a response to a query from a user, associated with a software product.”).
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified the method as disclosed by Allen with the chatbot implementation as taught by Szczepanik in order “to reduce system cost and increase system speed and throughput” (Szczepanik [0009]).
Claims 9-11 are rejected under 35 U.S.C. 103 as being unpatentable over Allen in view of Szczepanik as applied to Claim 8 above, and further in view of Dubey.
Claim 9:
Allen in view of Szczepanik teaches the method of Claim 8. Allen further teaches wherein
the server includes a source code database storing text of materials related to source codes of one or more programming languages and text analysis information on the text (Fig. 1: Knowledge Manager (QA System) 100, i.e. “server”, including Knowledge Base 106 storing Electronic Documents 107 and Semantic Data 108. [0023] “QA system 100 may receive input from the network 102, a corpus of electronic documents 107 or other data, semantic data 108, and other possible sources of input… some or all of the inputs to QA system 100… stored in knowledge base 106.” [0024] “The document 107 may include any file, text, article, or source of data for use in QA system 100.” [0025] “Semantic data 108 is content based on the relation between signifiers, such as words, phrases, signs, and symbols, and what they stand for, their denotation, or connotation. In other words, semantic data 108 is content that interprets an expression, such as by using Natural Language Processing (NLP),” wherein the “Semantic data 108” comprises “text analysis information”. [0041] “Predefined process 350 ingests archive 340 in order to build a domain-specific base of source code knowledge (see FIG. 4 and corresponding text for processing details). After ingestion, the base of knowledge derived from the domain-specific source code are depicted as data store 360 which is part of the QA system's corpus (knowledge base 106),” wherein the text analysis information generated in Fig. 4 is stored within “Knowledge Base 106”, i.e. as part of the “Semantic Data 108”.);
the method further comprises storing the text analysis information generated by the server in the source code database ([0023] “QA system 100 may receive input from the network 102, a corpus of electronic documents 107 or other data, semantic data 108, and other possible sources of input… some or all of the inputs to QA system 100… stored in knowledge base 106.”), and
wherein the storing of the text analysis information includes:
analyzing, by the server, a relationship between the text keywords by performing sentence structure analysis for the text stored in the source code database and generating, by the server, the text analysis information including the text keywords and a relationship between the text keywords ([0063] “At step 435, the process selects the first program construct in the selected code section (e.g., variable, class, etc.). The selected program construct is stored in memory area 440. At step 445, the process identifies the selected construct as either being domain-specific or general purpose with the identification being performed in a similar fashion as the identification of the code section itself (e.g., utilizing keywords, comparing such constructs to previously ingested constructs from other source code files, etc.).” [0064] “At step 455, the process maps relationships between the selected code section and other code sections. For example, the selected code section may call or reference another code section or the selected code section may be a function or procedure that is called or referenced by other code sections. Such relationship data between code sections is stored in memory area 460.”).
With further regard to Claim 9, Allen in view of Szczepanik does not teach the following, however, Dubey teaches:
extracting, by the server, text keywords by performing morphological analysis for the text stored in the source code database ([0180] “the knowledge-base modification module 642 is configured to add, for individual words mapped to at least one class of the model, at least one of one or more synonyms of the respective word or one or more lexical or morphological forms of the respective word to a knowledge base 602 dictionary 606 associated with the model. A morphological form of a term can include, e.g., a stem of a term plus any endings (suffixes) of the stem”)
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified the method as disclosed by Allen in view of Szczepanik with the morphological analysis as taught by Dubey in order to “to include enhancements that can be made to the ontology… and corresponding dictionary” (Dubey [0181]).
Claim 10:
Allen in view of Szczepanik and Dubey teaches the method of Claim 9. Allen further teaches wherein
the text analysis information further includes source code commentary information ([0051] “3) Based on classification determine the object types and whether any of them are in the medical domain by lexical classification or manual annotation, or NLP parsing of comments.”), and
the storing of the text analysis information includes:
setting, by the server, source code keywords corresponding to the text keywords based on variable information, class information, and function information used in one or more programming languages ([0062] “In one embodiment, the selected code section is searched for keywords pertaining to the domain. If any such keywords are found, then the block is identified as domain-specific, otherwise the block is identified as a general purpose code section. In a further embodiment, non-program language terms (e.g., variables, function names, etc.) are compared to such non-program language terms found in previously ingested source code files.”); and
generating, by the server, the source code commentary information including names of source codes corresponding to the source code keywords, abbreviated names of the source codes ([0044] “0044] At step 425, the process classifies the selected block based on the operation(s) performed by the block. For example, the selected block could be a conditional assignment, a manipulation routine, a transformer function, a routing function, and the like.” [0045] “1) Use prior art to classify all blocks/methods.” [0046] “2) Blocks are classified:” [0051] “[0051] 3) Based on classification determine the object types.” [0063] “At step 435, the process selects the first program construct in the selected code section (e.g., variable, class, etc.). The selected program construct is stored in memory area 440. At step 445, the process identifies the selected construct as either being domain-specific or general purpose with the identification being performed in a similar fashion as the identification of the code section itself (e.g., utilizing keywords, comparing such constructs to previously ingested constructs from other source code files, etc.).”), and
a relationship between translation of the source codes and the source code keywords ([0052] “4) Determine the object types in the code and their relationships (affects, conditionally determines, routes to)” [0053] “5) Match the entity relationships to corpora for the domain.” [0064] “At step 455, the process maps relationships between the selected code section and other code sections. For example, the selected code section may call or reference another code section or the selected code section may be a function or procedure that is called or referenced by other code sections. Such relationship data between code sections is stored in memory area 460.”).
Claim 11:
Allen in view of Szczepanik and Dubey teaches the method of Claim 10. Allen further teaches wherein the generating of the commentary information includes:
searching, by the server, whether source code commentary information corresponding to the source code text exists in the source code database ([0075] “QA system pipeline includes a number of processes that break the submitted question down in order to search the QA system's knowledge base 106 for an answer to the submitted question… Next, at step 620, the QA system pipeline performs a question decomposition process. At step 625, the QA system pipeline next performs a primary search for the submitted question using knowledge base 106. At step 630, the QA system pipeline then generates candidate answers to the submitted question.”); and
generating, by the server, the commentary information for the source code text including source code commentary text, based on source code commentary information corresponding to the source code text [0075] “At step 640, the QA system pipeline retrieves supporting evidence from the knowledge base (corpus). At step 645, the QA system pipeline performs a deep evidence scoring process using the knowledge base. At step 650, the QA system pipeline performs a final merging and ranking resulting in one or more candidate answers as well as a confidence value pertaining to the various candidate answers.” [0077] “At step 665, the process receives the response from the QA system. The response includes answers, confidence values, and supporting evidence as well as the cited regulations and the code sections, constructs, or relationships to which the regulations apply.”).
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure is as follows:
Powers et al. (US Patent 6,513,027) discloses a terminological system automatically generates sub-categories from categories of a knowledge base, wherein the system also stores a corpus of documents, including themes and corresponding theme weights for each document.
Bansal et al. (“A Neural Question Answering System for Basic Questions about Subroutines,” March 2021) discusses steps for bringing neural QA technologies to Software Engineering applications by designing a context-based QA system for basic questions about subroutines..
Any inquiry concerning this communication or earlier communications from the examiner should be directed to Joanne G. Macasiano whose telephone number is (571)270-7749. The examiner can normally be reached Monday to Thursday, 10:30 AM to 6:00 PM Eastern Standard Time.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Bradley Teets can be reached at (571) 272-3338. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/JOANNE G MACASIANO/Examiner, Art Unit 2197