US8966439B2 - Method and system for determining an answer to a query - Google Patents

Method and system for determining an answer to a query Download PDF

Info

Publication number
US8966439B2
US8966439B2 US14/082,581 US201314082581A US8966439B2 US 8966439 B2 US8966439 B2 US 8966439B2 US 201314082581 A US201314082581 A US 201314082581A US 8966439 B2 US8966439 B2 US 8966439B2
Authority
US
United States
Prior art keywords
formula
user
user input
computer
syntax
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
US14/082,581
Other versions
US20140075410A1 (en
Inventor
Stephen Wolfram
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wolfram Alpha LLC
Original Assignee
Wolfram Alpha LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wolfram Alpha LLC filed Critical Wolfram Alpha LLC
Priority to US14/082,581 priority Critical patent/US8966439B2/en
Publication of US20140075410A1 publication Critical patent/US20140075410A1/en
Assigned to WOLFRAM ALPHA LLC reassignment WOLFRAM ALPHA LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: WOLFRAM, STEPHEN
Priority to US14/629,398 priority patent/US9684721B2/en
Application granted granted Critical
Publication of US8966439B2 publication Critical patent/US8966439B2/en
Priority to US15/625,769 priority patent/US10380201B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • G06F17/215
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/111Mathematical or scientific formatting; Subscripts; Superscripts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F19/707
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/22Procedures used during a speech recognition process, e.g. man-machine dialogue
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16CCOMPUTATIONAL CHEMISTRY; CHEMOINFORMATICS; COMPUTATIONAL MATERIALS SCIENCE
    • G16C20/00Chemoinformatics, i.e. ICT specially adapted for the handling of physicochemical or structural data of chemical particles, elements, compounds or mixtures
    • G16C20/70Machine learning, data mining or chemometrics

Definitions

  • MATHEMATICA® software system available from Wolfram Research, Inc. is a powerful computational tool that can evaluate general symbolic expressions, as well as mathematical and numeric expressions.
  • MATHEMATICA® is an interpreted language, with a notion of “evaluation” of symbolic expressions. Evaluation consists in applying to any symbolic expression all transformation rules that fit that expression.
  • a user can create interactive electronic documents referred to as “notebooks.”
  • Various expressions including numeric and symbolic expressions, can be entered into a notebook via a keyboard, for example, and a user can cause the expression to be evaluated.
  • the MATHEMATICA® software system permits users to evaluate much more complex expressions and to analyze complex mathematical and scientific problems.
  • Input to the MATHEMATICA® software system must be in a particular syntax or MATHEMATICA® will not recognize what the user intended. For example, if a user wants to utilize a built-in function of the MATHEMATICA® software system, such as the function “integral”, the user must correctly type in the word “integral.” Additionally, the expression that is to be integrated must be included within brackets subsequent to the word “integral”. For example, to evaluate the integral of ⁇ with respect to x, the text “integral[f,x]” must be typed. If the correct syntax is not followed exactly, the MATHEMATICA® software system will not recognize what the user had intended.
  • MATHEMATICA® will not recognize that the user intended to use the function. Similarly, if a bracket, comma, parentheses, etc. is erroneously omitted or misplaced, MATHEMATICA® will not recognize what the user intended.
  • a website may provide a mortgage payment calculator that uses a mathematical formula to calculate a monthly mortgage payment based on various parameters such as a mortgage amount and an interest rate.
  • a user can input values of the parameters by typing numbers into various text boxes on the web page. For example, the user can input a mortgage amount, an interest rate, number of years, etc. Then, the user can select a “Calculate” button on the web page to generate a mortgage payment, which is presented to the user via a different web page.
  • Search engines such as Internet search engines, have been in use for some time. Such search engines permit the user to form a search query using combinations of keywords to search through a web page database containing text indices associated with one or more distinct web pages. The search engine looks for matches between the search query and text indices in the web page database, and then returns a number of hits which correspond to URL pointers and text excerpts from the web pages that represent the closest matches.
  • Some Internet search engines analyze the context of keywords in order to narrow the number of matches. For example, if a search query includes the words “yellow” and “pages,” a search engine may recognize that the phrase “yellow pages” has a particular meaning and it may therefore note that web pages including the phrase “yellow pages” may be a closer match than web pages merely containing the word “yellow” and/or the word “pages.”
  • Some application programs may have a help tool that allows a user to enter a word or phrase and will display help topics containing that word or phrase, from which the user can make a selection.
  • FIG. 1 is a flow diagram of an example method for providing one or more formulas to a user based on an input that may be in an imprecise syntax;
  • FIG. 2 is a flow diagram of another example method for providing one or more formulas to a user based on an input that may be in an imprecise syntax;
  • FIG. 3A is an illustration of an example display that may be utilized in an implementation of the method of FIG. 1 ;
  • FIG. 3B is an illustration of the example display of FIG. 3A after the user has activated a button
  • FIG. 4 is an illustration of another example display that may be utilized in an implementation of the method of FIG. 1 ;
  • FIG. 5 is a flow diagram of yet another example method for providing one or more formulas to a user based on an input that may be in an imprecise syntax
  • FIG. 6 is an illustration of an example display that may be utilized in an implementation of the method of FIG. 5 ;
  • FIG. 7 is a flow diagram of still another example method for providing one or more formulas to a user based on an input that may be in an imprecise syntax
  • FIG. 8 is an illustration of an example display that may be utilized in an implementation of the method of FIG. 7 ;
  • FIG. 9 is an illustration of another example display that may be utilized in an implementation of the method of FIG. 7 ;
  • FIG. 10 is a flow diagram of yet another example method for providing one or more formulas to a user based on an input that may be in an imprecise syntax;
  • FIG. 11 is a block diagram of an example system for providing one or more formulas to a user based on an input that may be in an imprecise syntax;
  • FIG. 12 is a flow diagram of another example method for providing one or more formulas to a user based on an input that may be in an imprecise syntax
  • FIG. 13 is an illustration of another example display that may be utilized in an implementation of the method of FIG. 1 ;
  • FIG. 14 is an illustration of yet another example display that may be utilized in an implementation of the method of FIG. 1 ;
  • FIG. 15 is an illustration of still another example display that may be utilized in an implementation of the method of FIG. 1 ;
  • FIG. 16 is an illustration of yet another example display that may be utilized in an implementation of the method of FIG. 1 ;
  • FIG. 17 is an illustration of still another example display that may be utilized in an implementation of the method of FIG. 1 ;
  • FIG. 18 is an illustration of another example display that may be utilized in an implementation of the method of FIG. 1 ;
  • FIG. 19 is an illustration of yet another example display that may be utilized in an implementation of the method of FIG. 1 .
  • the example methods and systems described herein may help a user to determine a particular formula when the details of the formula are not known to the user. Also, even if the particular formula is known to the user, the example methods and systems may output a formula in a particular syntax in response to the user merely providing a short-hand and/or pseudocode version of the formula. This may be useful if the formula is particularly long or complex and would be time-consuming for the user to write or type, or enter into a document using an equation editor, for example. Thus, a user could enter a relatively small amount of ASCII text, for example, and, in response, a complex equation, formula, etc., including mathematical or scientific symbols could be returned.
  • the ASCII text could include technical shorthand or abbreviations, for example.
  • a formula may comprise a fact, rule, or principle expressed in scientific, mathematical, or technical symbols, for example.
  • a formula may be a scientific or mathematical formula.
  • An example of a mathematical formula is a mathematical expression defining the area of a triangle based on the lengths of the triangle's sides.
  • a user could enter as an input to a system described herein the text “area of a triangle,” and the system may return a formula for determining the area of a triangle based on the lengths of the triangle's sides. Additionally, the system may return a formula for determining the area of a triangle based on the lengths of two sides and the angle between the sides.
  • the system may return a formula for determining the area of a triangle based on the base and height of the triangle. Further, the system may generate and return other information related to the formula (s). For example, it may generate and return a plot of the formula, an integral of the formula, a derivative of the formula, etc.
  • An example of a scientific formula may be a chemical formula.
  • a formula also may be an expression in a precise syntax, such as a software programming language statement, a database query, etc.
  • FIG. 1 is a flow diagram of an example method 100 for providing one or more formulas to a user based on an input that may be in an imprecise syntax.
  • An imprecise syntax is in contrast to a typical computer programming language syntax, in which exact spelling, exact placement of punctuation, exact placement of parentheses, etc. is necessary to specify a particular formula.
  • typical computer programming language syntax a slight change in punctuation, for example, could specify a completely different formula or could render a computer language statement meaningless to a compiler.
  • a formula can be expressed using language and terms that may be readily understandable to a human, but unintelligible to a computer program such as a compiler.
  • the method 100 may permit a user to obtain precise formulas by inputting names or descriptions of the formulas in text, inputting pseudo code, inputting incorrectly expressed computer language statements, etc.
  • the method 100 could be implemented, at least partially, by a server system in conjunction with a website, for example.
  • a user could access the website using a browser running on a personal computer, cell phone, personal digital assistant (PDA), etc., for example, and could utilize the website to obtain formulas and/or outputs related to the formulas.
  • PDA personal digital assistant
  • the method 100 could also be used in other contexts.
  • the method 100 could be implemented, at least partially, as part of a “Help” system of a software application such as a computational tool.
  • the user could use the “Help” system to obtain formulas and/or outputs related to the formulas.
  • user input in an imprecise syntax may be received, the input including an indication of a formula.
  • a user may input the text “area of a triangle” into an input field of a web page, a “Help” screen, etc.
  • This entered text may be received, for example, by a web site server system via the Internet, another computer communicatively coupled to the user's computer via a network, an application running on the user's computer, etc.
  • the user input may also include indications of values of parameters to be used in the formula. For example, a user may input the text “area of a triangle length of sides 3, 4, 5”.
  • A is the length of a first side
  • B is the length of a second side
  • is the angle between the first and second sides
  • Area ⁇ square root over ( s ( s ⁇ A )( s ⁇ B )( s ⁇ C )) ⁇ square root over ( s ( s ⁇ A )( s ⁇ B )( s ⁇ C )) ⁇ square root over ( s ( s ⁇ A )( s ⁇ B )( s ⁇ C )) ⁇ (Equ. 3)
  • the syntax of the indicator may be imprecise and/or because there may exist multiple formulas for determining one desired result, it is possible that a relatively large number of possible formulas and/or formulas not likely to be relevant may be determined at the block 108 . Thus, optionally, formulas that are less likely to be relevant than others may be omitted or eliminated. For example, a ranking procedure may be utilized to determine which formulas are not likely to be relevant and which formulas should be omitted or eliminated.
  • a process or system that implements the block 108 may be unable to determine a formula based on the data received at the block 104 . Additionally, it may be determined that the number of possible formulas is high, and additional information may help reduce the number. Thus, in some implementations, the user may be prompted for additional information that may help to determine formula or formulas. For example, if the data received at the block 104 is ambiguous as to the formula or formulas it may indicate, the user may be prompted to provide additional information to help clear up or reduce the ambiguity. For instance the user could be prompted to input additional text, to select one or possibly a plurality of items from a list, to answer one or more yes or no or multiple choice questions, etc.
  • the user could be prompted to talk with a human operator, via telephone, email, instant messaging, for example, to ascertain the formula that the user was trying to indicate.
  • the human operator could then provide additional information to the process or system or configure the process or system to interpret such an input and/or similar inputs in the future.
  • the process or system that implements the block 108 is unable to determine a formula based on the data received at the block 104 , the user may be so notified and the method 100 may terminate.
  • one or more outputs corresponding to the one or more formulas determined at the block 108 may be generated. For example, if the user input received at the block 104 includes indications of parameters, an output of the formula having the parameters integrated therein may be generated. For example, if the user entered the text “area of a triangle length of sides 3, 4, 5,” an output such as an output showing the side lengths inserted in Equations 3 and 4 could be generated. Also, if the user has entered enough parameters to compute a numerical result, such a result may be generated.
  • outputs may be generated, including outputs mathematically or otherwise related to the formula. For example, for each formula, one or more or none of the following may optionally be generated: a derivative of the formula, an integral of the formula, roots of the formula, one or more plots of the formula or an evaluation of the formula, data related to the formula or an evaluation of the formula, etc. If multiple formulas were determined at the 108 , such other outputs need not be generated for each formula. For instance, such other outputs could be generated for only the top one, two, three, etc., ranked formulas could be generated.
  • the formula (s) determined at the block 108 and the output(s) generated at the block 112 may be presented to the user. This may comprise transmitting the information from a web site server system to the user's computer via the Internet, transmitting the information from a computer to the user's computer via a network, etc. If the information is transmitted to the user's computer via the Internet, presenting the information may include displaying a web page to the user. If other blocks of the method 100 are implemented using software executed by the user's computer, presenting the information need not comprise transmitting information via a network.
  • the blocks 108 and 112 could be implemented on the user's computer, and the formula (s) determined at the block 108 and the output(s) generated at the block 112 could be displayed in a window without having to first transmit the formula (s) and the output(s) to the user's computer.
  • FIG. 2 is a flow diagram of another example method 130 for providing one or more formulas to a user based on an input that may be in an imprecise syntax.
  • the method 130 includes the same blocks 104 , 108 , 112 , and 116 as in the method 100 of FIG. 1 . Similar to the method 100 of FIG. 1 , in some implementations, the user also may be prompted for additional information that may help to determine formula or formulas. Additionally, the method 130 includes a block 134 , at which software programming code for generating one or more of the formula (s) (block 108 ) and/or one or more of the output(s) (block 112 ) is presented to the user.
  • the software programming code could be presented in a web page or a window, for example.
  • the software programming code could be presented in the same web page or window used to present the formula (s) and the output(s) at the block 116 .
  • the software programming code could comprise commands in any of a variety of computer programming languages.
  • the software programming code could comprise code that is to be compiled, such as C programming language code, C++ programming language code, C# programming language code, etc.
  • the software programming code could comprise code that is to be interpreted.
  • the software programming code could comprise code to be used in a computational tool such as a spreadsheet application, the MATHEMATICA® software system available from Wolfram Research, Inc., etc.
  • Other types of software programming code could include Java programming language code, Visual Basic programming language code, etc.
  • presenting the software programming code may comprise providing a mechanism for inserting the code in a file.
  • the web page, window, etc., in which the code is presented could include a button or some other mechanism by which the code could be inserted in a source code file, a notebook, a spreadsheet, etc.
  • the mechanism when the mechanism is activated, the code could be inserted at the end of a file, at a position of a cursor, at a position of a selected spreadsheet cell or cells, etc.
  • FIG. 3A is an illustration of an example display 150 that may be utilized in an implementation of the method 100 of FIG. 1 .
  • the example display 150 is configured to permit a user to enter an input that includes an indication of a formula. As describe previously, the input may be in an imprecise syntax.
  • the display 150 may be part of a web page, window, etc., for example.
  • the display 150 includes a field 154 in which a user may type text.
  • a user has typed the text “X SQUARED” into the field 154 .
  • the display 150 also includes a button 158 that a user may activate to initiate a determination of the formula corresponding to the text in the field 154 .
  • the formula corresponding to the text is simply the symbolic expression x 2 .
  • FIG. 3B is an illustration of the example display 150 after the user has activated the button 158 .
  • the display 150 is now modified to include a portion 162 which includes several fields 166 , 170 . 174 , 178 , 182 , and 186 .
  • the field 166 displays the formula (i.e., the symbolic expression x 2 ) determined based on the text entered into the field 154 .
  • the portion 162 of the display 150 also includes other outputs that are mathematically related to the formula.
  • the field 170 includes a plot of x 2 .
  • the field 174 includes the real roots of x 2 .
  • the field 178 includes the derivative of x 2 , and the field 182 includes the indefinite integral of x 2 .
  • the field includes the global minimum of x 2 .
  • FIG. 4 is an illustration of another example display 200 that may be utilized in an implementation of the method 100 of FIG. 1 .
  • the display 200 includes an input field 204 and a button 208 .
  • a user has entered the text “RATE REACTION, POTASSIUM PERSULFATE, POTASSIUM IODIDE” into the field 204 .
  • the display 200 includes a portion 212 that was generated in response to the user entering the text in the field 204 and activating the button 208 .
  • the portion 212 includes several fields 216 , 220 , 224 , and 228 .
  • the field 216 includes an indication of the formula that was determined based on the text provided by the user in the field 204 .
  • the field 220 displays a chemical reaction formula that is related to the formula determined based on the text in the field 204 .
  • the field 220 displays the chemical reaction formula of persulfate (S 2 O 8 2 ⁇ ) reacting with iodide ( 2 F) to produce sulfate (SO 4 2 ⁇ ) and iodine (I 2 ).
  • the field 224 displays the rate of reaction formula
  • the field 228 displays a different mathematical form of the rate of reaction formula.
  • the formulas to be determined may be from a variety of fields such as mathematics, chemistry, physics, finance, engineering, medicine, etc.
  • a single system that implements a method such as the method 100 , the method 130 , or some other method, may be configured to determine formulas from a plurality of fields.
  • a system may be configured to determine formulas from only one field. For example, a system may be configured to determine finance-related formulas, whereas a different system may be configured to determine physics-related formulas.
  • FIG. 5 is a flow diagram of yet another example method 240 for providing one or more formulas to a user based on an input that may be in an imprecise syntax.
  • the method 240 includes the same blocks 104 and 108 as in the methods 100 and 130 of FIGS. 1 and 2 . Similar to the method 100 of FIG. 1 , in some implementations, the user also may be prompted for additional information that may help to determine formula or formulas.
  • the method 240 includes a block 244 , at which one or more outputs corresponding to the one or more formulas determined at the block 108 may be generated, the one or more output including one or more outputs having user-adjustable parameters.
  • FIG. 6 an illustration of an example display 250 that may be utilized in an implementation of the method 240 of FIG. 5 is provided. Similar to the display 150 of FIGS. 3A and 3B , and the display 200 of FIG. 4 , the display 250 includes an input field 254 and a button 258 . In the illustration of FIG. 6 , a user has entered the text “AREA OF A TRIANGLE” into the field 254 . Also, the display 250 includes a portion 262 that was generated in response to the user entering the text in the field 254 and activating the button 258 .
  • the portion 262 includes several fields 266 , 268 , and 270 .
  • the field 266 includes an indication of the formula (s) that was determined based on the text provided by the user in the field 254 .
  • the field 268 also includes a plurality of user interface mechanisms for permitting the user to adjust parameters of the formula 272 .
  • the field 268 includes a text box 274 in which a user can enter a value of A, a text box 276 in which a user can enter a value of H, and a button 278 by which the user can cause a numerical value of the AREA to be calculated.
  • a value of the AREA may be displayed in a portion 280 .
  • the example display 250 includes text boxes for entering parameter values, other user interface mechanisms may be used such as sliders, knobs, pull-down menus, buttons, etc.
  • the example display 250 includes a button 278 for causing a result to be calculated, other techniques may be utilized.
  • the result could be calculated in response to text being entered in a text box or a slider being moved, for example.
  • the user adjustable parameter and result calculation functionality of the display 250 may be implemented using a variety of techniques. For example, if the display 150 is part of a web page, applets or some other suitable technique may be utilized such as client-side or server-side controls (e.g., Active Server Page (ASP) technology available from Microsoft®, common gateway interface (CGI) technology, Fast CGI, Java Server Page technology, hyper text markup language (HTML) controls, ActiveX controls, Web Form controls available from Microsoft®, java controls, etc.). Additionally, techniques such as described in U.S. patent application Ser. No. 11/234,550, filed Sep. 23, 2005, entitled “Method of Dynamically Linking Objects Operated on by a Computational System,” which is hereby incorporated by reference, may optionally be utilized to implement the user adjustable parameter functionality of the display 250 .
  • client-side or server-side controls e.g., Active Server Page
  • the field 270 includes an indication 282 of a second formula for determining the area of a triangle based on a first side length (A), a second side length (B), and an angle (a) between the first and second sides.
  • the field 270 also includes a plurality of user interface mechanisms for permitting the user to adjust parameters of the formula 282 .
  • the field 270 includes a text box 284 in which a user can enter a value of A, a text box 286 in which a user can enter a value of b, a text box 288 in which a user can enter a value of a, and a button 290 by which the user can cause a numerical value of the AREA to be calculated.
  • a value of the AREA may be displayed in a portion 292 .
  • the block 244 may also comprise generating outputs similar to those described above with respect to the block 112 of FIG. 1 .
  • the formula (s) determined at the block 108 and the output(s) generated at the block 244 may be presented to the user. This may comprise transmitting the information from a web site server system to the user's computer via the Internet, transmitting the information from a computer to the user's computer via a network, etc. If the information is transmitted to the user's computer via the Internet, presenting the information may include displaying a web page to the user. If other blocks of the method 240 are implemented using software executed by the user's computer, presenting the information need not comprise transmitting information via a network.
  • the blocks 108 and 244 could be implemented on the user's computer, and the formula (s) determined at the block 108 and the output(s) generated at the block 244 could be displayed in a window without having to first transmit the formula (s) and the output(s) to the user's computer.
  • the method 240 may also comprise presenting to the user software programming code for generating one or more of the formula (s) (block 108 ) and/or one or more of the output(s) (block 244 ).
  • the software programming code could be presented in a web page or a window, for example.
  • the software programming code could be presented in the same web page or window used to present the formula (s) and the output(s) at the block 248 .
  • the software programming code could comprise commands in any of a variety of computer programming languages, such as the programming languages described above with reference to FIG. 2 .
  • presenting the software programming code may comprise providing a mechanism for inserting the code in a file.
  • the web page, window, etc., in which the code is presented could include a button or some other mechanism by which the code could be inserted in a source code file, a notebook, a spreadsheet, etc.
  • the mechanism when the mechanism is activated, the code could be inserted at the end of a file, at a position of a cursor, at a position of a selected spreadsheet cell or cells, etc.
  • FIG. 7 is a flow diagram of still another example method 300 for providing one or more formulas to a user based on an input that may be in an imprecise syntax.
  • a block 304 user input in an imprecise syntax may be received, the input including an indication of a formula and also including indication(s) of one or more parameter values related to the formula.
  • the method may include a block 308 , similar to the block 108 of FIG. 1 , at which one or more formulas corresponding to the indication of the formula received at the block 304 are determined. Similar to the method 100 of FIG. 1 , in some implementations, the user also may be prompted for additional information that may help to determine formula or formulas.
  • the method 300 includes a block 312 , at which one or more outputs corresponding to the one or more formulas determined at the block 308 may be generated.
  • the output(s) may include one or more outputs in which parameter values corresponding to the parameter value indications received at the block 304 are integrated with at least some of the one or more formulas determined at the block 308 .
  • FIG. 8 an illustration of an example display 330 that may be utilized in an implementation of the method 300 of FIG. 7 is provided. Similar to the display 150 of FIGS. 3A and 3B , and the display 200 of FIG. 4 , the display 330 includes an input field 334 and a button 338 . In the illustration of FIG.
  • the display 330 includes a portion 342 that was generated in response to the user entering the text in the field 334 and activating the button 338 .
  • the portion 342 includes several fields 346 , 348 , and 350 .
  • the field 346 includes an indication of the formula (s) that was determined based on the text provided by the user in the field 334 .
  • the field 348 includes an indication 352 of the formula for determining the area of a triangle with the parameter values indicated in the field 334 having been integrated into the formula.
  • the block 312 may also comprise generating outputs similar to those described above with respect to the block 112 of FIG. 1 .
  • the block 312 may also comprise generating outputs similar to those described above with respect to the block 244 of FIG. 5 .
  • the field 350 also includes a plurality of user interface mechanisms for permitting the user to adjust parameters of the formula.
  • the field 352 includes a text box 354 in which a user can enter a value of A, a text box 356 in which a user can enter a value of B, a field 358 in which a user can enter a value of a, and a button 360 by which the user can cause a numerical value of the AREA to be calculated.
  • a value of the AREA may be displayed in a portion 362 .
  • the example display 330 includes text boxes for entering parameter values, other user interface mechanisms may be used such as sliders, knobs, pull-down menus, buttons, etc.
  • the example display 330 includes a button 360 for causing a result to be calculated, other techniques may be utilized.
  • the result could be calculated in response to text being entered in a text box or a slider being moved, for example.
  • the user adjustable parameter and result calculation functionality of the display 330 may be implemented using a variety of techniques such as those described above with respect to FIG. 6 .
  • the display 330 may permit a user to adjust fewer numbers of parameters as compared to the illustration in FIG. 8 .
  • a user could be permitted to adjust the angle ⁇ , but not the sides A and B.
  • the formula (s) determined at the block 308 and the output(s) generated at the block 312 may be presented to the user. This may comprise transmitting the information from a web site server system to the user's computer via the Internet, transmitting the information from a computer to the user's computer via a network, etc. If the information is transmitted to the user's computer via the Internet, presenting the information may include displaying a web page to the user. If other blocks of the method 300 are implemented using software executed by the user's computer, presenting the information need not comprise transmitting information via a network.
  • the blocks 308 and 312 could be implemented on the user's computer, and the formula (s) determined at the block 308 and the output(s) generated at the block 312 could be displayed in a window without having to first transmit the formula (s) and the output(s) to the user's computer.
  • the method 300 may also comprise presenting to the user software programming code for generating one or more of the formula (s) (block 308 ) and/or one or more of the output(s) (block 312 ).
  • the software programming code could be presented in a web page or a window, for example.
  • the software programming code could be presented in the same web page or window used to present the formula (s) and the output(s) at the block 316 .
  • the software programming code could comprise commands in any of a variety of computer programming languages, such as the programming languages described above with reference to FIG. 2 .
  • presenting the software programming code may comprise providing a mechanism for inserting the code in a file.
  • the web page, window, etc., in which the code is presented could include a button or some other mechanism by which the code could be inserted in a source code file, a notebook, a spreadsheet, etc.
  • the mechanism when the mechanism is activated, the code could be inserted at the end of a file, at a position of a cursor, at a position of a selected spreadsheet cell or cells, etc.
  • FIG. 9 is an illustration of another example display 370 that may be utilized in an implementation of the method 300 of FIG. 7 .
  • the display 370 includes an input field 374 and a button 378 .
  • a user has entered the text “AREA OF A TRIANGLE, SIDES 3, 4, 5” into the field 374 .
  • the display 330 includes a portion 382 that was generated in response to the user entering the text in the field 374 and activating the button 378 .
  • the portion 382 includes an indication of a formula for determining the area of a triangle with the parameter values indicated in the field 374 having been integrated into the formula.
  • FIG. 10 is a flow diagram of yet another example method 400 for providing one or more formulas to a user based on an input that may be in an imprecise syntax.
  • the method 400 may be used to assist a programmer in developing software programming code, for example.
  • user input may be received, the input including an indication of software programming code.
  • the indication may include one or more of pseudo code, software programming code having an incorrect syntax, or software programming code having a correct syntax, etc.
  • the indication may include two or more of pseudo code, software programming code in an incorrect syntax, or software programming code in a correct syntax.
  • the user input could be a mixture of pseudocode and software programming code in one or more languages.
  • the software programming code could include code in a mixture of correct and incorrect syntax.
  • software programming code having a precise syntax corresponding to the indication received at the block 404 may be determined. This may comprise, for example, determining software programming code having a precise syntax corresponding to pseudo code entered in the block 404 , determining software programming code having a precise syntax corresponding to software programming code having an incorrect syntax entered in the block 404 , determining different software programming code in a precise syntax corresponding to software programming code having the correct syntax entered in the block 404 (e.g., more efficient software programming code, code in a different software programming language, etc.), etc. Similar to the method 100 of FIG. 1 , in some implementations, the user also may be prompted for additional information that may help to determine the software programming code.
  • the block 408 may include determining multiple sets of software programming code having precise syntax. For example, there might be multiple interpretations of the input received at the block 404 , and the multiple sets of software programming code may be in the same programming language and may correspond to the multiple interpretations. For instance, different sets of code may correspond to different algorithms, the same algorithm with different initial conditions or other parameters, etc. As another example, the multiple sets of software programming code may correspond to different implementations in the same programming language of essentially the same algorithm. As yet another example, the multiple sets of software programming code may correspond to different implementations in different programming languages.
  • the block 408 optionally may include evaluating the multiple sets to eliminate sets and/or rank sets. For example, sets may be evaluated for code size, memory use efficiency, etc. Also, code sets that result in unwanted operations such as a “divide-by-zero”, an infinite loop, etc., may be eliminated.
  • the software programming code (or multiple sets) determined at the block 408 may be presented to the user.
  • the software programming code could be presented in a web page or a window, for example.
  • the software programming code could be presented in the same web page or window used to present the formula (s) and the output(s) at the block 316 .
  • the software programming code could comprise commands in any of a variety of computer programming languages, such as the programming languages described above with reference to FIG. 2 .
  • presenting the software programming code may comprise providing a mechanism for inserting the code in a file.
  • the web page, window, etc., in which the code is presented could include a button or some other mechanism by which the code could be inserted in a source code file, a notebook, a spreadsheet, etc.
  • the mechanism when the mechanism is activated, the code could be inserted at the end of a file, at a position of a cursor, at a position of a selected spreadsheet cell or cells, etc.
  • the example method 400 could be used to assist a user in developing code in a particular software programming language.
  • the method 400 could allow a user to enter code in a first software programming language or in a mixture of first software programming languages, and receive code in a second software programming language to implement what is generally specified by the code entered by the user.
  • a first server system may provide web pages to allow a user to input data indicative of a formula.
  • the first server system may then transmit the input to a second server system that may determine a formula, software programming code, related outputs, etc., as described above.
  • the second server system may then transmit display data and/or other outputs it generates back to the first server system, and the first server system may in turn transmit the display data/outputs to the user computer.
  • Such an implementation may be appropriate for enhancing the capabilities of a standard web-based search engine implemented by the first server system, for example.
  • presentation of the formula may be omitted. For example, only evaluations of the formula and/or related outputs may be presented to the user. In some of these implementations, the user input optionally could be required to be input in a precise syntax. Multiple outputs corresponding to the formula could be determined and presented including outputs such as one or more evaluations of the formula, one or more outputs that are mathematically or otherwise related to the formula, etc.
  • FIG. 11 is a block diagram of an example system 500 that may be used to implement one or more of the example methods described previously. Of course other systems may also be used to implement those methods.
  • the system 500 may include an input process 502 for receiving data from a user.
  • the system 500 may be a stand-alone executable application with its own user interface.
  • the system 500 could be an added feature or subsystem of a larger application such as a computational application (e.g., the MATHEMATICA® software system available from Wolfram Research, Inc., a spreadsheet application, etc.).
  • the system 500 could be part of a “help” subsystem within a larger application.
  • the system 500 could be an applet accessed via a website, for example.
  • system 500 may also be implemented as a Web service with a Web browser implementing the user interface in a known manner
  • the system 500 could be browser plug-in or toolbar system.
  • the input process 502 may receive input in an imprecise syntax.
  • the input process 502 may also provide elementary error and consistency checking, for example, to help ensure that at least some characters are present or prompting the user with an error when a length limit is exceeded.
  • the system 500 may also include a parser 504 communicatively coupled to the input process 502 .
  • the parser 504 may examine the input to extract keywords, group words into phrases, identify numerical expressions, categorize data, etc., for example.
  • the parser 504 may perform an initial go/no go analysis on the keywords, phrases, or numerical expressions to determine if there is enough information to proceed to a further step.
  • the parser 504 may cause the user to be prompted for additional information such as information that may clarify the formula desired by the user.
  • the system 500 may return the input unchanged along with a message that it cannot interpret the input.
  • the parser 504 may take an initial input and create tokens, and then assemble the tokens into one or more expressions in a precise syntax.
  • the parser 504 may generally take input data in an imprecise syntax and generate expressions in a precise syntax.
  • the parser 504 may create a plurality of tokens: “sin”, “[x]”, “ ⁇ ”, and “0.5”, where “sin” is recognized as a function name, “[x]” is recognized as a variable name, “ ⁇ ” is recognized as an inequality, and “0.5” is recognized as a real number. Then, the parser 504 may generate an expression in a precise syntax using these tokens.
  • the parser 504 may perform additional processing. For example, the parser may attempt to identify phrases. Additionally, the parser 504 may attempt to rearrange tokens to see if the rearrangements match something that the parser 504 understands, such as a phrase. For instance, the parser 504 may utilize algorithmic rearrangements of the input. Also, the parser 504 may cause the user to be prompted to rephrase the input. Then, the parser 504 may analyze the original input in conjunction with the rephrased input. Further, the parser 504 may utilize machine learning techniques to identify language processing algorithms that work better than others.
  • the one or more expressions generated by the parser 504 may be provided to one or more scanners 506 , 510 , and 514 that may each have a particular focus.
  • scanner A 506 may be directed to developing a graphical plot for numerical expressions or phrases parsed from the input that can be reduced to a plot.
  • scanner A 506 may develop and output a plot of x 2 (i.e., a parabola).
  • the expression is Sin [x] ⁇ 0.5
  • scanner A 506 may develop and output a plot of values of x that satisfy this expression.
  • Other scanners may have other specific specializations, such as evaluating equations, determining roots, evaluating integrals, evaluating derivatives, determining relevant transforms, etc.
  • Other specializations may include, for example, determining mathematical formulas, determining chemical formulas, determining physics formulas, determining financial formulas, determining engineering formulas, determining medical formulas, etc.
  • Still another specialization may include determining appropriate software programming language code (e.g., generating software programming language code).
  • a scanner could receive data indicating a mathematical expression and generate software programming language code for evaluating the expression.
  • a keyword or an expression related to ballistics may cause the scanner to generate software programming code for modeling the height of a projectile and code for modeling the distance of a projectile.
  • input related to airflow over a wing may return code for modeling turbulent fluid flow over a surface or code for modeling lift and drag in a wing, or both.
  • scanners may be utilized. For instance, if an application is to be devoted for use in a financial field, scanners related to chemical formulas may be omitted.
  • Some scanners may generate results based on a database query.
  • a scanner related to geometry formulas may query a database for keywords “area” and “triangle” for formulas related to those terms.
  • a scanner may query a database for raw data needed to evaluate an expression.
  • an expression may include c, the speed of light, and a scanner may query a database to retrieve a numerical value for c.
  • an expression may require statistical data, such as a population of a particular city, state, or country needed to evaluate a “per capita” expression, and the scanner may query a statistical database to obtain the needed data.
  • a scanner for generating indefinite integrals may receive a mathematical expression and synthesize the indefinite integral of that expression, rather than searching a database of pre-generated indefinite integrals.
  • Some scanners may be capable of doing database queries as well as synthesis of results.
  • the scanner related to geometry formulas may generate an expression for the area of a triangle based on a database query, but may also synthesize another expression by integrating parameter values into formulas retrieved from a database.
  • each scanner may share results with each of the other scanners. Again, results generated by a scanner based on the shared results may also be shared with each of the other scanners, and so on. This process may continue until the scanners no longer have additional data to add, for example. Trivial transforms may also be recognized and blocked.
  • the results from each scanner to respective postprocessors 508 , 512 , and 516 .
  • the postprocessors 508 , 512 , 516 evaluate the results and may provide a ranking of each result by assigning a value (e.g., a percentage) to each result.
  • the ranked results may be passed to an output module 518 which may generate an output having the results with rankings above a certain threshold, while omitting results below the threshold.
  • the threshold may be set at a predetermined level, or may be adjusted according to the number of results and a statistical analysis of the rankings For example, a query that produces ten thousand results may adjust the threshold to a 99% relevance, thereby limiting the displayed results to the top 100. In another example though, where perhaps only a half a dozen results are returned, all the results may be displayed even though the rankings may be relatively low.
  • the output of the output module 518 may comprise a web page, a window, etc., having one or more formulas. Examples of web pages, windows, etc., that the output module 518 may generate are shown in FIGS.
  • the output module 518 may provide a linking function to insert the software programming code into a file such as a notebook in the MATHEMATICA® software system, a source code file, a spreadsheet, etc.
  • scanners may be added or reconfigured based on user needs. For instance, feedback from users or an analysis of user queries may be utilized to add a scanner devoted to a new field (e.g., organic chemistry) or to add further formula data to an existing scanner. Similarly, scanners may be omitted or removed.
  • a new field e.g., organic chemistry
  • FIG. 12 is flow diagram of yet another example method 600 for providing one or more formulas to a user based on an input that may be in an imprecise syntax.
  • the method 600 will be described with reference to FIG. 11 for ease of explanation. It will be understood, however, that the method 600 may be utilized with systems other than the system 500 , and that the system 500 may implement methods other than the method 600 .
  • Input in an imprecise syntax may be received at block 602 and then parsed at block 604 to process the input.
  • the input may be analyzed to create data in a formal or precise syntax.
  • a ‘yes’ branch from a block 606 may be taken to a block 608 .
  • the parsed data e.g., the output of the parser 504
  • each scanner may examine the output of the parser 504 at the block 608 for areas of specific capability with respect to that scanner.
  • the scanner When a scanner identifies data it can process, the scanner creates output specific to the input and then, at a block 610 , the scanner may share its output with each of the other scanners.
  • the scanner 506 may create a mathematical expression and that mathematical expression may be delivered to scanners 510 and 514 .
  • Scanners 510 and 514 may be able to synthesize output based on the mathematical expression from scanner 506 that they were not able to process from the direct input from the parser 504 .
  • the results may be passed to the output module 518 at a block 612 .
  • each output may be ranked in terms of relevance. Output elements of low relevance optionally may be discarded.
  • output elements that were not discarded at the block 612 may be presented to the user. Output elements may be presented in rank order, or in the case of more common output elements, in a standard presentation format.
  • the ‘no’ branch from the block 606 may be taken to block 616 and the user may be prompted for more information. Alternatively, the user may be prompted that the input cannot be interpreted and the flow may return to the block 602 to receive a next input.
  • FIG. 13 is an illustration of another example display 700 that may be utilized in an implementation of a method such as the method 100 of FIG. 1 .
  • the example display 700 is configured to permit a user to enter an input that includes an indication of a formula. As describe previously, the input may be in an imprecise syntax.
  • the display 700 may be part of a web page, window, etc., for example.
  • the display 700 includes a field 704 in which a user may type text.
  • a user has typed the text “int log x” into the field 704 .
  • the display 700 also includes a button 708 that a user may activate to initiate a determination of the formula corresponding to the text in the field 704 .
  • a formula corresponding to the text is the symbolic expression ⁇ log(x) ⁇ x.
  • the display 700 may display the determined formula in a portion 712 .
  • FIG. 14 is an illustration of another example display 720 that may be utilized in an implementation of a method such as the method 100 of FIG. 1 .
  • the display 720 includes a field 724 in which a user may type text.
  • a user has typed the text “integral log x” into the field 724 .
  • the display 720 also includes a button 728 that a user may activate to initiate a determination of the formula corresponding to the text in the field 724 .
  • a formula corresponding to the text is the symbolic expression ⁇ log(x) ⁇ x.
  • the display 720 may display the determined formula in a portion 732 .
  • FIG. 15 is an illustration of another example display 750 that may be utilized in an implementation of a method such as the method 100 of FIG. 1 .
  • the display 750 includes a field 754 in which a user may type text. In the illustration of FIG. 14 , a user has typed the text “1492” into the field 754 .
  • the display 750 also includes a button 758 that a user may activate to initiate a determination of the formula corresponding to the text in the field 754 .
  • a formula corresponding to the text is the number 1492.
  • the display 750 may display information related to the number 1492.
  • the display 750 may include various fields such as the field 762 which indicates the formula (e.g., the number 1492).
  • Other fields 764 , 766 , 768 , 770 , 772 , 774 , and 776 provide information related to the number 1492.
  • FIG. 16 is an illustration of a portion of another example display 800 that may be utilized in an implementation of a method such as the method 100 of FIG. 1 .
  • the portion of the display 800 may be displayed in response to a user entering the text “3 4 5” and activating a button on the display 800 .
  • the determined formula is the sequences of numbers ⁇ 3, 4, 5 ⁇ and is displayed in a portion 802 .
  • the display 800 may display information related to the sequences of numbers ⁇ 3, 4, 5 ⁇ .
  • the display 800 may include various fields 804 , 806 , 808 , 810 , 812 , 814 , and 816 that provide information related to the sequences of numbers ⁇ 3, 4, 5 ⁇ .
  • FIG. 17 is an illustration of a portion of another example display 850 that may be utilized in an implementation of a method such as the method 100 of FIG. 1 .
  • the portion of the display 850 may be displayed in response to a user entering the text “gdp France/Germany” in a portion 852 and activating a button on the display 850 .
  • the determined formula is an expression in a precise syntax and is displayed in a portion 853 .
  • the display 850 may display information related to the determined expression.
  • the display 850 may include various fields 854 , 856 , 858 that provide information related to the expression in the field 853 .
  • the field 854 provides a more “user friendly” indication of the determined formula.
  • the field 856 includes an evaluation of the formula with data obtained from a database, for example.
  • the field 858 includes a plot of an evaluation of the formula using GDP values from several years.
  • FIG. 18 is an illustration of a portion of another example display 900 that may be utilized in an implementation of a method such as the method 100 of FIG. 1 .
  • the portion of the display 900 may be displayed in response to a user entering the text “a_a” in a field 902 and activating a button on the display 900 .
  • the determined formula is an expression in a precise syntax and is displayed in a portion 904 .
  • the display 900 may display information related to the determined expression.
  • the display 900 may include various fields 906 and 908 that provide information related to the expression in the field 904 .
  • the field 906 provides a more “user friendly” indication of the determined formula.
  • the field 908 includes an evaluation of the formula with data obtained from a database, for example.
  • FIG. 19 is an illustration of a portion of another example display 950 that may be utilized in an implementation of a method such as the method 100 of FIG. 1 .
  • the portion of the display 900 may be displayed in response to a user entering the text “London” in a field 952 and activating a button on the display 950 .
  • the display 950 may display information related to the determined formula.
  • the display 950 may include various fields 954 , 956 , 958 , 960 , and 962 that provide information related to the determined formula.
  • the field 954 provides a “user friendly” indication of the determined formula.
  • the field 956 provides an alternative representation or indication of the determined formula.
  • the field 958 includes data related to the formula and obtained from a database, for example.
  • the field 960 includes a map indicating the location of London, Ontario, Canada.
  • the field 962 includes location data for London, Ontario, Canada, obtained from a database, for example.
  • the user input could be received in a variety of ways.
  • the user input could include text entered via a keyboard, a keypad, a touch screen, etc., of a device such as a workstation, a desktop computer, a laptop computer, a tablet computer, a personal digital assistant (PDA), a cellular phone, etc.
  • PDA personal digital assistant
  • the user input could be received in other forms as well.
  • the user input could be received via a voice recognition system.
  • the user input could be received in a graphical form. For instance, handwriting recognition techniques could be used to convert the input into a textual form or some other form.
  • a user could draw a plot of a function on a touch screen of a computer. Formulas to generate the plot, or an approximation of the plot, could be determined.
  • a user could also draw notations or annotations on the plot, and these notations or annotations could be utilized to determine formulas and/or to format output to be presented to the user. For instance, if a user draws a plot and puts an “X” at the maximum of a curve, a formula for determining the maximum of the function corresponding to the plot could be determined. Additionally or alternatively, if a plot of the determined formula is presented to the user, the presented plot could include an “X” or a similar mark in a location corresponding to the location of the “X” drawn by the user.
  • the input need not be received directly from a user.
  • the methods and systems described above could receive input from a file, or the input could be a signal generated by a device such as a sensor, a signal received by another computing device, etc.
  • a file or signal could include data values, and a function, a model, etc., that best fits the data could be determined.
  • such information may be presented in a way that allows it to be readily transferred to a file such as document.
  • a formula could be presented as text so that it could be transferred to another document using standard “cut and paste” techniques.
  • the formulas, outputs, software programming code could be presented along with a mechanism that would allow such information to be inserted into another document having a particular format such as a spreadsheet, a word processing document for use with a particular equation editor, a MATHEMATICA® notebook, etc.
  • the mechanism could include a user interface mechanism such as a button, a drag-and-drop mechanism, etc. For example, a user could activate a button to have an equation inserted into a word processing document, the equation being in a format of a particular equation editor compatible with the word processing program.
  • Any of the techniques described above, including the blocks described with reference to FIGS. 1-16 , may be implemented using software comprising computer program instructions.
  • Such computer program instructions may control the operation of a computing device such as a desktop computer, a laptop computer, a tablet computer, a workstation, a server, a mainframe, a cellular phone, a telephone, a set top box, a PDA, a pager, a processing system of an electronic toy, a processing system of an electronic game, a processing system of a consumer electronics device, etc.
  • the computing device may have a memory in which the computer program instructions may be stored.
  • the computer program instructions may be written in any high level language such as the programming language used with MATHEMATICA® software systems, C, C++, C#, Java or the like or any low-level assembly or machine language.
  • the computing device By storing computer program instructions in a memory of the computing device, the computing device is physically and/or structurally configured in accordance with the computer program instructions.
  • the software routine When implemented in software, the software routine may be stored in any computer readable memory such as on a magnetic disk, a laser disk (such as a compact disk (CD), a digital versatile disk (DVD)), a flash memory, a memory card, a memory stick, etc., or other storage medium, in a RAM or ROM of a computer or processor, in any database, etc.
  • this software may be delivered via any known or desired delivery method including, for example, on a computer readable memory or other transportable computer storage mechanism or over a communication channel such as a telephone line, the internet, etc. (which are viewed as being the same as or interchangeable with providing such software via a transportable storage medium).

Abstract

In a method to help a user determine a formula, (e.g., a fact, rule, or principle expressed in scientific, mathematical, technical, etc. symbols), a user may input an indication of the formula in an imprecise syntax. The inputted indication may be in ASCII text, for example, and may include technical shorthand, technical abbreviations, pseudocode, etc. In response, one or more formulas corresponding to the user's input are determined. Optionally, other outputs related to the determined formula (s) may be generated. In one implementation, software programming code corresponding to the formula is generated. Then, the formula (s) and the output(s) are presented to the user.

Description

CROSS-REFERENCE TO RELATED APPLICATION
The present application is a continuation of and claims the benefit of U.S. patent application Ser. No. 11/852,044, now U.S. Pat. No. 8,589,869, filed Sep. 7, 2007, which claims the benefit of U.S. Provisional Application No. 60/842,756, filed on Sep. 7, 2006, both of which are entitled “METHODS AND SYSTEMS FOR DETERMINING A FORMULA.” Both of the applications referenced above are hereby incorporated by reference herein in their entireties for all purposes.
BACKGROUND
The MATHEMATICA® software system available from Wolfram Research, Inc. is a powerful computational tool that can evaluate general symbolic expressions, as well as mathematical and numeric expressions. MATHEMATICA® is an interpreted language, with a notion of “evaluation” of symbolic expressions. Evaluation consists in applying to any symbolic expression all transformation rules that fit that expression.
In the MATHEMATICA® software system, a user can create interactive electronic documents referred to as “notebooks.” Various expressions, including numeric and symbolic expressions, can be entered into a notebook via a keyboard, for example, and a user can cause the expression to be evaluated. As a simple example, a user could first set a function ƒ equal to x2 by typing “f=x^2” and then pressing “Enter” while holding down the “Shift” key (i.e., “hitting Shift-Enter”). Then, the user could have the MATHEMATICA® software system evaluate the integral of ƒwith respect to x by typing “integral[f,x]” and then hitting Shift-Enter. Of course, the MATHEMATICA® software system permits users to evaluate much more complex expressions and to analyze complex mathematical and scientific problems.
Input to the MATHEMATICA® software system must be in a particular syntax or MATHEMATICA® will not recognize what the user intended. For example, if a user wants to utilize a built-in function of the MATHEMATICA® software system, such as the function “integral”, the user must correctly type in the word “integral.” Additionally, the expression that is to be integrated must be included within brackets subsequent to the word “integral”. For example, to evaluate the integral of ƒwith respect to x, the text “integral[f,x]” must be typed. If the correct syntax is not followed exactly, the MATHEMATICA® software system will not recognize what the user had intended. For example, if a built-in function or a user-defined function is misspelled, MATHEMATICA® will not recognize that the user intended to use the function. Similarly, if a bracket, comma, parentheses, etc. is erroneously omitted or misplaced, MATHEMATICA® will not recognize what the user intended.
Various currently available on-line calculators utilize formulas to generate numerical results based on user-provided parameters. As an example, a website may provide a mortgage payment calculator that uses a mathematical formula to calculate a monthly mortgage payment based on various parameters such as a mortgage amount and an interest rate. A user can input values of the parameters by typing numbers into various text boxes on the web page. For example, the user can input a mortgage amount, an interest rate, number of years, etc. Then, the user can select a “Calculate” button on the web page to generate a mortgage payment, which is presented to the user via a different web page.
Search engines, such as Internet search engines, have been in use for some time. Such search engines permit the user to form a search query using combinations of keywords to search through a web page database containing text indices associated with one or more distinct web pages. The search engine looks for matches between the search query and text indices in the web page database, and then returns a number of hits which correspond to URL pointers and text excerpts from the web pages that represent the closest matches.
Some Internet search engines analyze the context of keywords in order to narrow the number of matches. For example, if a search query includes the words “yellow” and “pages,” a search engine may recognize that the phrase “yellow pages” has a particular meaning and it may therefore note that web pages including the phrase “yellow pages” may be a closer match than web pages merely containing the word “yellow” and/or the word “pages.”
Some application programs, for example, a word processor, may have a help tool that allows a user to enter a word or phrase and will display help topics containing that word or phrase, from which the user can make a selection.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a flow diagram of an example method for providing one or more formulas to a user based on an input that may be in an imprecise syntax;
FIG. 2 is a flow diagram of another example method for providing one or more formulas to a user based on an input that may be in an imprecise syntax;
FIG. 3A is an illustration of an example display that may be utilized in an implementation of the method of FIG. 1;
FIG. 3B is an illustration of the example display of FIG. 3A after the user has activated a button;
FIG. 4 is an illustration of another example display that may be utilized in an implementation of the method of FIG. 1;
FIG. 5 is a flow diagram of yet another example method for providing one or more formulas to a user based on an input that may be in an imprecise syntax;
FIG. 6 is an illustration of an example display that may be utilized in an implementation of the method of FIG. 5;
FIG. 7 is a flow diagram of still another example method for providing one or more formulas to a user based on an input that may be in an imprecise syntax;
FIG. 8 is an illustration of an example display that may be utilized in an implementation of the method of FIG. 7;
FIG. 9 is an illustration of another example display that may be utilized in an implementation of the method of FIG. 7;
FIG. 10 is a flow diagram of yet another example method for providing one or more formulas to a user based on an input that may be in an imprecise syntax;
FIG. 11 is a block diagram of an example system for providing one or more formulas to a user based on an input that may be in an imprecise syntax;
FIG. 12 is a flow diagram of another example method for providing one or more formulas to a user based on an input that may be in an imprecise syntax;
FIG. 13 is an illustration of another example display that may be utilized in an implementation of the method of FIG. 1;
FIG. 14 is an illustration of yet another example display that may be utilized in an implementation of the method of FIG. 1;
FIG. 15 is an illustration of still another example display that may be utilized in an implementation of the method of FIG. 1;
FIG. 16 is an illustration of yet another example display that may be utilized in an implementation of the method of FIG. 1;
FIG. 17 is an illustration of still another example display that may be utilized in an implementation of the method of FIG. 1;
FIG. 18 is an illustration of another example display that may be utilized in an implementation of the method of FIG. 1; and
FIG. 19 is an illustration of yet another example display that may be utilized in an implementation of the method of FIG. 1.
DETAILED DESCRIPTION
Generally speaking, the example methods and systems described herein may help a user to determine a particular formula when the details of the formula are not known to the user. Also, even if the particular formula is known to the user, the example methods and systems may output a formula in a particular syntax in response to the user merely providing a short-hand and/or pseudocode version of the formula. This may be useful if the formula is particularly long or complex and would be time-consuming for the user to write or type, or enter into a document using an equation editor, for example. Thus, a user could enter a relatively small amount of ASCII text, for example, and, in response, a complex equation, formula, etc., including mathematical or scientific symbols could be returned. The ASCII text could include technical shorthand or abbreviations, for example.
A formula, as the term is used herein, may comprise a fact, rule, or principle expressed in scientific, mathematical, or technical symbols, for example. A formula may be a scientific or mathematical formula. An example of a mathematical formula is a mathematical expression defining the area of a triangle based on the lengths of the triangle's sides. A user could enter as an input to a system described herein the text “area of a triangle,” and the system may return a formula for determining the area of a triangle based on the lengths of the triangle's sides. Additionally, the system may return a formula for determining the area of a triangle based on the lengths of two sides and the angle between the sides. Also, the system may return a formula for determining the area of a triangle based on the base and height of the triangle. Further, the system may generate and return other information related to the formula (s). For example, it may generate and return a plot of the formula, an integral of the formula, a derivative of the formula, etc. An example of a scientific formula may be a chemical formula.
A formula also may be an expression in a precise syntax, such as a software programming language statement, a database query, etc.
FIG. 1 is a flow diagram of an example method 100 for providing one or more formulas to a user based on an input that may be in an imprecise syntax. An imprecise syntax is in contrast to a typical computer programming language syntax, in which exact spelling, exact placement of punctuation, exact placement of parentheses, etc. is necessary to specify a particular formula. Similarly, with typical computer programming language syntax, a slight change in punctuation, for example, could specify a completely different formula or could render a computer language statement meaningless to a compiler. On the other hand, with an imprecise syntax, a formula can be expressed using language and terms that may be readily understandable to a human, but unintelligible to a computer program such as a compiler. Additionally, with an imprecise syntax, many different variations of language and terms and groupings of language and terms may correspond to one formula. As will be described below, the method 100 may permit a user to obtain precise formulas by inputting names or descriptions of the formulas in text, inputting pseudo code, inputting incorrectly expressed computer language statements, etc.
The method 100 could be implemented, at least partially, by a server system in conjunction with a website, for example. In this context, a user could access the website using a browser running on a personal computer, cell phone, personal digital assistant (PDA), etc., for example, and could utilize the website to obtain formulas and/or outputs related to the formulas. It will be understood, however, that the method 100 could also be used in other contexts. For example, the method 100 could be implemented, at least partially, as part of a “Help” system of a software application such as a computational tool. In such a context, the user could use the “Help” system to obtain formulas and/or outputs related to the formulas.
At a block 104, user input in an imprecise syntax may be received, the input including an indication of a formula. For example, a user may input the text “area of a triangle” into an input field of a web page, a “Help” screen, etc. This entered text may be received, for example, by a web site server system via the Internet, another computer communicatively coupled to the user's computer via a network, an application running on the user's computer, etc. The user input may also include indications of values of parameters to be used in the formula. For example, a user may input the text “area of a triangle length of sides 3, 4, 5”.
At a block 108, one or more possible formulas corresponding to the received indication of the formula may be determined. Because the syntax of the received indication is imprecise, there may be multiple formulas that possibly may correspond to the indication. Additionally, there may exist multiple formulas for determining the same desired result. For example, if the received input includes the text “area of a triangle,” there are multiple formulas for determining the area of a triangle such as:
Area=½*base*height  (Equ. 1)
Area=½*A*B*sin(α)  (Equ. 2)
where A is the length of a first side, B is the length of a second side, and α is the angle between the first and second sides, and
Area=√{square root over (s(s−A)(s−B)(s−C))}{square root over (s(s−A)(s−B)(s−C))}{square root over (s(s−A)(s−B)(s−C))}  (Equ. 3)
where
s = A + B + C 2 ( Equ . 4 )
Because the syntax of the indicator may be imprecise and/or because there may exist multiple formulas for determining one desired result, it is possible that a relatively large number of possible formulas and/or formulas not likely to be relevant may be determined at the block 108. Thus, optionally, formulas that are less likely to be relevant than others may be omitted or eliminated. For example, a ranking procedure may be utilized to determine which formulas are not likely to be relevant and which formulas should be omitted or eliminated.
For certain inputs of the user, a process or system that implements the block 108 may be unable to determine a formula based on the data received at the block 104. Additionally, it may be determined that the number of possible formulas is high, and additional information may help reduce the number. Thus, in some implementations, the user may be prompted for additional information that may help to determine formula or formulas. For example, if the data received at the block 104 is ambiguous as to the formula or formulas it may indicate, the user may be prompted to provide additional information to help clear up or reduce the ambiguity. For instance the user could be prompted to input additional text, to select one or possibly a plurality of items from a list, to answer one or more yes or no or multiple choice questions, etc. As yet another example, the user could be prompted to talk with a human operator, via telephone, email, instant messaging, for example, to ascertain the formula that the user was trying to indicate. The human operator could then provide additional information to the process or system or configure the process or system to interpret such an input and/or similar inputs in the future. Alternatively, if the process or system that implements the block 108 is unable to determine a formula based on the data received at the block 104, the user may be so notified and the method 100 may terminate.
At a block 112, one or more outputs corresponding to the one or more formulas determined at the block 108 may be generated. For example, if the user input received at the block 104 includes indications of parameters, an output of the formula having the parameters integrated therein may be generated. For example, if the user entered the text “area of a triangle length of sides 3, 4, 5,” an output such as an output showing the side lengths inserted in Equations 3 and 4 could be generated. Also, if the user has entered enough parameters to compute a numerical result, such a result may be generated.
Additionally, other types of outputs may be generated, including outputs mathematically or otherwise related to the formula. For example, for each formula, one or more or none of the following may optionally be generated: a derivative of the formula, an integral of the formula, roots of the formula, one or more plots of the formula or an evaluation of the formula, data related to the formula or an evaluation of the formula, etc. If multiple formulas were determined at the 108, such other outputs need not be generated for each formula. For instance, such other outputs could be generated for only the top one, two, three, etc., ranked formulas could be generated.
At a block 116, the formula (s) determined at the block 108 and the output(s) generated at the block 112 may be presented to the user. This may comprise transmitting the information from a web site server system to the user's computer via the Internet, transmitting the information from a computer to the user's computer via a network, etc. If the information is transmitted to the user's computer via the Internet, presenting the information may include displaying a web page to the user. If other blocks of the method 100 are implemented using software executed by the user's computer, presenting the information need not comprise transmitting information via a network. For instance, the blocks 108 and 112 could be implemented on the user's computer, and the formula (s) determined at the block 108 and the output(s) generated at the block 112 could be displayed in a window without having to first transmit the formula (s) and the output(s) to the user's computer.
FIG. 2 is a flow diagram of another example method 130 for providing one or more formulas to a user based on an input that may be in an imprecise syntax. The method 130 includes the same blocks 104, 108, 112, and 116 as in the method 100 of FIG. 1. Similar to the method 100 of FIG. 1, in some implementations, the user also may be prompted for additional information that may help to determine formula or formulas. Additionally, the method 130 includes a block 134, at which software programming code for generating one or more of the formula (s) (block 108) and/or one or more of the output(s) (block 112) is presented to the user. The software programming code could be presented in a web page or a window, for example. The software programming code could be presented in the same web page or window used to present the formula (s) and the output(s) at the block 116.
The software programming code could comprise commands in any of a variety of computer programming languages. For example, the software programming code could comprise code that is to be compiled, such as C programming language code, C++ programming language code, C# programming language code, etc. Also, the software programming code could comprise code that is to be interpreted. Additionally, the software programming code could comprise code to be used in a computational tool such as a spreadsheet application, the MATHEMATICA® software system available from Wolfram Research, Inc., etc. Other types of software programming code could include Java programming language code, Visual Basic programming language code, etc.
In one implementation, presenting the software programming code may comprise providing a mechanism for inserting the code in a file. For instance, the web page, window, etc., in which the code is presented could include a button or some other mechanism by which the code could be inserted in a source code file, a notebook, a spreadsheet, etc. For example, when the mechanism is activated, the code could be inserted at the end of a file, at a position of a cursor, at a position of a selected spreadsheet cell or cells, etc.
FIG. 3A is an illustration of an example display 150 that may be utilized in an implementation of the method 100 of FIG. 1. The example display 150 is configured to permit a user to enter an input that includes an indication of a formula. As describe previously, the input may be in an imprecise syntax. The display 150 may be part of a web page, window, etc., for example.
The display 150 includes a field 154 in which a user may type text. In the illustration of FIG. 3A, a user has typed the text “X SQUARED” into the field 154. The display 150 also includes a button 158 that a user may activate to initiate a determination of the formula corresponding to the text in the field 154. In the illustration of FIG. 3A, the formula corresponding to the text is simply the symbolic expression x2.
FIG. 3B is an illustration of the example display 150 after the user has activated the button 158. In particular, the display 150 is now modified to include a portion 162 which includes several fields 166, 170. 174, 178, 182, and 186. The field 166 displays the formula (i.e., the symbolic expression x2) determined based on the text entered into the field 154.
The portion 162 of the display 150 also includes other outputs that are mathematically related to the formula. For example, the field 170 includes a plot of x2. The field 174 includes the real roots of x2. The field 178 includes the derivative of x2, and the field 182 includes the indefinite integral of x2. Also, the field includes the global minimum of x2.
FIG. 4 is an illustration of another example display 200 that may be utilized in an implementation of the method 100 of FIG. 1. Similar to the display 150 of FIGS. 3A and 3B, the display 200 includes an input field 204 and a button 208. In the illustration of FIG. 4, a user has entered the text “RATE REACTION, POTASSIUM PERSULFATE, POTASSIUM IODIDE” into the field 204. Also, the display 200 includes a portion 212 that was generated in response to the user entering the text in the field 204 and activating the button 208.
The portion 212 includes several fields 216, 220, 224, and 228. The field 216 includes an indication of the formula that was determined based on the text provided by the user in the field 204. The field 220 displays a chemical reaction formula that is related to the formula determined based on the text in the field 204. In particular, the field 220 displays the chemical reaction formula of persulfate (S2O8 2−) reacting with iodide (2F) to produce sulfate (SO4 2−) and iodine (I2). The field 224 displays the rate of reaction formula, and the field 228 displays a different mathematical form of the rate of reaction formula.
Referring again to FIGS. 1 and 2, the formulas to be determined may be from a variety of fields such as mathematics, chemistry, physics, finance, engineering, medicine, etc. In some implementations, a single system that implements a method such as the method 100, the method 130, or some other method, may be configured to determine formulas from a plurality of fields. In other implementations, a system may be configured to determine formulas from only one field. For example, a system may be configured to determine finance-related formulas, whereas a different system may be configured to determine physics-related formulas.
FIG. 5 is a flow diagram of yet another example method 240 for providing one or more formulas to a user based on an input that may be in an imprecise syntax. The method 240 includes the same blocks 104 and 108 as in the methods 100 and 130 of FIGS. 1 and 2. Similar to the method 100 of FIG. 1, in some implementations, the user also may be prompted for additional information that may help to determine formula or formulas.
Additionally, the method 240 includes a block 244, at which one or more outputs corresponding to the one or more formulas determined at the block 108 may be generated, the one or more output including one or more outputs having user-adjustable parameters. Referring now to FIG. 6, an illustration of an example display 250 that may be utilized in an implementation of the method 240 of FIG. 5 is provided. Similar to the display 150 of FIGS. 3A and 3B, and the display 200 of FIG. 4, the display 250 includes an input field 254 and a button 258. In the illustration of FIG. 6, a user has entered the text “AREA OF A TRIANGLE” into the field 254. Also, the display 250 includes a portion 262 that was generated in response to the user entering the text in the field 254 and activating the button 258.
The portion 262 includes several fields 266, 268, and 270. The field 266 includes an indication of the formula (s) that was determined based on the text provided by the user in the field 254. The field 268 includes an indication 272 of a first formula for determining the area of a triangle based on a base length (A) and a height (H). In particular, the field 268 displays the formula AREA=½*A*H. The field 268 also includes a plurality of user interface mechanisms for permitting the user to adjust parameters of the formula 272. For example, the field 268 includes a text box 274 in which a user can enter a value of A, a text box 276 in which a user can enter a value of H, and a button 278 by which the user can cause a numerical value of the AREA to be calculated. After activating the button 278, a value of the AREA may be displayed in a portion 280. Although the example display 250 includes text boxes for entering parameter values, other user interface mechanisms may be used such as sliders, knobs, pull-down menus, buttons, etc. Similarly, although the example display 250 includes a button 278 for causing a result to be calculated, other techniques may be utilized. For example, the result could be calculated in response to text being entered in a text box or a slider being moved, for example. The user adjustable parameter and result calculation functionality of the display 250 may be implemented using a variety of techniques. For example, if the display 150 is part of a web page, applets or some other suitable technique may be utilized such as client-side or server-side controls (e.g., Active Server Page (ASP) technology available from Microsoft®, common gateway interface (CGI) technology, Fast CGI, Java Server Page technology, hyper text markup language (HTML) controls, ActiveX controls, Web Form controls available from Microsoft®, java controls, etc.). Additionally, techniques such as described in U.S. patent application Ser. No. 11/234,550, filed Sep. 23, 2005, entitled “Method of Dynamically Linking Objects Operated on by a Computational System,” which is hereby incorporated by reference, may optionally be utilized to implement the user adjustable parameter functionality of the display 250.
The field 270 includes an indication 282 of a second formula for determining the area of a triangle based on a first side length (A), a second side length (B), and an angle (a) between the first and second sides. In particular, the field 270 displays the formula AREA=½*A*B*SIN(α). The field 270 also includes a plurality of user interface mechanisms for permitting the user to adjust parameters of the formula 282. For example, the field 270 includes a text box 284 in which a user can enter a value of A, a text box 286 in which a user can enter a value of b, a text box 288 in which a user can enter a value of a, and a button 290 by which the user can cause a numerical value of the AREA to be calculated. After activating the button 290, a value of the AREA may be displayed in a portion 292.
Referring again to FIG. 5, the block 244 may also comprise generating outputs similar to those described above with respect to the block 112 of FIG. 1.
At a block 248, the formula (s) determined at the block 108 and the output(s) generated at the block 244 may be presented to the user. This may comprise transmitting the information from a web site server system to the user's computer via the Internet, transmitting the information from a computer to the user's computer via a network, etc. If the information is transmitted to the user's computer via the Internet, presenting the information may include displaying a web page to the user. If other blocks of the method 240 are implemented using software executed by the user's computer, presenting the information need not comprise transmitting information via a network. For instance, the blocks 108 and 244 could be implemented on the user's computer, and the formula (s) determined at the block 108 and the output(s) generated at the block 244 could be displayed in a window without having to first transmit the formula (s) and the output(s) to the user's computer.
Optionally, the method 240 may also comprise presenting to the user software programming code for generating one or more of the formula (s) (block 108) and/or one or more of the output(s) (block 244). The software programming code could be presented in a web page or a window, for example. The software programming code could be presented in the same web page or window used to present the formula (s) and the output(s) at the block 248. The software programming code could comprise commands in any of a variety of computer programming languages, such as the programming languages described above with reference to FIG. 2.
In one implementation, presenting the software programming code may comprise providing a mechanism for inserting the code in a file. For instance, the web page, window, etc., in which the code is presented could include a button or some other mechanism by which the code could be inserted in a source code file, a notebook, a spreadsheet, etc. For example, when the mechanism is activated, the code could be inserted at the end of a file, at a position of a cursor, at a position of a selected spreadsheet cell or cells, etc.
FIG. 7 is a flow diagram of still another example method 300 for providing one or more formulas to a user based on an input that may be in an imprecise syntax. At a block 304, user input in an imprecise syntax may be received, the input including an indication of a formula and also including indication(s) of one or more parameter values related to the formula. The method may include a block 308, similar to the block 108 of FIG. 1, at which one or more formulas corresponding to the indication of the formula received at the block 304 are determined. Similar to the method 100 of FIG. 1, in some implementations, the user also may be prompted for additional information that may help to determine formula or formulas.
Additionally, the method 300 includes a block 312, at which one or more outputs corresponding to the one or more formulas determined at the block 308 may be generated. The output(s) may include one or more outputs in which parameter values corresponding to the parameter value indications received at the block 304 are integrated with at least some of the one or more formulas determined at the block 308. Referring now to FIG. 8, an illustration of an example display 330 that may be utilized in an implementation of the method 300 of FIG. 7 is provided. Similar to the display 150 of FIGS. 3A and 3B, and the display 200 of FIG. 4, the display 330 includes an input field 334 and a button 338. In the illustration of FIG. 8, a user has entered the text “AREA OF A TRIANGLE, SIDES 3, 4” into the field 334. Also, the display 330 includes a portion 342 that was generated in response to the user entering the text in the field 334 and activating the button 338.
The portion 342 includes several fields 346, 348, and 350. The field 346 includes an indication of the formula (s) that was determined based on the text provided by the user in the field 334. The field 348 includes an indication 352 of the formula for determining the area of a triangle with the parameter values indicated in the field 334 having been integrated into the formula.
Referring again to FIG. 7, the block 312 may also comprise generating outputs similar to those described above with respect to the block 112 of FIG. 1. Similarly, the block 312 may also comprise generating outputs similar to those described above with respect to the block 244 of FIG. 5. For instance, referring again to FIG. 8, the field 350 also includes a plurality of user interface mechanisms for permitting the user to adjust parameters of the formula. For example, the field 352 includes a text box 354 in which a user can enter a value of A, a text box 356 in which a user can enter a value of B, a field 358 in which a user can enter a value of a, and a button 360 by which the user can cause a numerical value of the AREA to be calculated. After activating the button 360, a value of the AREA may be displayed in a portion 362. Although the example display 330 includes text boxes for entering parameter values, other user interface mechanisms may be used such as sliders, knobs, pull-down menus, buttons, etc. Similarly, although the example display 330 includes a button 360 for causing a result to be calculated, other techniques may be utilized. For example, the result could be calculated in response to text being entered in a text box or a slider being moved, for example. The user adjustable parameter and result calculation functionality of the display 330 may be implemented using a variety of techniques such as those described above with respect to FIG. 6. In other implementations, the display 330 may permit a user to adjust fewer numbers of parameters as compared to the illustration in FIG. 8. For example, a user could be permitted to adjust the angle α, but not the sides A and B.
Referring again to FIG. 7, at a block 316, the formula (s) determined at the block 308 and the output(s) generated at the block 312 may be presented to the user. This may comprise transmitting the information from a web site server system to the user's computer via the Internet, transmitting the information from a computer to the user's computer via a network, etc. If the information is transmitted to the user's computer via the Internet, presenting the information may include displaying a web page to the user. If other blocks of the method 300 are implemented using software executed by the user's computer, presenting the information need not comprise transmitting information via a network. For instance, the blocks 308 and 312 could be implemented on the user's computer, and the formula (s) determined at the block 308 and the output(s) generated at the block 312 could be displayed in a window without having to first transmit the formula (s) and the output(s) to the user's computer.
Optionally, the method 300 may also comprise presenting to the user software programming code for generating one or more of the formula (s) (block 308) and/or one or more of the output(s) (block 312). The software programming code could be presented in a web page or a window, for example. The software programming code could be presented in the same web page or window used to present the formula (s) and the output(s) at the block 316. The software programming code could comprise commands in any of a variety of computer programming languages, such as the programming languages described above with reference to FIG. 2.
In one implementation, presenting the software programming code may comprise providing a mechanism for inserting the code in a file. For instance, the web page, window, etc., in which the code is presented could include a button or some other mechanism by which the code could be inserted in a source code file, a notebook, a spreadsheet, etc. For example, when the mechanism is activated, the code could be inserted at the end of a file, at a position of a cursor, at a position of a selected spreadsheet cell or cells, etc.
FIG. 9 is an illustration of another example display 370 that may be utilized in an implementation of the method 300 of FIG. 7. Similar to the display 150 of FIGS. 3A and 3B, and the display 200 of FIG. 4, the display 370 includes an input field 374 and a button 378. In the illustration of FIG. 9, a user has entered the text “AREA OF A TRIANGLE, SIDES 3, 4, 5” into the field 374. Also, the display 330 includes a portion 382 that was generated in response to the user entering the text in the field 374 and activating the button 378. The portion 382 includes an indication of a formula for determining the area of a triangle with the parameter values indicated in the field 374 having been integrated into the formula.
FIG. 10 is a flow diagram of yet another example method 400 for providing one or more formulas to a user based on an input that may be in an imprecise syntax. The method 400 may be used to assist a programmer in developing software programming code, for example. At a block 404, user input may be received, the input including an indication of software programming code. The indication may include one or more of pseudo code, software programming code having an incorrect syntax, or software programming code having a correct syntax, etc. In some implementations, the indication may include two or more of pseudo code, software programming code in an incorrect syntax, or software programming code in a correct syntax. For example, the user input could be a mixture of pseudocode and software programming code in one or more languages. Additionally, the software programming code could include code in a mixture of correct and incorrect syntax.
At a block 408, software programming code having a precise syntax corresponding to the indication received at the block 404 may be determined. This may comprise, for example, determining software programming code having a precise syntax corresponding to pseudo code entered in the block 404, determining software programming code having a precise syntax corresponding to software programming code having an incorrect syntax entered in the block 404, determining different software programming code in a precise syntax corresponding to software programming code having the correct syntax entered in the block 404 (e.g., more efficient software programming code, code in a different software programming language, etc.), etc. Similar to the method 100 of FIG. 1, in some implementations, the user also may be prompted for additional information that may help to determine the software programming code.
The block 408 may include determining multiple sets of software programming code having precise syntax. For example, there might be multiple interpretations of the input received at the block 404, and the multiple sets of software programming code may be in the same programming language and may correspond to the multiple interpretations. For instance, different sets of code may correspond to different algorithms, the same algorithm with different initial conditions or other parameters, etc. As another example, the multiple sets of software programming code may correspond to different implementations in the same programming language of essentially the same algorithm. As yet another example, the multiple sets of software programming code may correspond to different implementations in different programming languages.
If multiple sets of software programming code are determined at the block 408, the block 408 optionally may include evaluating the multiple sets to eliminate sets and/or rank sets. For example, sets may be evaluated for code size, memory use efficiency, etc. Also, code sets that result in unwanted operations such as a “divide-by-zero”, an infinite loop, etc., may be eliminated.
At a block 412, the software programming code (or multiple sets) determined at the block 408 may be presented to the user. The software programming code could be presented in a web page or a window, for example. The software programming code could be presented in the same web page or window used to present the formula (s) and the output(s) at the block 316. The software programming code could comprise commands in any of a variety of computer programming languages, such as the programming languages described above with reference to FIG. 2.
In one implementation, presenting the software programming code may comprise providing a mechanism for inserting the code in a file. For instance, the web page, window, etc., in which the code is presented could include a button or some other mechanism by which the code could be inserted in a source code file, a notebook, a spreadsheet, etc. For example, when the mechanism is activated, the code could be inserted at the end of a file, at a position of a cursor, at a position of a selected spreadsheet cell or cells, etc.
In one implementation, the example method 400 could be used to assist a user in developing code in a particular software programming language. For example, the method 400 could allow a user to enter code in a first software programming language or in a mixture of first software programming languages, and receive code in a second software programming language to implement what is generally specified by the code entered by the user.
With regard to the example methods of FIGS. 1, 2, 5, 7 and 10, it will be understood by those of ordinary skill in the art that if implemented in a web-based or distributed system, they may be implemented with multiple server systems. For example, a first server system may provide web pages to allow a user to input data indicative of a formula. The first server system may then transmit the input to a second server system that may determine a formula, software programming code, related outputs, etc., as described above. The second server system may then transmit display data and/or other outputs it generates back to the first server system, and the first server system may in turn transmit the display data/outputs to the user computer. Such an implementation may be appropriate for enhancing the capabilities of a standard web-based search engine implemented by the first server system, for example.
Also, in some implementations, presentation of the formula may be omitted. For example, only evaluations of the formula and/or related outputs may be presented to the user. In some of these implementations, the user input optionally could be required to be input in a precise syntax. Multiple outputs corresponding to the formula could be determined and presented including outputs such as one or more evaluations of the formula, one or more outputs that are mathematically or otherwise related to the formula, etc.
FIG. 11 is a block diagram of an example system 500 that may be used to implement one or more of the example methods described previously. Of course other systems may also be used to implement those methods. The system 500 may include an input process 502 for receiving data from a user. The system 500 may be a stand-alone executable application with its own user interface. Also, the system 500 could be an added feature or subsystem of a larger application such as a computational application (e.g., the MATHEMATICA® software system available from Wolfram Research, Inc., a spreadsheet application, etc.). For example, the system 500 could be part of a “help” subsystem within a larger application. Additionally, the system 500 could be an applet accessed via a website, for example. Further, the system 500 may also be implemented as a Web service with a Web browser implementing the user interface in a known manner For example, the system 500 could be browser plug-in or toolbar system. The input process 502 may receive input in an imprecise syntax. The input process 502 may also provide elementary error and consistency checking, for example, to help ensure that at least some characters are present or prompting the user with an error when a length limit is exceeded.
The system 500 may also include a parser 504 communicatively coupled to the input process 502. The parser 504 may examine the input to extract keywords, group words into phrases, identify numerical expressions, categorize data, etc., for example. The parser 504 may perform an initial go/no go analysis on the keywords, phrases, or numerical expressions to determine if there is enough information to proceed to a further step. When there is not enough information to make even a cursory pass at further analysis, the parser 504 may cause the user to be prompted for additional information such as information that may clarify the formula desired by the user. Alternatively, the system 500 may return the input unchanged along with a message that it cannot interpret the input.
In one implementation, the parser 504 may take an initial input and create tokens, and then assemble the tokens into one or more expressions in a precise syntax. In other words, the parser 504 may generally take input data in an imprecise syntax and generate expressions in a precise syntax. As an example, if a user enters the text “sin [x]<0.5”, the parser 504 may create a plurality of tokens: “sin”, “[x]”, “<”, and “0.5”, where “sin” is recognized as a function name, “[x]” is recognized as a variable name, “<” is recognized as an inequality, and “0.5” is recognized as a real number. Then, the parser 504 may generate an expression in a precise syntax using these tokens.
Optionally, the parser 504 may perform additional processing. For example, the parser may attempt to identify phrases. Additionally, the parser 504 may attempt to rearrange tokens to see if the rearrangements match something that the parser 504 understands, such as a phrase. For instance, the parser 504 may utilize algorithmic rearrangements of the input. Also, the parser 504 may cause the user to be prompted to rephrase the input. Then, the parser 504 may analyze the original input in conjunction with the rephrased input. Further, the parser 504 may utilize machine learning techniques to identify language processing algorithms that work better than others.
The one or more expressions generated by the parser 504 may be provided to one or more scanners 506, 510, and 514 that may each have a particular focus. For example, scanner A 506 may be directed to developing a graphical plot for numerical expressions or phrases parsed from the input that can be reduced to a plot. As an example, if an input includes an expression, such as x2, scanner A 506 may develop and output a plot of x2 (i.e., a parabola). As another example, if the expression is Sin [x]<0.5, scanner A 506 may develop and output a plot of values of x that satisfy this expression. Other scanners may have other specific specializations, such as evaluating equations, determining roots, evaluating integrals, evaluating derivatives, determining relevant transforms, etc. Other specializations may include, for example, determining mathematical formulas, determining chemical formulas, determining physics formulas, determining financial formulas, determining engineering formulas, determining medical formulas, etc.
Still another specialization may include determining appropriate software programming language code (e.g., generating software programming language code). For instance, a scanner could receive data indicating a mathematical expression and generate software programming language code for evaluating the expression. As an example, a keyword or an expression related to ballistics may cause the scanner to generate software programming code for modeling the height of a projectile and code for modeling the distance of a projectile. In another example, input related to airflow over a wing may return code for modeling turbulent fluid flow over a surface or code for modeling lift and drag in a wing, or both.
Depending upon the application, more or less scanners may be utilized. For instance, if an application is to be devoted for use in a financial field, scanners related to chemical formulas may be omitted.
Some scanners may generate results based on a database query. For example, a scanner related to geometry formulas may query a database for keywords “area” and “triangle” for formulas related to those terms. As another example, a scanner may query a database for raw data needed to evaluate an expression. For instance, an expression may include c, the speed of light, and a scanner may query a database to retrieve a numerical value for c. As another example, an expression may require statistical data, such as a population of a particular city, state, or country needed to evaluate a “per capita” expression, and the scanner may query a statistical database to obtain the needed data.
Other scanners may generate results by synthesizing outputs. For example, a scanner for generating indefinite integrals may receive a mathematical expression and synthesize the indefinite integral of that expression, rather than searching a database of pre-generated indefinite integrals. Some scanners may be capable of doing database queries as well as synthesis of results. For example, the scanner related to geometry formulas may generate an expression for the area of a triangle based on a database query, but may also synthesize another expression by integrating parameter values into formulas retrieved from a database.
In addition to receiving data from the parser 504, each scanner may share results with each of the other scanners. Again, results generated by a scanner based on the shared results may also be shared with each of the other scanners, and so on. This process may continue until the scanners no longer have additional data to add, for example. Trivial transforms may also be recognized and blocked. When each scanner has contributed to both the original input from the parser 504 and shared input from all the other scanners, the results from each scanner to respective postprocessors 508, 512, and 516. The postprocessors 508, 512, 516 evaluate the results and may provide a ranking of each result by assigning a value (e.g., a percentage) to each result.
The ranked results may be passed to an output module 518 which may generate an output having the results with rankings above a certain threshold, while omitting results below the threshold. The threshold may be set at a predetermined level, or may be adjusted according to the number of results and a statistical analysis of the rankings For example, a query that produces ten thousand results may adjust the threshold to a 99% relevance, thereby limiting the displayed results to the top 100. In another example though, where perhaps only a half a dozen results are returned, all the results may be displayed even though the rankings may be relatively low. The output of the output module 518 may comprise a web page, a window, etc., having one or more formulas. Examples of web pages, windows, etc., that the output module 518 may generate are shown in FIGS. 3A, 3B, 4, 6, 8, 9. When the results include software programming code, the output module 518 may provide a linking function to insert the software programming code into a file such as a notebook in the MATHEMATICA® software system, a source code file, a spreadsheet, etc.
Particularly in a Web Services or comparable environment, scanners may be added or reconfigured based on user needs. For instance, feedback from users or an analysis of user queries may be utilized to add a scanner devoted to a new field (e.g., organic chemistry) or to add further formula data to an existing scanner. Similarly, scanners may be omitted or removed.
FIG. 12 is flow diagram of yet another example method 600 for providing one or more formulas to a user based on an input that may be in an imprecise syntax. The method 600 will be described with reference to FIG. 11 for ease of explanation. It will be understood, however, that the method 600 may be utilized with systems other than the system 500, and that the system 500 may implement methods other than the method 600.
Input in an imprecise syntax may be received at block 602 and then parsed at block 604 to process the input. For example, the input may be analyzed to create data in a formal or precise syntax. When the parser 504 is able to determine a sufficient amount of data to proceed, a ‘yes’ branch from a block 606 may be taken to a block 608. At the block 608, the parsed data (e.g., the output of the parser 504) may be distributed to each of the plurality of scanners 506, 510, 514. As described above, each scanner may examine the output of the parser 504 at the block 608 for areas of specific capability with respect to that scanner. When a scanner identifies data it can process, the scanner creates output specific to the input and then, at a block 610, the scanner may share its output with each of the other scanners. For example, the scanner 506 may create a mathematical expression and that mathematical expression may be delivered to scanners 510 and 514. Scanners 510 and 514 may be able to synthesize output based on the mathematical expression from scanner 506 that they were not able to process from the direct input from the parser 504. When each scanner can no longer synthesize meaningful output, the results may be passed to the output module 518 at a block 612. At the block 512, each output may be ranked in terms of relevance. Output elements of low relevance optionally may be discarded. At a block 614, output elements that were not discarded at the block 612 may be presented to the user. Output elements may be presented in rank order, or in the case of more common output elements, in a standard presentation format.
When the parser 504 cannot process the input, the ‘no’ branch from the block 606 may be taken to block 616 and the user may be prompted for more information. Alternatively, the user may be prompted that the input cannot be interpreted and the flow may return to the block 602 to receive a next input.
FIG. 13 is an illustration of another example display 700 that may be utilized in an implementation of a method such as the method 100 of FIG. 1. The example display 700 is configured to permit a user to enter an input that includes an indication of a formula. As describe previously, the input may be in an imprecise syntax. The display 700 may be part of a web page, window, etc., for example.
The display 700 includes a field 704 in which a user may type text. In the illustration of FIG. 13, a user has typed the text “int log x” into the field 704. The display 700 also includes a button 708 that a user may activate to initiate a determination of the formula corresponding to the text in the field 704. In the illustration of FIG. 13, a formula corresponding to the text is the symbolic expression ∫log(x)∂x. Thus, if the user activated button 708, the display 700 may display the determined formula in a portion 712.
FIG. 14 is an illustration of another example display 720 that may be utilized in an implementation of a method such as the method 100 of FIG. 1. The display 720 includes a field 724 in which a user may type text. In the illustration of FIG. 14, a user has typed the text “integral log x” into the field 724. The display 720 also includes a button 728 that a user may activate to initiate a determination of the formula corresponding to the text in the field 724. In the illustration of FIG. 14, a formula corresponding to the text is the symbolic expression ∫log(x)∂x. Thus, if the user activated button 728, the display 720 may display the determined formula in a portion 732.
FIG. 15 is an illustration of another example display 750 that may be utilized in an implementation of a method such as the method 100 of FIG. 1. The display 750 includes a field 754 in which a user may type text. In the illustration of FIG. 14, a user has typed the text “1492” into the field 754. The display 750 also includes a button 758 that a user may activate to initiate a determination of the formula corresponding to the text in the field 754. In the illustration of FIG. 15, a formula corresponding to the text is the number 1492. Thus, if the user activated button 758, the display 750 may display information related to the number 1492. For example, the display 750 may include various fields such as the field 762 which indicates the formula (e.g., the number 1492). Other fields 764, 766, 768, 770, 772, 774, and 776 provide information related to the number 1492.
FIG. 16 is an illustration of a portion of another example display 800 that may be utilized in an implementation of a method such as the method 100 of FIG. 1. The portion of the display 800 may be displayed in response to a user entering the text “3 4 5” and activating a button on the display 800. The determined formula is the sequences of numbers {3, 4, 5} and is displayed in a portion 802. The display 800 may display information related to the sequences of numbers {3, 4, 5}. For example, the display 800 may include various fields 804, 806, 808, 810, 812, 814, and 816 that provide information related to the sequences of numbers {3, 4, 5}.
FIG. 17 is an illustration of a portion of another example display 850 that may be utilized in an implementation of a method such as the method 100 of FIG. 1. The portion of the display 850 may be displayed in response to a user entering the text “gdp France/Germany” in a portion 852 and activating a button on the display 850. The determined formula is an expression in a precise syntax and is displayed in a portion 853. The display 850 may display information related to the determined expression. For example, the display 850 may include various fields 854, 856, 858 that provide information related to the expression in the field 853. The field 854 provides a more “user friendly” indication of the determined formula. The field 856 includes an evaluation of the formula with data obtained from a database, for example. The field 858 includes a plot of an evaluation of the formula using GDP values from several years.
FIG. 18 is an illustration of a portion of another example display 900 that may be utilized in an implementation of a method such as the method 100 of FIG. 1. The portion of the display 900 may be displayed in response to a user entering the text “a_a” in a field 902 and activating a button on the display 900. The determined formula is an expression in a precise syntax and is displayed in a portion 904. The display 900 may display information related to the determined expression. For example, the display 900 may include various fields 906 and 908 that provide information related to the expression in the field 904. The field 906 provides a more “user friendly” indication of the determined formula. The field 908 includes an evaluation of the formula with data obtained from a database, for example.
FIG. 19 is an illustration of a portion of another example display 950 that may be utilized in an implementation of a method such as the method 100 of FIG. 1. The portion of the display 900 may be displayed in response to a user entering the text “London” in a field 952 and activating a button on the display 950. The display 950 may display information related to the determined formula. For example, the display 950 may include various fields 954, 956, 958, 960, and 962 that provide information related to the determined formula. The field 954 provides a “user friendly” indication of the determined formula. The field 956 provides an alternative representation or indication of the determined formula. The field 958 includes data related to the formula and obtained from a database, for example. The field 960 includes a map indicating the location of London, Ontario, Canada. The field 962 includes location data for London, Ontario, Canada, obtained from a database, for example.
In the above-described methods and systems, the user input could be received in a variety of ways. For example, the user input could include text entered via a keyboard, a keypad, a touch screen, etc., of a device such as a workstation, a desktop computer, a laptop computer, a tablet computer, a personal digital assistant (PDA), a cellular phone, etc. The user input could be received in other forms as well. For example, the user input could be received via a voice recognition system. As another example, the user input could be received in a graphical form. For instance, handwriting recognition techniques could be used to convert the input into a textual form or some other form.
Also, a user could draw a plot of a function on a touch screen of a computer. Formulas to generate the plot, or an approximation of the plot, could be determined. As another example, a user could also draw notations or annotations on the plot, and these notations or annotations could be utilized to determine formulas and/or to format output to be presented to the user. For instance, if a user draws a plot and puts an “X” at the maximum of a curve, a formula for determining the maximum of the function corresponding to the plot could be determined. Additionally or alternatively, if a plot of the determined formula is presented to the user, the presented plot could include an “X” or a similar mark in a location corresponding to the location of the “X” drawn by the user.
Additionally, the input need not be received directly from a user. For example, the methods and systems described above could receive input from a file, or the input could be a signal generated by a device such as a sensor, a signal received by another computing device, etc. For instance, a file or signal could include data values, and a function, a model, etc., that best fits the data could be determined.
In presenting the formulas, outputs, software programming code, etc., to a user, such information may be presented in a way that allows it to be readily transferred to a file such as document. For instance, a formula could be presented as text so that it could be transferred to another document using standard “cut and paste” techniques. Alternatively, the formulas, outputs, software programming code could be presented along with a mechanism that would allow such information to be inserted into another document having a particular format such as a spreadsheet, a word processing document for use with a particular equation editor, a MATHEMATICA® notebook, etc. The mechanism could include a user interface mechanism such as a button, a drag-and-drop mechanism, etc. For example, a user could activate a button to have an equation inserted into a word processing document, the equation being in a format of a particular equation editor compatible with the word processing program.
Any of the techniques described above, including the blocks described with reference to FIGS. 1-16, may be implemented using software comprising computer program instructions. Such computer program instructions may control the operation of a computing device such as a desktop computer, a laptop computer, a tablet computer, a workstation, a server, a mainframe, a cellular phone, a telephone, a set top box, a PDA, a pager, a processing system of an electronic toy, a processing system of an electronic game, a processing system of a consumer electronics device, etc. The computing device may have a memory in which the computer program instructions may be stored. The computer program instructions may be written in any high level language such as the programming language used with MATHEMATICA® software systems, C, C++, C#, Java or the like or any low-level assembly or machine language. By storing computer program instructions in a memory of the computing device, the computing device is physically and/or structurally configured in accordance with the computer program instructions.
While many methods and systems have been described herein as being implementable in software, they may be implemented in hardware, firmware, etc., and may be implemented by a variety of computing systems and devices. Thus, the method blocks and system blocks described herein may be implemented in a standard multi-purpose central processing unit (CPU), a special purpose CPU, or on specifically designed hardware or firmware such as an application-specific integrated circuit (ASIC) or other hard-wired device as desired. When implemented in software, the software routine may be stored in any computer readable memory such as on a magnetic disk, a laser disk (such as a compact disk (CD), a digital versatile disk (DVD)), a flash memory, a memory card, a memory stick, etc., or other storage medium, in a RAM or ROM of a computer or processor, in any database, etc. Likewise, this software may be delivered via any known or desired delivery method including, for example, on a computer readable memory or other transportable computer storage mechanism or over a communication channel such as a telephone line, the internet, etc. (which are viewed as being the same as or interchangeable with providing such software via a transportable storage medium).
The present disclosure has been described with reference to specific examples, which are intended to be illustrative only and not to be limiting. It will be apparent to those of ordinary skill in the art that changes, additions or deletions may be made to the disclosed examples without departing from the spirit and scope of the disclosure. The detailed description is to be construed as exemplary only and does not describe every possibly embodiment of the invention because describing every possible embodiment would be impractical, if not impossible. Numerous alternative embodiments could be implemented, using either current technology or technology developed after the filing date of this patent, which would still fall within the scope of this application.
Thus, many modifications and variations may be made in the techniques and systems described and illustrated herein without departing from the spirit and scope of the present invention. Accordingly, it should be understood that the methods and systems described herein are illustrative only and are not limiting upon the scope of the invention.

Claims (33)

What is claimed is:
1. A computer-implemented method of determining an answer to a query, the computer-implemented method comprising:
receiving, at one or more computer processors, via a network, a user input in an imprecise syntax, wherein the user input in the imprecise syntax includes at least (i) a query requesting information determinable by a formula having a plurality of mathematical or scientific parameters, and (ii) one or more parameter values corresponding to the formula, and wherein the user input in the imprecise syntax is expressed using natural language and/or informal terminology provided by a user;
analyzing, at one or more computer processors, the user input in the imprecise syntax to determine the formula with the one or more parameter values integrated into the formula;
calculating, at one or more computer processors, an answer to the query using the determined formula with the one or more parameter values integrated into the formula; and
causing, at one or more computer processors, an indication of the answer, represented as electronic display information, to be transmitted via the network.
2. The computer-implemented method of claim 1, wherein analyzing the user input in the imprecise syntax to determine the formula with the one or more parameter values integrated into the formula comprises:
determining a plurality of possible formulas that correspond to the user input in the imprecise syntax; and
at least one of (i) ranking the plurality of possible formulas, and (ii) eliminating one or more possible formulas of the plurality of possible formulas.
3. The computer-implemented method of claim 1, further comprising generating, at one or more processors, an output that is (i) mathematically related to the formula and (ii) separate from the answer.
4. The computer-implemented method of claim 3, wherein generating the output comprises generating at least one of the group consisting of:
a derivative of the formula;
an integral of the formula;
one or more roots of the formula;
a plot of the formula; and
a plot of an evaluation of the formula.
5. The computer-implemented method of claim 3, further comprising analyzing, at one or more computer processors, the user input in the imprecise syntax to determine a correspondence between (i) the one or more parameter values in the user input in the imprecise syntax and (ii) one or more parameters of the formula.
6. The computer-implemented method of claim 1, wherein receiving the user input in the imprecise syntax comprises receiving a digital representation of a query spoken by the user.
7. The computer-implemented method of claim 1, wherein receiving the user input in the imprecise syntax comprises receiving an automated interpretation of a query spoken by the user.
8. The computer-implemented method of claim 1, wherein analyzing the user input in the imprecise syntax to determine the formula with the one or more parameter values integrated into the formula comprises:
analyzing the user input in the imprecise syntax to identify a first parameter corresponding to a first parameter value in the one or more parameter values; and
determining the formula based, at least in part, on the identified first parameter.
9. The computer-implemented method of claim 1, further comprising:
determining, at one or more processors, that one or more additional parameter values are required to calculate the answer; and
causing, at one or more processors, a request, represented as electronic information, for the one or more additional parameter values to be transmitted via the network.
10. The computer-implemented method of claim 1, wherein causing the indication of the answer to be transmitted via the network comprises causing the transmission of electronic display information via the network for displaying the answer on a user computer.
11. The computer-implemented method of claim 10, wherein transmitting the electronic display information comprises transmitting a user control for facilitating adjustment of one or more parameters of the formula.
12. The computer-implemented method of claim 1, further comprising:
dynamically generating, at one or more computer processors, software programming language code, in a precise syntax, for evaluating the formula; and
causing, at one or more computer processors, the software programming language code for evaluating the formula to be transmitted via the network.
13. The computer-implemented method of claim 1, further comprising:
identifying, at one or more computer processors, the formula from the user input in the imprecise syntax at least by parsing the user input in the imprecise syntax into a plurality of tokens, re-arranging the plurality of tokens into a plurality of expressions in a precise syntax, and analyzing the plurality of expressions in the precise syntax.
14. The computer-implemented method of claim 1, wherein analyzing the user input in the imprecise syntax to determine the formula with the one or more parameter values integrated into the formula comprises:
partitioning the user input in the imprecise syntax into a plurality of tokens, wherein each token of the plurality of tokens comprises a keyword, a phrase, or a numerical expression; and
generating one or more expressions in a precise syntax using the plurality of tokens, wherein each expression of the one or more expressions is associated with a corresponding category.
15. The computer-implemented method of claim 14, wherein analyzing the user input in the imprecise syntax to determine the formula with the one or more parameter values integrated into the formula further comprises:
providing the one or more expressions to one or more scanner modules to determine the formula according to the one or more expressions and the corresponding category.
16. The computer-implemented method of claim 15, wherein each of the one or more scanner modules is associated with one of a plurality of categories.
17. A system comprising:
a computing system having one or more processors communicatively coupled to a network, wherein the computing system is configured to receive, via the network, a user input in an imprecise syntax, wherein the user input in the imprecise syntax includes at least (i) a query requesting information determinable by a formula having a plurality of mathematical or scientific parameters, and (ii) one or more parameter values corresponding to the formula, and wherein the user input in the imprecise syntax is expressed using natural language and/or informal terminology provided by a user;
a first module executing on the computing system and configured to (i) generate, from the user input in the imprecise syntax, a plurality of tokens, and (ii) assemble the plurality of tokens into one or more expressions in a precise syntax;
one or more second modules executing on the computing system and configured to:
analyze the one or more expressions in the precise syntax to determine the formula with the one or more parameter values integrated into the formula, and
calculate an answer to the query using the determined formula with the one or more parameter values integrated into the formula; and
a third module executing on the computing system and configured to transmit, via the network, an indication of the answer, represented as electronic display information.
18. The system of claim 17, wherein the one or more second modules are configured to analyze the one or more expressions in the precise syntax to determine the formula with the one or more parameter values integrated into the formula by:
determining a plurality of possible formulas that correspond to the user input in the imprecise syntax; and
at least one of (i) ranking the plurality of possible formulas, and (ii) eliminating one or more possible formulas of the plurality of possible formulas.
19. The system of claim 17, wherein the one or more second modules are further configured to generate an output that is (i) mathematically related to the formula and (ii) separate from the answer.
20. The system of claim 19, wherein the one or more second modules are further configured to generate the output as at least one of the group consisting of:
a derivative of the formula;
an integral of the formula;
one or more roots of the formula;
a plot of the formula; and
a plot of an evaluation of the formula.
21. The system of claim 19, wherein the one or more second modules are further configured to analyze the user input in the imprecise syntax to determine a correspondence between (i) the one or more parameter values in the user input in the imprecise syntax and (ii) one or more parameters of the formula.
22. The system of claim 17, wherein the computing system of the one or more processors communicatively coupled to the network is configured to receive a digital representation of the query spoken by the user.
23. The system of claim 17, wherein the computing system of the one or more processors communicatively coupled to the network is configured to receive an automated interpretation of the query spoken by the user.
24. The system of claim 17, wherein the one or more second modules are configured to analyze the one or more expressions in the precise syntax to determine the formula with the one or more parameter values integrated into the formula by:
analyzing the user input in the imprecise syntax to identify a first parameter corresponding to a first parameter value in the one or more parameter values; and
determining the formula based, at least in part, on the identified first parameter.
25. The system of claim 17, wherein the third module is further configured to transmit information for displaying the answer on a user computer.
26. The system of claim 25, wherein the third module is further configured to transmit information for displaying a user control for facilitating adjustment of one or more parameters of the formula.
27. The system of claim 17, further comprising a fourth module executing on the computing system and configured to:
dynamically generate software programming language code, in a precise syntax, for evaluating the formula; and
cause the software programming language code for evaluating the formula to be transmitted via the network.
28. The system of claim 17, wherein the one or more second modules are further configured to determine the formula from the plurality of tokens according to one or more categories associated with each token of the plurality of tokens.
29. A non-transitory computer-readable storage medium storing instructions thereon and executable by one or more processors, the instructions comprising:
instructions to configure the one or more processors to receive, via a network, a user input in an imprecise syntax, wherein the user input in the imprecise syntax includes at least (i) a query requesting information determinable by a formula having a plurality of mathematical or scientific parameters, and (ii) one or more parameter values corresponding to the formula, and wherein the user input in the imprecise syntax is expressed using natural language and/or informal terminology provided by a user;
instructions to configure the one or more processors to analyze the user input in the imprecise syntax to determine the formula with the one or more parameter values integrated into the formula;
instructions to configure the one or more processors to calculate an answer to the query using the determined formula with the one or more parameter values integrated into the formula; and
instructions to configure the one or more processors to cause an indication of the answer, represented as electronic display information, to be transmitted via the network.
30. The non-transitory computer-readable storage medium of claim 29, wherein the instructions to configure the one or more processors to analyze the user input in the imprecise syntax to determine the formula comprise:
instructions to configure the one or more processors to determine a plurality of possible formulas that correspond to the user input in the imprecise syntax; and
instructions to configure the one or more processors to at least one of (i) rank the plurality of possible formulas, and (ii) eliminate one or more possible formulas of the plurality of possible formulas.
31. The non-transitory computer-readable storage medium of claim 29, further comprising instructions to configure the one or more processors to generate an output that is (i) mathematically related to the formula and (ii) separate from the answer.
32. The non-transitory computer-readable storage medium of claim 31, further comprising instructions to configure the one or more processors to analyze the user input in the imprecise syntax to determine a correspondence between (i) the one or more parameter values in the user input in the imprecise syntax and (ii) one or more parameters of the formula.
33. The non-transitory computer-readable storage medium of claim 29, wherein the instructions to configure the one or more processors to analyze the user input in the imprecise syntax to determine the formula with the one or more parameter values integrated into the formula comprise:
instructions to configure the one or more processors to analyze the user input in the imprecise syntax to identify a first parameter corresponding to a first parameter value in the one or more parameter values; and
instructions to configure the one or more processors to determine the formula based, at least in part, on the identified first parameter.
US14/082,581 2006-09-07 2013-11-18 Method and system for determining an answer to a query Active US8966439B2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US14/082,581 US8966439B2 (en) 2006-09-07 2013-11-18 Method and system for determining an answer to a query
US14/629,398 US9684721B2 (en) 2006-09-07 2015-02-23 Performing machine actions in response to voice input
US15/625,769 US10380201B2 (en) 2006-09-07 2017-06-16 Method and system for determining an answer to a query

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US84275606P 2006-09-07 2006-09-07
US11/852,044 US8589869B2 (en) 2006-09-07 2007-09-07 Methods and systems for determining a formula
US14/082,581 US8966439B2 (en) 2006-09-07 2013-11-18 Method and system for determining an answer to a query

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US11/852,044 Continuation US8589869B2 (en) 2006-09-07 2007-09-07 Methods and systems for determining a formula

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/629,398 Continuation US9684721B2 (en) 2006-09-07 2015-02-23 Performing machine actions in response to voice input

Publications (2)

Publication Number Publication Date
US20140075410A1 US20140075410A1 (en) 2014-03-13
US8966439B2 true US8966439B2 (en) 2015-02-24

Family

ID=39171258

Family Applications (4)

Application Number Title Priority Date Filing Date
US11/852,044 Active 2031-12-21 US8589869B2 (en) 2006-09-07 2007-09-07 Methods and systems for determining a formula
US14/082,581 Active US8966439B2 (en) 2006-09-07 2013-11-18 Method and system for determining an answer to a query
US14/629,398 Active 2027-12-09 US9684721B2 (en) 2006-09-07 2015-02-23 Performing machine actions in response to voice input
US15/625,769 Active 2027-09-16 US10380201B2 (en) 2006-09-07 2017-06-16 Method and system for determining an answer to a query

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US11/852,044 Active 2031-12-21 US8589869B2 (en) 2006-09-07 2007-09-07 Methods and systems for determining a formula

Family Applications After (2)

Application Number Title Priority Date Filing Date
US14/629,398 Active 2027-12-09 US9684721B2 (en) 2006-09-07 2015-02-23 Performing machine actions in response to voice input
US15/625,769 Active 2027-09-16 US10380201B2 (en) 2006-09-07 2017-06-16 Method and system for determining an answer to a query

Country Status (1)

Country Link
US (4) US8589869B2 (en)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150112971A1 (en) * 2013-10-17 2015-04-23 Wolfram Alpha Llc Method and system for providing answers to queries
US9262070B2 (en) 2013-03-15 2016-02-16 Wolfram Research, Inc. Positioning pads for moving a position of interest on a display
US9594737B2 (en) 2013-12-09 2017-03-14 Wolfram Alpha Llc Natural language-aided hypertext document authoring
US9684721B2 (en) 2006-09-07 2017-06-20 Wolfram Alpha Llc Performing machine actions in response to voice input
US9851950B2 (en) 2011-11-15 2017-12-26 Wolfram Alpha Llc Programming in a precise syntax using natural language
US10102276B2 (en) 2015-12-07 2018-10-16 International Business Machines Corporation Resolving textual numerical queries using natural language processing techniques
US11106668B2 (en) 2019-08-08 2021-08-31 Salesforce.Com, Inc. System and method for transformation of unstructured document tables into structured relational data tables
US11243948B2 (en) 2019-08-08 2022-02-08 Salesforce.Com, Inc. System and method for generating answers to natural language questions based on document tables
US11347733B2 (en) 2019-08-08 2022-05-31 Salesforce.Com, Inc. System and method for transforming unstructured numerical information into a structured format
US11461396B2 (en) 2020-07-08 2022-10-04 Tata Consultancy Services Limited System and method of extraction of information and graphical representation for design of formulated products

Families Citing this family (241)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8645137B2 (en) 2000-03-16 2014-02-04 Apple Inc. Fast, language-independent method for user authentication by voice
US8677377B2 (en) 2005-09-08 2014-03-18 Apple Inc. Method and apparatus for building an intelligent automated assistant
US20080255432A1 (en) * 2005-11-23 2008-10-16 Koninklijke Philips Electronics N. V. Patient Monitor with User-Defined Monitored Parameters
WO2007105759A1 (en) * 2006-03-15 2007-09-20 Osaka Industrial Promotion Organization Mathematical expression structured language object search system and search method
JP4661654B2 (en) * 2006-03-27 2011-03-30 カシオ計算機株式会社 Formula display control apparatus and formula display control program
US9318108B2 (en) 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US20080243823A1 (en) * 2007-03-28 2008-10-02 Elumindata, Inc. System and method for automatically generating information within an eletronic document
US8977255B2 (en) 2007-04-03 2015-03-10 Apple Inc. Method and system for operating a multi-function portable electronic device using voice-activation
US20090037386A1 (en) * 2007-08-03 2009-02-05 Dietmar Theobald Computer file processing
US8006175B2 (en) * 2007-10-29 2011-08-23 Microsoft Corporation Calculation of spreadsheet data
US8341512B2 (en) * 2007-10-31 2012-12-25 Microsoft Corporation Method for capturing design-time and run-time formulas associated with a cell
US10002189B2 (en) 2007-12-20 2018-06-19 Apple Inc. Method and apparatus for searching using an active ontology
US9330720B2 (en) 2008-01-03 2016-05-03 Apple Inc. Methods and apparatus for altering audio output signals
US20110302514A1 (en) * 2008-03-11 2011-12-08 Creative Information Technology Method for designing a graphical interface program
US8996376B2 (en) 2008-04-05 2015-03-31 Apple Inc. Intelligent text-to-speech conversion
US10496753B2 (en) 2010-01-18 2019-12-03 Apple Inc. Automatically adapting user interfaces for hands-free interaction
US20100030549A1 (en) 2008-07-31 2010-02-04 Lee Michael M Mobile device having human language translation capability with positional feedback
US8676904B2 (en) 2008-10-02 2014-03-18 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
US8578265B2 (en) * 2008-10-07 2013-11-05 Bigmachines, Inc. Methods and apparatus for generating a dynamic document
US9524506B2 (en) 2011-10-21 2016-12-20 Bigmachines, Inc. Methods and apparatus for maintaining business rules in a configuration system
US8805861B2 (en) * 2008-12-09 2014-08-12 Google Inc. Methods and systems to train models to extract and integrate information from data sources
US20100281429A1 (en) * 2009-04-30 2010-11-04 Bigmachines, Inc. Methods and apparatus for configuring a product using an array of configuration sets
US8788524B1 (en) * 2009-05-15 2014-07-22 Wolfram Alpha Llc Method and system for responding to queries in an imprecise syntax
US8601015B1 (en) * 2009-05-15 2013-12-03 Wolfram Alpha Llc Dynamic example generation for queries
US10241644B2 (en) 2011-06-03 2019-03-26 Apple Inc. Actionable reminder entries
US10255566B2 (en) 2011-06-03 2019-04-09 Apple Inc. Generating and processing task items that represent tasks to perform
US9858925B2 (en) 2009-06-05 2018-01-02 Apple Inc. Using context information to facilitate processing of commands in a virtual assistant
US10241752B2 (en) 2011-09-30 2019-03-26 Apple Inc. Interface for a virtual digital assistant
US8756229B2 (en) * 2009-06-26 2014-06-17 Quantifind, Inc. System and methods for units-based numeric information retrieval
US9431006B2 (en) 2009-07-02 2016-08-30 Apple Inc. Methods and apparatuses for automatic speech recognition
US8121618B2 (en) 2009-10-28 2012-02-21 Digimarc Corporation Intuitive computing methods and systems
US8175617B2 (en) 2009-10-28 2012-05-08 Digimarc Corporation Sensor-based mobile search, related methods and systems
US10705794B2 (en) 2010-01-18 2020-07-07 Apple Inc. Automatically adapting user interfaces for hands-free interaction
US10276170B2 (en) 2010-01-18 2019-04-30 Apple Inc. Intelligent automated assistant
US10679605B2 (en) 2010-01-18 2020-06-09 Apple Inc. Hands-free list-reading by intelligent automated assistant
US10553209B2 (en) 2010-01-18 2020-02-04 Apple Inc. Systems and methods for hands-free notification summaries
WO2011089450A2 (en) 2010-01-25 2011-07-28 Andrew Peter Nelson Jerram Apparatuses, methods and systems for a digital conversation management platform
KR101118819B1 (en) * 2010-02-08 2012-03-20 김준홍 Recording medium for recording compiler supporting symbol and mathematical expression
US8682667B2 (en) 2010-02-25 2014-03-25 Apple Inc. User profiling for selecting user specific voice input processing information
US8484015B1 (en) 2010-05-14 2013-07-09 Wolfram Alpha Llc Entity pages
US8812298B1 (en) 2010-07-28 2014-08-19 Wolfram Alpha Llc Macro replacement of natural language input
WO2012074338A2 (en) * 2010-12-02 2012-06-07 에스케이텔레콤 주식회사 Natural language and mathematical formula processing method and device therefor
US9262612B2 (en) 2011-03-21 2016-02-16 Apple Inc. Device access using voice authentication
US10057736B2 (en) 2011-06-03 2018-08-21 Apple Inc. Active transport based notifications
US20120331023A1 (en) * 2011-06-24 2012-12-27 Inkling Systems, Inc. Interactive exhibits
JP5772331B2 (en) * 2011-07-20 2015-09-02 カシオ計算機株式会社 Learning apparatus and program
US9003316B2 (en) * 2011-07-25 2015-04-07 Microsoft Technology Licensing, Llc Entering technical formulas
US9069814B2 (en) 2011-07-27 2015-06-30 Wolfram Alpha Llc Method and system for using natural language to generate widgets
US8994660B2 (en) 2011-08-29 2015-03-31 Apple Inc. Text correction processing
US9734252B2 (en) 2011-09-08 2017-08-15 Wolfram Alpha Llc Method and system for analyzing data using a query answering system
US8826153B2 (en) * 2011-10-04 2014-09-02 Google Inc. Speculative actions based on user dwell time over selectable content
US9934218B2 (en) * 2011-12-05 2018-04-03 Infosys Limited Systems and methods for extracting attributes from text content
US10134385B2 (en) 2012-03-02 2018-11-20 Apple Inc. Systems and methods for name pronunciation
US9483461B2 (en) 2012-03-06 2016-11-01 Apple Inc. Handling speech synthesis of content for multiple languages
US10656703B2 (en) * 2012-05-10 2020-05-19 Wolfram Alpha Llc Visual display techniques for mitigating latency
US9280610B2 (en) 2012-05-14 2016-03-08 Apple Inc. Crowd sourcing information to fulfill user requests
US10417037B2 (en) 2012-05-15 2019-09-17 Apple Inc. Systems and methods for integrating third party services with a digital assistant
US9721563B2 (en) 2012-06-08 2017-08-01 Apple Inc. Name recognition system
US9495129B2 (en) 2012-06-29 2016-11-15 Apple Inc. Device, method, and user interface for voice-activated navigation and browsing of a document
US20140040741A1 (en) * 2012-08-02 2014-02-06 Apple, Inc. Smart Auto-Completion
US9405424B2 (en) 2012-08-29 2016-08-02 Wolfram Alpha, Llc Method and system for distributing and displaying graphical items
US9547647B2 (en) 2012-09-19 2017-01-17 Apple Inc. Voice-based media searching
US20140082471A1 (en) * 2012-09-20 2014-03-20 Corey Reza Katouli Displaying a Syntactic Entity
WO2014093831A2 (en) * 2012-12-14 2014-06-19 Thomson Reuters (Markets) Llc Dynamic function builder
US10210151B2 (en) * 2012-12-17 2019-02-19 Thomson Reuters (Grc) Llc Dynamic function builder
US9330090B2 (en) * 2013-01-29 2016-05-03 Microsoft Technology Licensing, Llc. Translating natural language descriptions to programs in a domain-specific language for spreadsheets
KR102118209B1 (en) 2013-02-07 2020-06-02 애플 인크. Voice trigger for a digital assistant
US10652394B2 (en) 2013-03-14 2020-05-12 Apple Inc. System and method for processing voicemail
US10748529B1 (en) 2013-03-15 2020-08-18 Apple Inc. Voice activated device for use with a voice-based digital assistant
CN104063365B (en) * 2013-03-19 2018-08-21 福建福昕软件开发股份有限公司 The method that object is inserted into PDF document
US8799799B1 (en) 2013-05-07 2014-08-05 Palantir Technologies Inc. Interactive geospatial map
WO2014197334A2 (en) 2013-06-07 2014-12-11 Apple Inc. System and method for user-specified pronunciation of words for speech synthesis and recognition
US9582608B2 (en) 2013-06-07 2017-02-28 Apple Inc. Unified ranking with entropy-weighted information for phrase-based semantic auto-completion
WO2014197336A1 (en) 2013-06-07 2014-12-11 Apple Inc. System and method for detecting errors in interactions with a voice-based digital assistant
WO2014197335A1 (en) 2013-06-08 2014-12-11 Apple Inc. Interpreting and acting upon commands that involve sharing information with remote devices
US10176167B2 (en) 2013-06-09 2019-01-08 Apple Inc. System and method for inferring user intent from speech inputs
KR101959188B1 (en) 2013-06-09 2019-07-02 애플 인크. Device, method, and graphical user interface for enabling conversation persistence across two or more instances of a digital assistant
US9336485B2 (en) * 2013-06-11 2016-05-10 International Business Machines Corporation Determining answers in a question/answer system when answer is not contained in corpus
US9619217B2 (en) 2013-11-20 2017-04-11 Wolfram Research, Inc. Methods and systems for cloud computing
US9646003B2 (en) 2013-11-20 2017-05-09 Wolfram Research, Inc. Cloud storage methods and systems
US10296160B2 (en) 2013-12-06 2019-05-21 Apple Inc. Method for extracting salient dialog usage from live data
US9495457B2 (en) 2013-12-26 2016-11-15 Iac Search & Media, Inc. Batch crawl and fast crawl clusters for question and answer search engine
US20150186527A1 (en) * 2013-12-26 2015-07-02 Iac Search & Media, Inc. Question type detection for indexing in an offline system of question and answer search engine
US9292486B2 (en) * 2014-01-08 2016-03-22 International Business Machines Corporation Validation of formulas with external sources
US9311639B2 (en) 2014-02-11 2016-04-12 Digimarc Corporation Methods, apparatus and arrangements for device to device communication
US9384220B2 (en) * 2014-03-27 2016-07-05 International Business Machines Corporation Optimizing database definitions for a new database
US10170123B2 (en) 2014-05-30 2019-01-01 Apple Inc. Intelligent assistant for home automation
US9715875B2 (en) 2014-05-30 2017-07-25 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US9633004B2 (en) 2014-05-30 2017-04-25 Apple Inc. Better resolution when referencing to concepts
US9842101B2 (en) 2014-05-30 2017-12-12 Apple Inc. Predictive conversion of language input
US10078631B2 (en) 2014-05-30 2018-09-18 Apple Inc. Entropy-guided text prediction using combined word and character n-gram language models
US9785630B2 (en) 2014-05-30 2017-10-10 Apple Inc. Text prediction using combined word N-gram and unigram language models
US9760559B2 (en) 2014-05-30 2017-09-12 Apple Inc. Predictive text input
US9430463B2 (en) 2014-05-30 2016-08-30 Apple Inc. Exemplar-based natural language processing
US9966065B2 (en) 2014-05-30 2018-05-08 Apple Inc. Multi-command single utterance input method
US9460075B2 (en) 2014-06-17 2016-10-04 International Business Machines Corporation Solving and answering arithmetic and algebraic problems using natural language processing
US10659851B2 (en) 2014-06-30 2020-05-19 Apple Inc. Real-time digital assistant knowledge updates
US9338493B2 (en) 2014-06-30 2016-05-10 Apple Inc. Intelligent automated assistant for TV user interactions
US9514185B2 (en) * 2014-08-07 2016-12-06 International Business Machines Corporation Answering time-sensitive questions
US10446141B2 (en) 2014-08-28 2019-10-15 Apple Inc. Automatic speech recognition based on user feedback
US11003426B1 (en) * 2014-09-10 2021-05-11 Soundhound, Inc. Identification of code for parsing given expressions
US9818400B2 (en) 2014-09-11 2017-11-14 Apple Inc. Method and apparatus for discovering trending terms in speech requests
US10789041B2 (en) 2014-09-12 2020-09-29 Apple Inc. Dynamic thresholds for always listening speech trigger
US9430557B2 (en) * 2014-09-17 2016-08-30 International Business Machines Corporation Automatic data interpretation and answering analytical questions with tables and charts
US9668121B2 (en) 2014-09-30 2017-05-30 Apple Inc. Social reminders
US10074360B2 (en) 2014-09-30 2018-09-11 Apple Inc. Providing an indication of the suitability of speech recognition
US9886432B2 (en) 2014-09-30 2018-02-06 Apple Inc. Parsimonious handling of word inflection via categorical stem + suffix N-gram language models
US9646609B2 (en) 2014-09-30 2017-05-09 Apple Inc. Caching apparatus for serving phonetic pronunciations
US10127911B2 (en) 2014-09-30 2018-11-13 Apple Inc. Speaker identification and unsupervised speaker adaptation techniques
US9952915B2 (en) * 2014-11-06 2018-04-24 Microsoft Technology Licensing, Llc Event processing development environment
US10552013B2 (en) 2014-12-02 2020-02-04 Apple Inc. Data detection
US9898440B2 (en) 2015-02-25 2018-02-20 Sap Se Calculation framework utilizing fragmentation of expressions
US9865280B2 (en) 2015-03-06 2018-01-09 Apple Inc. Structured dictation using intelligent automated assistants
US10152299B2 (en) 2015-03-06 2018-12-11 Apple Inc. Reducing response latency of intelligent automated assistants
US9721566B2 (en) 2015-03-08 2017-08-01 Apple Inc. Competing devices responding to voice triggers
US9886953B2 (en) 2015-03-08 2018-02-06 Apple Inc. Virtual assistant activation
US10567477B2 (en) 2015-03-08 2020-02-18 Apple Inc. Virtual assistant continuity
EP3070622A1 (en) 2015-03-16 2016-09-21 Palantir Technologies, Inc. Interactive user interfaces for location-based data analysis
US9899019B2 (en) 2015-03-18 2018-02-20 Apple Inc. Systems and methods for structured stem and suffix language models
US9842105B2 (en) 2015-04-16 2017-12-12 Apple Inc. Parsimonious continuous-space phrase representations for natural language processing
US9928415B2 (en) 2015-04-23 2018-03-27 Fujitsu Limited Mathematical formula learner support system
US10460227B2 (en) 2015-05-15 2019-10-29 Apple Inc. Virtual assistant in a communication session
US10083688B2 (en) 2015-05-27 2018-09-25 Apple Inc. Device voice control for selecting a displayed affordance
US10200824B2 (en) 2015-05-27 2019-02-05 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device
US10127220B2 (en) 2015-06-04 2018-11-13 Apple Inc. Language identification from short strings
US9578173B2 (en) 2015-06-05 2017-02-21 Apple Inc. Virtual assistant aided communication with 3rd party service in a communication session
US10101822B2 (en) 2015-06-05 2018-10-16 Apple Inc. Language input correction
US11025565B2 (en) 2015-06-07 2021-06-01 Apple Inc. Personalized prediction of responses for instant messaging
US10255907B2 (en) 2015-06-07 2019-04-09 Apple Inc. Automatic accent detection using acoustic models
US10186254B2 (en) 2015-06-07 2019-01-22 Apple Inc. Context-based endpoint detection
US20160378747A1 (en) 2015-06-29 2016-12-29 Apple Inc. Virtual assistant for media playback
US9600146B2 (en) 2015-08-17 2017-03-21 Palantir Technologies Inc. Interactive geospatial map
US10140101B2 (en) * 2015-08-26 2018-11-27 International Business Machines Corporation Aligning natural language to linking code snippets to perform a complicated task
US10706434B1 (en) 2015-09-01 2020-07-07 Palantir Technologies Inc. Methods and systems for determining location information
US10747498B2 (en) 2015-09-08 2020-08-18 Apple Inc. Zero latency digital assistant
US10740384B2 (en) 2015-09-08 2020-08-11 Apple Inc. Intelligent automated assistant for media search and playback
US10671428B2 (en) 2015-09-08 2020-06-02 Apple Inc. Distributed personal assistant
US10331312B2 (en) 2015-09-08 2019-06-25 Apple Inc. Intelligent automated assistant in a media environment
US9697820B2 (en) 2015-09-24 2017-07-04 Apple Inc. Unit-selection text-to-speech synthesis using concatenation-sensitive neural networks
US10346681B2 (en) 2015-09-26 2019-07-09 Wolfram Research, Inc. Method and computing device for optically recognizing mathematical expressions
US11010550B2 (en) 2015-09-29 2021-05-18 Apple Inc. Unified language modeling framework for word prediction, auto-completion and auto-correction
US10366158B2 (en) 2015-09-29 2019-07-30 Apple Inc. Efficient word encoding for recurrent neural network language models
US11587559B2 (en) 2015-09-30 2023-02-21 Apple Inc. Intelligent device identification
US10691473B2 (en) 2015-11-06 2020-06-23 Apple Inc. Intelligent automated assistant in a messaging environment
US10956666B2 (en) 2015-11-09 2021-03-23 Apple Inc. Unconventional virtual assistant interactions
US10049668B2 (en) 2015-12-02 2018-08-14 Apple Inc. Applying neural network language models to weighted finite state transducers for automatic speech recognition
US20170249284A1 (en) * 2015-12-03 2017-08-31 Jesse Clement Bunch Equation Engine
US10951568B2 (en) 2015-12-17 2021-03-16 Wolfram Research, Inc. Methods and systems for processing electronic messages
US10223066B2 (en) 2015-12-23 2019-03-05 Apple Inc. Proactive assistance based on dialog communication between devices
US10762285B2 (en) 2016-02-23 2020-09-01 Wolfram Research, Inc. Methods and systems for generating electronic forms
US10446143B2 (en) 2016-03-14 2019-10-15 Apple Inc. Identification of voice inputs providing credentials
US10095691B2 (en) 2016-03-22 2018-10-09 Wolfram Research, Inc. Method and apparatus for converting natural language to machine actions
US9934775B2 (en) 2016-05-26 2018-04-03 Apple Inc. Unit-selection text-to-speech synthesis based on predicted concatenation parameters
US9972304B2 (en) 2016-06-03 2018-05-15 Apple Inc. Privacy preserving distributed evaluation framework for embedded personalized systems
US10249300B2 (en) 2016-06-06 2019-04-02 Apple Inc. Intelligent list reading
US11227589B2 (en) 2016-06-06 2022-01-18 Apple Inc. Intelligent list reading
US10049663B2 (en) 2016-06-08 2018-08-14 Apple, Inc. Intelligent automated assistant for media exploration
DK179309B1 (en) 2016-06-09 2018-04-23 Apple Inc Intelligent automated assistant in a home environment
US10509862B2 (en) 2016-06-10 2019-12-17 Apple Inc. Dynamic phrase expansion of language input
US10067938B2 (en) 2016-06-10 2018-09-04 Apple Inc. Multilingual word prediction
US10586535B2 (en) 2016-06-10 2020-03-10 Apple Inc. Intelligent digital assistant in a multi-tasking environment
US10192552B2 (en) 2016-06-10 2019-01-29 Apple Inc. Digital assistant providing whispered speech
US10490187B2 (en) 2016-06-10 2019-11-26 Apple Inc. Digital assistant providing automated status report
DK201670540A1 (en) 2016-06-11 2018-01-08 Apple Inc Application integration with a digital assistant
DK179343B1 (en) 2016-06-11 2018-05-14 Apple Inc Intelligent task discovery
DK179049B1 (en) 2016-06-11 2017-09-18 Apple Inc Data driven natural language event detection and classification
DK179415B1 (en) 2016-06-11 2018-06-14 Apple Inc Intelligent device arbitration and control
CN107491264B (en) * 2016-06-12 2020-07-31 阿里巴巴集团控股有限公司 Data writing method and device in distributed system
JP6744025B2 (en) * 2016-06-21 2020-08-19 日本電気株式会社 Work support system, management server, mobile terminal, work support method and program
US10474753B2 (en) 2016-09-07 2019-11-12 Apple Inc. Language identification using recurrent neural networks
US10043516B2 (en) 2016-09-23 2018-08-07 Apple Inc. Intelligent automated assistant
US11281993B2 (en) 2016-12-05 2022-03-22 Apple Inc. Model and ensemble compression for metric learning
US10593346B2 (en) 2016-12-22 2020-03-17 Apple Inc. Rank-reduced token representation for automatic speech recognition
US10853716B2 (en) * 2016-12-27 2020-12-01 Microsoft Technology Licensing, Llc Systems and methods for a mathematical chat bot
US11204787B2 (en) 2017-01-09 2021-12-21 Apple Inc. Application integration with a digital assistant
DK201770383A1 (en) 2017-05-09 2018-12-14 Apple Inc. User interface for correcting recognition errors
US10417266B2 (en) 2017-05-09 2019-09-17 Apple Inc. Context-aware ranking of intelligent response suggestions
US10395654B2 (en) 2017-05-11 2019-08-27 Apple Inc. Text normalization based on a data-driven learning network
US10726832B2 (en) 2017-05-11 2020-07-28 Apple Inc. Maintaining privacy of personal information
DK201770439A1 (en) 2017-05-11 2018-12-13 Apple Inc. Offline personal assistant
DK180048B1 (en) 2017-05-11 2020-02-04 Apple Inc. MAINTAINING THE DATA PROTECTION OF PERSONAL INFORMATION
US11301477B2 (en) 2017-05-12 2022-04-12 Apple Inc. Feedback analysis of a digital assistant
DK179496B1 (en) 2017-05-12 2019-01-15 Apple Inc. USER-SPECIFIC Acoustic Models
DK201770427A1 (en) 2017-05-12 2018-12-20 Apple Inc. Low-latency intelligent automated assistant
DK179745B1 (en) 2017-05-12 2019-05-01 Apple Inc. SYNCHRONIZATION AND TASK DELEGATION OF A DIGITAL ASSISTANT
DK201770431A1 (en) 2017-05-15 2018-12-20 Apple Inc. Optimizing dialogue policy decisions for digital assistants using implicit feedback
DK201770432A1 (en) 2017-05-15 2018-12-21 Apple Inc. Hierarchical belief states for digital assistants
US10403278B2 (en) 2017-05-16 2019-09-03 Apple Inc. Methods and systems for phonetic matching in digital assistant services
US10303715B2 (en) 2017-05-16 2019-05-28 Apple Inc. Intelligent automated assistant for media exploration
US10311144B2 (en) 2017-05-16 2019-06-04 Apple Inc. Emoji word sense disambiguation
DK179560B1 (en) 2017-05-16 2019-02-18 Apple Inc. Far-field extension for digital assistant services
US20180336892A1 (en) 2017-05-16 2018-11-22 Apple Inc. Detecting a trigger of a digital assistant
US10657328B2 (en) 2017-06-02 2020-05-19 Apple Inc. Multi-task recurrent neural network architecture for efficient morphology handling in neural language modeling
US10540424B2 (en) * 2017-06-13 2020-01-21 Microsoft Technology Licensing, Llc Evaluating documents with embedded mathematical expressions
US10445429B2 (en) 2017-09-21 2019-10-15 Apple Inc. Natural language understanding using vocabularies with compressed serialized tries
US10755051B2 (en) 2017-09-29 2020-08-25 Apple Inc. Rule-based natural language processing
US10482162B2 (en) * 2017-11-30 2019-11-19 International Business Machines Corporation Automatic equation transformation from text
US10636424B2 (en) 2017-11-30 2020-04-28 Apple Inc. Multi-turn canned dialog
US10733982B2 (en) 2018-01-08 2020-08-04 Apple Inc. Multi-directional dialog
US10733375B2 (en) 2018-01-31 2020-08-04 Apple Inc. Knowledge-based framework for improving natural language understanding
US10789959B2 (en) 2018-03-02 2020-09-29 Apple Inc. Training speaker recognition models for digital assistants
US10592604B2 (en) 2018-03-12 2020-03-17 Apple Inc. Inverse text normalization for automatic speech recognition
US10818288B2 (en) 2018-03-26 2020-10-27 Apple Inc. Natural assistant interaction
US10909331B2 (en) 2018-03-30 2021-02-02 Apple Inc. Implicit identification of translation payload with neural machine translation
US10928918B2 (en) 2018-05-07 2021-02-23 Apple Inc. Raise to speak
US11145294B2 (en) 2018-05-07 2021-10-12 Apple Inc. Intelligent automated assistant for delivering content from user experiences
US10984780B2 (en) 2018-05-21 2021-04-20 Apple Inc. Global semantic word embeddings using bi-directional recurrent neural networks
DK179822B1 (en) 2018-06-01 2019-07-12 Apple Inc. Voice interaction at a primary device to access call functionality of a companion device
DK201870355A1 (en) 2018-06-01 2019-12-16 Apple Inc. Virtual assistant operation in multi-device environments
DK180639B1 (en) 2018-06-01 2021-11-04 Apple Inc DISABILITY OF ATTENTION-ATTENTIVE VIRTUAL ASSISTANT
US10892996B2 (en) 2018-06-01 2021-01-12 Apple Inc. Variable latency device coordination
US11386266B2 (en) 2018-06-01 2022-07-12 Apple Inc. Text correction
US10944859B2 (en) 2018-06-03 2021-03-09 Apple Inc. Accelerated task performance
US11036931B2 (en) 2018-08-21 2021-06-15 GrowthPlan LLC Grid-based data processing with changeable cell formats
US11010561B2 (en) 2018-09-27 2021-05-18 Apple Inc. Sentiment prediction from textual data
US11462215B2 (en) 2018-09-28 2022-10-04 Apple Inc. Multi-modal inputs for voice commands
US11170166B2 (en) 2018-09-28 2021-11-09 Apple Inc. Neural typographical error modeling via generative adversarial networks
EP3629141B1 (en) * 2018-09-28 2021-04-14 Sick Ag Method and device for checking a configuration parameter value
US10839159B2 (en) 2018-09-28 2020-11-17 Apple Inc. Named entity normalization in a spoken dialog system
US11475898B2 (en) 2018-10-26 2022-10-18 Apple Inc. Low-latency multi-speaker speech recognition
US11638059B2 (en) 2019-01-04 2023-04-25 Apple Inc. Content playback on multiple devices
US11348573B2 (en) 2019-03-18 2022-05-31 Apple Inc. Multimodality in digital assistant systems
US11475884B2 (en) 2019-05-06 2022-10-18 Apple Inc. Reducing digital assistant latency when a language is incorrectly determined
US11423908B2 (en) 2019-05-06 2022-08-23 Apple Inc. Interpreting spoken requests
US11307752B2 (en) 2019-05-06 2022-04-19 Apple Inc. User configurable task triggers
US11217251B2 (en) 2019-05-06 2022-01-04 Apple Inc. Spoken notifications
US11140099B2 (en) 2019-05-21 2021-10-05 Apple Inc. Providing message response suggestions
US11496600B2 (en) 2019-05-31 2022-11-08 Apple Inc. Remote execution of machine-learned models
DK201970510A1 (en) 2019-05-31 2021-02-11 Apple Inc Voice identification in digital assistant systems
US11289073B2 (en) 2019-05-31 2022-03-29 Apple Inc. Device text to speech
DK180129B1 (en) 2019-05-31 2020-06-02 Apple Inc. User activity shortcut suggestions
US11360641B2 (en) 2019-06-01 2022-06-14 Apple Inc. Increasing the relevance of new available information
US11227599B2 (en) 2019-06-01 2022-01-18 Apple Inc. Methods and user interfaces for voice-based control of electronic devices
WO2021056255A1 (en) 2019-09-25 2021-04-01 Apple Inc. Text detection using global geometry estimators
US11768997B2 (en) * 2020-03-31 2023-09-26 Atlassian Pty Ltd. Systems and methods for creating, using, and managing fields in electronic content
US11061543B1 (en) 2020-05-11 2021-07-13 Apple Inc. Providing relevant data items based on context
US11043220B1 (en) 2020-05-11 2021-06-22 Apple Inc. Digital assistant hardware abstraction
CN111626794B (en) * 2020-06-03 2022-05-31 清华四川能源互联网研究院 Electricity charge calculation method, device, system, electronic equipment and storage medium
US11490204B2 (en) 2020-07-20 2022-11-01 Apple Inc. Multi-device audio adjustment coordination
US11438683B2 (en) 2020-07-21 2022-09-06 Apple Inc. User identification using headphones
US11334563B1 (en) * 2021-03-31 2022-05-17 F3 Systems Ltd. System and method for automatic evaluation of project management tickets

Citations (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4734854A (en) 1985-10-08 1988-03-29 American Telephone And Telegraph Company System for generating software source code components
US4740886A (en) 1984-11-02 1988-04-26 Hitachi, Ltd Computer control system utilizing knowledge processing
US4841441A (en) 1984-08-01 1989-06-20 Adata Software Limited Method of creating a computer system
US4949253A (en) 1987-01-23 1990-08-14 Hitachi, Ltd. Method and apparatus for automatically generating program
US5038296A (en) 1989-04-04 1991-08-06 Kabushiki Kaisha Toshiba Automatic program synthisizer
EP0442240A2 (en) 1990-01-25 1991-08-21 International Business Machines Corporation Method of using natural language to program a window system
US5315710A (en) 1991-01-25 1994-05-24 Hitachi, Ltd. Program synthesizing method and apparatus
US5394509A (en) 1992-03-31 1995-02-28 Winston; Patrick H. Data processing system and method for searching for improved results from a process
US5448740A (en) 1992-12-15 1995-09-05 International Business Machines Corporation Generation of a user interface code from a corresponding declarative language program
US5485601A (en) 1992-05-14 1996-01-16 Ching; Hugh Completely automated and self-generating software system
US5499371A (en) 1993-07-21 1996-03-12 Persistence Software, Inc. Method and apparatus for automatic generation of object oriented code for mapping relational data to objects
US5555367A (en) 1994-09-30 1996-09-10 General Electric Company Method and system for generating computer programs for queries formed by manipulating object-oriented diagrams
US5559939A (en) 1990-03-19 1996-09-24 Hitachi, Ltd. Method and apparatus for preparing a document containing information in real mathematical notation
US5634024A (en) 1994-05-18 1997-05-27 Nec Corporation Definition execution system for operations and functions in computer system
US5640576A (en) 1992-10-02 1997-06-17 Fujitsu Limited System for generating a program using the language of individuals
WO1997040425A2 (en) 1996-04-25 1997-10-30 The Foxboro Company Idiomatic control language implementation
US5696962A (en) 1993-06-24 1997-12-09 Xerox Corporation Method for computerized information retrieval using shallow linguistic analysis
US5768590A (en) 1994-08-01 1998-06-16 Fujitsu Limited Program generating system for application-specific add-on boards using the language of individuals
US5815717A (en) 1995-10-27 1998-09-29 Authorgenics, Inc. Application program and documentation generator system and method
US5815713A (en) 1995-04-13 1998-09-29 Sterling Software, Inc. Method and system for automated transformation of declarative language process specifications
US5987505A (en) 1995-04-28 1999-11-16 Fry; Shawn C. Method for emulation of terminal-resident GUI application by transmitting macros having information and command instructing the terminal how to process the information
US6038560A (en) 1997-05-21 2000-03-14 Oracle Corporation Concept knowledge base search and retrieval system
US6076051A (en) 1997-03-07 2000-06-13 Microsoft Corporation Information retrieval utilizing semantic representation of text
US6084585A (en) 1998-07-29 2000-07-04 International Business Machines Corp. System for directly accessing fields on electronic forms
US6144989A (en) 1998-06-15 2000-11-07 Dejima, Inc. Adaptive agent-oriented software architecture
US6169986B1 (en) 1998-06-15 2001-01-02 Amazon.Com, Inc. System and method for refining search queries
US6173441B1 (en) 1998-10-16 2001-01-09 Peter A. Klein Method and system for compiling source code containing natural language instructions
US6216139B1 (en) 1995-11-20 2001-04-10 Execware Integrated dialog box for rapidly altering presentation of parametric text data objects on a computer display
US6256665B1 (en) 1995-04-28 2001-07-03 Sotf Technologies, Inc. Method for emulation of terminal-resident GUI application
US6275976B1 (en) 1996-03-15 2001-08-14 Joseph M. Scandura Automated method for building and maintaining software including methods for verifying that systems are internally consistent and correct relative to their specifications
US6289513B1 (en) 1999-06-01 2001-09-11 Isaac Bentwich Interactive application generation and text processing
US20020099743A1 (en) 2001-01-22 2002-07-25 Oracle Corporation System for editing query conditions, calculations, formulas and equations
US20020116176A1 (en) 2000-04-20 2002-08-22 Valery Tsourikov Semantic answering system and method
US20020143810A1 (en) 2001-03-28 2002-10-03 Bennett Paul W. System and method for calculation using vertical parentheses
US20020140734A1 (en) 2001-03-28 2002-10-03 Bennett Paul W. System and method for calculation using formulas in number fields
US20020174120A1 (en) 2001-03-30 2002-11-21 Hong-Jiang Zhang Relevance maximizing, iteration minimizing, relevance-feedback, content-based image retrieval (CBIR)
US6493694B1 (en) 1999-04-01 2002-12-10 Qwest Communications Interational Inc. Method and system for correcting customer service orders
US6502236B1 (en) 1999-03-16 2002-12-31 Fujitsu Network Communications, Inc. Method and apparatus for automatic generation of programs for processing data units of multiple formats
US6505157B1 (en) 1999-03-01 2003-01-07 Canon Kabushiki Kaisha Apparatus and method for generating processor usable data from natural language input data
US6584464B1 (en) 1999-03-19 2003-06-24 Ask Jeeves, Inc. Grammar template query system
US6589290B1 (en) 1999-10-29 2003-07-08 America Online, Inc. Method and apparatus for populating a form with data
US20030145022A1 (en) 2002-01-31 2003-07-31 Hewlett-Packard Company Storage and management of semi-structured data
US20030191765A1 (en) 2000-08-24 2003-10-09 Bargh Christopher Ian Method of graphically defining a formula
US20040001109A1 (en) 2002-06-27 2004-01-01 International Business Machines Corporation Drop down checklist control
US6675159B1 (en) 2000-07-27 2004-01-06 Science Applic Int Corp Concept-based search and retrieval system
US6684388B1 (en) 2000-08-22 2004-01-27 International Business Machines Corporation Method for generating platform independent, language specific computer code
US6704728B1 (en) 2000-05-02 2004-03-09 Iphase.Com, Inc. Accessing information from a collection of data
US20040049499A1 (en) 2002-08-19 2004-03-11 Matsushita Electric Industrial Co., Ltd. Document retrieval system and question answering system
US20040088158A1 (en) 2002-10-31 2004-05-06 Phillip Sheu Structured natural language query and knowledge system
US20040103405A1 (en) 2002-11-20 2004-05-27 Vargas Byron D. System for translating programming languages
US20040128649A1 (en) 2002-12-30 2004-07-01 Intel Corporation Methods and systems for an interactive theorem-proving tool with reflective capabilities
US20050005258A1 (en) 2003-07-03 2005-01-06 International Business Machines Corporation Private source code commenting
US6876314B1 (en) 2004-02-18 2005-04-05 Robocoder Corporation Self-generating automatic code generator
US6877155B1 (en) 1994-09-30 2005-04-05 International Business Machines Corporation System and method for generating target language code utilizing an object oriented code generator
US20050080780A1 (en) 2003-08-21 2005-04-14 Matthew Colledge System and method for processing a query
US20050097464A1 (en) 2003-10-30 2005-05-05 Astrid Graeber Systems and methods for implementing formulas
US6901399B1 (en) 1997-07-22 2005-05-31 Microsoft Corporation System for processing textual inputs using natural language processing techniques
US6973640B2 (en) 2000-10-04 2005-12-06 Bea Systems, Inc. System and method for computer code generation
US20060020886A1 (en) 2004-07-15 2006-01-26 Agrawal Subodh K System and method for the structured capture of information and the generation of semantically rich reports
US20060025987A1 (en) 2004-07-30 2006-02-02 Baisley Donald E Generating software components from business rules expressed in a natural language
US20060026576A1 (en) 2004-07-27 2006-02-02 Baisley Donald E Generating a database model from natural language expressions of business rules
US6996801B2 (en) 2000-07-14 2006-02-07 Nec Corporation System and method for automatically generating program
US20060136411A1 (en) 2004-12-21 2006-06-22 Microsoft Corporation Ranking search results using feature extraction
US20060190439A1 (en) 2005-01-28 2006-08-24 Chowdhury Abdur R Web query classification
US7120574B2 (en) 2000-04-03 2006-10-10 Invention Machine Corporation Synonym extension of search queries with validation
US7137100B2 (en) 2000-04-04 2006-11-14 Jose Iborra Automatic software production system
US20060271908A1 (en) 2002-12-02 2006-11-30 Bargh Christopher I Method of componentisation of a graphically defined formula
US20060279799A1 (en) 2005-06-13 2006-12-14 Neal Goldman System and method for retrieving and displaying information relating to electronic documents available from an informational network
US20070022109A1 (en) 2005-07-25 2007-01-25 Tomasz Imielinski Systems and methods for answering user questions
US20070043574A1 (en) 1998-10-02 2007-02-22 Daniel Coffman Conversational computing via conversational virtual machine
US7197739B2 (en) 2000-01-31 2007-03-27 British Telecommunications Public Limited Company Apparatus for automatically generating source code
US20070106657A1 (en) 2005-11-10 2007-05-10 Brzeski Vadim V Word sense disambiguation
US20070106659A1 (en) 2005-03-18 2007-05-10 Yunshan Lu Search engine that applies feedback from users to improve search results
US7222333B1 (en) 2001-10-15 2007-05-22 Cisco Technology, Inc. Techniques for generating software application build scripts based on tags in comments
US7231343B1 (en) 2001-12-20 2007-06-12 Ianywhere Solutions, Inc. Synonyms mechanism for natural language systems
US20070203929A1 (en) 2006-02-28 2007-08-30 Ebay Inc. Expansion of database search queries
US20070208722A1 (en) 2006-03-02 2007-09-06 International Business Machines Corporation Apparatus and method for modification of a saved database query based on a change in the meaning of a query value over time
US7269822B2 (en) 2000-02-23 2007-09-11 International Business Machines Corporation Technique for enabling applications to use languages other than their built-in macro-languages without changing the applications
US20070220034A1 (en) 2006-03-16 2007-09-20 Microsoft Corporation Automatic training of data mining models
US20080016040A1 (en) 2006-07-14 2008-01-17 Chacha Search Inc. Method and system for qualifying keywords in query strings
US20080066052A1 (en) 2006-09-07 2008-03-13 Stephen Wolfram Methods and systems for determining a formula
US7373291B2 (en) 2002-02-15 2008-05-13 Mathsoft Engineering & Education, Inc. Linguistic support for a recognizer of mathematical expressions
US7440968B1 (en) 2004-11-30 2008-10-21 Google Inc. Query boosting based on classification
US20090171923A1 (en) 2008-01-02 2009-07-02 Michael Patrick Nash Domain-specific concept model for associating structured data that enables a natural language query
US7620935B2 (en) 2004-04-30 2009-11-17 Microsoft Corporation Generating programmatic interfaces from natural language expressions of authorizations for request of information
US20100004924A1 (en) 2008-07-03 2010-01-07 Yuri Luis Paez Method and system context-aware for identifying, activating and executing software that best respond to user requests generated in natural language
US7747601B2 (en) 2006-08-14 2010-06-29 Inquira, Inc. Method and apparatus for identifying and classifying query intent
US20100293174A1 (en) 2009-05-12 2010-11-18 Microsoft Corporation Query classification
US7844594B1 (en) 1999-06-18 2010-11-30 Surfwax, Inc. Information search, retrieval and distillation into knowledge objects
US8135696B2 (en) 2007-03-03 2012-03-13 Michael John Safoutin Time-conditioned search engine interface with visual feedback
US8788524B1 (en) 2009-05-15 2014-07-22 Wolfram Alpha Llc Method and system for responding to queries in an imprecise syntax

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6606599B2 (en) 1998-12-23 2003-08-12 Interactive Speech Technologies, Llc Method for integrating computing processes with an interface controlled by voice actuated grammars
US8275617B1 (en) 1998-12-17 2012-09-25 Nuance Communications, Inc. Speech command input recognition system for interactive computer display with interpretation of ancillary relevant speech query terms into commands
US6604075B1 (en) 1999-05-20 2003-08-05 Lucent Technologies Inc. Web-based voice dialog interface
US6847959B1 (en) 2000-01-05 2005-01-25 Apple Computer, Inc. Universal interface for retrieval of information in a computer system
US20060276230A1 (en) 2002-10-01 2006-12-07 Mcconnell Christopher F System and method for wireless audio communication with a computer
US7640160B2 (en) 2005-08-05 2009-12-29 Voicebox Technologies, Inc. Systems and methods for responding to natural language speech utterance
US7747981B2 (en) 2005-09-23 2010-06-29 Wolfram Research, Inc. Method of dynamically linking objects operated on by a computational system
US20080154870A1 (en) 2006-12-26 2008-06-26 Voice Signal Technologies, Inc. Collection and use of side information in voice-mediated mobile search
US20080153465A1 (en) 2006-12-26 2008-06-26 Voice Signal Technologies, Inc. Voice search-enabled mobile device
US20080154612A1 (en) 2006-12-26 2008-06-26 Voice Signal Technologies, Inc. Local storage and use of search results for voice-enabled mobile communications devices

Patent Citations (103)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4841441A (en) 1984-08-01 1989-06-20 Adata Software Limited Method of creating a computer system
US4740886A (en) 1984-11-02 1988-04-26 Hitachi, Ltd Computer control system utilizing knowledge processing
US4734854A (en) 1985-10-08 1988-03-29 American Telephone And Telegraph Company System for generating software source code components
US4949253A (en) 1987-01-23 1990-08-14 Hitachi, Ltd. Method and apparatus for automatically generating program
US5038296A (en) 1989-04-04 1991-08-06 Kabushiki Kaisha Toshiba Automatic program synthisizer
EP0442240A2 (en) 1990-01-25 1991-08-21 International Business Machines Corporation Method of using natural language to program a window system
US5559939A (en) 1990-03-19 1996-09-24 Hitachi, Ltd. Method and apparatus for preparing a document containing information in real mathematical notation
US5315710A (en) 1991-01-25 1994-05-24 Hitachi, Ltd. Program synthesizing method and apparatus
US5394509A (en) 1992-03-31 1995-02-28 Winston; Patrick H. Data processing system and method for searching for improved results from a process
US5485601A (en) 1992-05-14 1996-01-16 Ching; Hugh Completely automated and self-generating software system
US5640576A (en) 1992-10-02 1997-06-17 Fujitsu Limited System for generating a program using the language of individuals
US5448740A (en) 1992-12-15 1995-09-05 International Business Machines Corporation Generation of a user interface code from a corresponding declarative language program
US5696962A (en) 1993-06-24 1997-12-09 Xerox Corporation Method for computerized information retrieval using shallow linguistic analysis
US5499371A (en) 1993-07-21 1996-03-12 Persistence Software, Inc. Method and apparatus for automatic generation of object oriented code for mapping relational data to objects
US5634024A (en) 1994-05-18 1997-05-27 Nec Corporation Definition execution system for operations and functions in computer system
US5768590A (en) 1994-08-01 1998-06-16 Fujitsu Limited Program generating system for application-specific add-on boards using the language of individuals
US5555367A (en) 1994-09-30 1996-09-10 General Electric Company Method and system for generating computer programs for queries formed by manipulating object-oriented diagrams
US6877155B1 (en) 1994-09-30 2005-04-05 International Business Machines Corporation System and method for generating target language code utilizing an object oriented code generator
US5815713A (en) 1995-04-13 1998-09-29 Sterling Software, Inc. Method and system for automated transformation of declarative language process specifications
US5987505A (en) 1995-04-28 1999-11-16 Fry; Shawn C. Method for emulation of terminal-resident GUI application by transmitting macros having information and command instructing the terminal how to process the information
US6256665B1 (en) 1995-04-28 2001-07-03 Sotf Technologies, Inc. Method for emulation of terminal-resident GUI application
US5815717A (en) 1995-10-27 1998-09-29 Authorgenics, Inc. Application program and documentation generator system and method
US6216139B1 (en) 1995-11-20 2001-04-10 Execware Integrated dialog box for rapidly altering presentation of parametric text data objects on a computer display
US6275976B1 (en) 1996-03-15 2001-08-14 Joseph M. Scandura Automated method for building and maintaining software including methods for verifying that systems are internally consistent and correct relative to their specifications
WO1997040425A2 (en) 1996-04-25 1997-10-30 The Foxboro Company Idiomatic control language implementation
US6076051A (en) 1997-03-07 2000-06-13 Microsoft Corporation Information retrieval utilizing semantic representation of text
US6038560A (en) 1997-05-21 2000-03-14 Oracle Corporation Concept knowledge base search and retrieval system
US6901399B1 (en) 1997-07-22 2005-05-31 Microsoft Corporation System for processing textual inputs using natural language processing techniques
US6169986B1 (en) 1998-06-15 2001-01-02 Amazon.Com, Inc. System and method for refining search queries
US6144989A (en) 1998-06-15 2000-11-07 Dejima, Inc. Adaptive agent-oriented software architecture
US6084585A (en) 1998-07-29 2000-07-04 International Business Machines Corp. System for directly accessing fields on electronic forms
US20070043574A1 (en) 1998-10-02 2007-02-22 Daniel Coffman Conversational computing via conversational virtual machine
US6173441B1 (en) 1998-10-16 2001-01-09 Peter A. Klein Method and system for compiling source code containing natural language instructions
US6505157B1 (en) 1999-03-01 2003-01-07 Canon Kabushiki Kaisha Apparatus and method for generating processor usable data from natural language input data
US6502236B1 (en) 1999-03-16 2002-12-31 Fujitsu Network Communications, Inc. Method and apparatus for automatic generation of programs for processing data units of multiple formats
US6584464B1 (en) 1999-03-19 2003-06-24 Ask Jeeves, Inc. Grammar template query system
US6493694B1 (en) 1999-04-01 2002-12-10 Qwest Communications Interational Inc. Method and system for correcting customer service orders
US6289513B1 (en) 1999-06-01 2001-09-11 Isaac Bentwich Interactive application generation and text processing
US7844594B1 (en) 1999-06-18 2010-11-30 Surfwax, Inc. Information search, retrieval and distillation into knowledge objects
US6589290B1 (en) 1999-10-29 2003-07-08 America Online, Inc. Method and apparatus for populating a form with data
US7197739B2 (en) 2000-01-31 2007-03-27 British Telecommunications Public Limited Company Apparatus for automatically generating source code
US7269822B2 (en) 2000-02-23 2007-09-11 International Business Machines Corporation Technique for enabling applications to use languages other than their built-in macro-languages without changing the applications
US7120574B2 (en) 2000-04-03 2006-10-10 Invention Machine Corporation Synonym extension of search queries with validation
US7137100B2 (en) 2000-04-04 2006-11-14 Jose Iborra Automatic software production system
US20020116176A1 (en) 2000-04-20 2002-08-22 Valery Tsourikov Semantic answering system and method
US6704728B1 (en) 2000-05-02 2004-03-09 Iphase.Com, Inc. Accessing information from a collection of data
US6996801B2 (en) 2000-07-14 2006-02-07 Nec Corporation System and method for automatically generating program
US6675159B1 (en) 2000-07-27 2004-01-06 Science Applic Int Corp Concept-based search and retrieval system
US6684388B1 (en) 2000-08-22 2004-01-27 International Business Machines Corporation Method for generating platform independent, language specific computer code
US20030191765A1 (en) 2000-08-24 2003-10-09 Bargh Christopher Ian Method of graphically defining a formula
US6973640B2 (en) 2000-10-04 2005-12-06 Bea Systems, Inc. System and method for computer code generation
US20020099743A1 (en) 2001-01-22 2002-07-25 Oracle Corporation System for editing query conditions, calculations, formulas and equations
US7685507B2 (en) 2001-01-22 2010-03-23 Oracle International Corporation System for editing query conditions, calculations, formulas and equations
US6742162B2 (en) 2001-03-28 2004-05-25 Paul W. Bennett System and method for calculation using formulas in number fields
US20020143810A1 (en) 2001-03-28 2002-10-03 Bennett Paul W. System and method for calculation using vertical parentheses
US20020140734A1 (en) 2001-03-28 2002-10-03 Bennett Paul W. System and method for calculation using formulas in number fields
US20020174120A1 (en) 2001-03-30 2002-11-21 Hong-Jiang Zhang Relevance maximizing, iteration minimizing, relevance-feedback, content-based image retrieval (CBIR)
US7222333B1 (en) 2001-10-15 2007-05-22 Cisco Technology, Inc. Techniques for generating software application build scripts based on tags in comments
US7231343B1 (en) 2001-12-20 2007-06-12 Ianywhere Solutions, Inc. Synonyms mechanism for natural language systems
US20030145022A1 (en) 2002-01-31 2003-07-31 Hewlett-Packard Company Storage and management of semi-structured data
US7373291B2 (en) 2002-02-15 2008-05-13 Mathsoft Engineering & Education, Inc. Linguistic support for a recognizer of mathematical expressions
US20040001109A1 (en) 2002-06-27 2004-01-01 International Business Machines Corporation Drop down checklist control
US20040049499A1 (en) 2002-08-19 2004-03-11 Matsushita Electric Industrial Co., Ltd. Document retrieval system and question answering system
US7263517B2 (en) 2002-10-31 2007-08-28 Biomedical Objects, Inc. Structured natural language query and knowledge system
US20040088158A1 (en) 2002-10-31 2004-05-06 Phillip Sheu Structured natural language query and knowledge system
US20040103405A1 (en) 2002-11-20 2004-05-27 Vargas Byron D. System for translating programming languages
US20060271908A1 (en) 2002-12-02 2006-11-30 Bargh Christopher I Method of componentisation of a graphically defined formula
US20040128649A1 (en) 2002-12-30 2004-07-01 Intel Corporation Methods and systems for an interactive theorem-proving tool with reflective capabilities
US20050005258A1 (en) 2003-07-03 2005-01-06 International Business Machines Corporation Private source code commenting
US20050080780A1 (en) 2003-08-21 2005-04-14 Matthew Colledge System and method for processing a query
US8091024B2 (en) 2003-10-30 2012-01-03 Sap Ag Systems and methods for implementing formulas
US7454701B2 (en) 2003-10-30 2008-11-18 Sap Ag Systems and methods for implementing formulas
US20090055733A1 (en) 2003-10-30 2009-02-26 Sap Ag System and methods for implementing formulas
US20050097464A1 (en) 2003-10-30 2005-05-05 Astrid Graeber Systems and methods for implementing formulas
US6876314B1 (en) 2004-02-18 2005-04-05 Robocoder Corporation Self-generating automatic code generator
US7620935B2 (en) 2004-04-30 2009-11-17 Microsoft Corporation Generating programmatic interfaces from natural language expressions of authorizations for request of information
US20060020886A1 (en) 2004-07-15 2006-01-26 Agrawal Subodh K System and method for the structured capture of information and the generation of semantically rich reports
US7613676B2 (en) 2004-07-27 2009-11-03 Microsoft Corporation Generating a database model from natural language expressions of business rules
US20060026576A1 (en) 2004-07-27 2006-02-02 Baisley Donald E Generating a database model from natural language expressions of business rules
WO2006014892A2 (en) 2004-07-27 2006-02-09 Unisys Corporation Generating a database model from natural language expressions of business rules
US20060025987A1 (en) 2004-07-30 2006-02-02 Baisley Donald E Generating software components from business rules expressed in a natural language
WO2006015006A2 (en) 2004-07-30 2006-02-09 Unisys Corporation Generating software components from business rules expressed in a natural language
US7440968B1 (en) 2004-11-30 2008-10-21 Google Inc. Query boosting based on classification
US20060136411A1 (en) 2004-12-21 2006-06-22 Microsoft Corporation Ranking search results using feature extraction
US20060190439A1 (en) 2005-01-28 2006-08-24 Chowdhury Abdur R Web query classification
US8185523B2 (en) 2005-03-18 2012-05-22 Search Engine Technologies, Llc Search engine that applies feedback from users to improve search results
US20070106659A1 (en) 2005-03-18 2007-05-10 Yunshan Lu Search engine that applies feedback from users to improve search results
US7451135B2 (en) 2005-06-13 2008-11-11 Inform Technologies, Llc System and method for retrieving and displaying information relating to electronic documents available from an informational network
US20060279799A1 (en) 2005-06-13 2006-12-14 Neal Goldman System and method for retrieving and displaying information relating to electronic documents available from an informational network
US20070022109A1 (en) 2005-07-25 2007-01-25 Tomasz Imielinski Systems and methods for answering user questions
US20070106657A1 (en) 2005-11-10 2007-05-10 Brzeski Vadim V Word sense disambiguation
US20070203929A1 (en) 2006-02-28 2007-08-30 Ebay Inc. Expansion of database search queries
US20070208722A1 (en) 2006-03-02 2007-09-06 International Business Machines Corporation Apparatus and method for modification of a saved database query based on a change in the meaning of a query value over time
US20070220034A1 (en) 2006-03-16 2007-09-20 Microsoft Corporation Automatic training of data mining models
US20080016040A1 (en) 2006-07-14 2008-01-17 Chacha Search Inc. Method and system for qualifying keywords in query strings
US7747601B2 (en) 2006-08-14 2010-06-29 Inquira, Inc. Method and apparatus for identifying and classifying query intent
US20080066052A1 (en) 2006-09-07 2008-03-13 Stephen Wolfram Methods and systems for determining a formula
US8589869B2 (en) 2006-09-07 2013-11-19 Wolfram Alpha Llc Methods and systems for determining a formula
US8135696B2 (en) 2007-03-03 2012-03-13 Michael John Safoutin Time-conditioned search engine interface with visual feedback
US20090171923A1 (en) 2008-01-02 2009-07-02 Michael Patrick Nash Domain-specific concept model for associating structured data that enables a natural language query
US20100004924A1 (en) 2008-07-03 2010-01-07 Yuri Luis Paez Method and system context-aware for identifying, activating and executing software that best respond to user requests generated in natural language
US20100293174A1 (en) 2009-05-12 2010-11-18 Microsoft Corporation Query classification
US8788524B1 (en) 2009-05-15 2014-07-22 Wolfram Alpha Llc Method and system for responding to queries in an imprecise syntax

Non-Patent Citations (49)

* Cited by examiner, † Cited by third party
Title
"AppleScript," Wikipedia (2009).
"Area calculator," http://www.calculator.com, 2 page (Aug. 15, 2006).
"calculator.com," http://www.calculator.com, 2 pages (Aug. 15, 2006).
"Car Lease Calculator," http://www.calculator.com, 1 page (Aug. 15, 2006).
"Currency Calculator," http://www.calculator.com, 1 page (Aug. 15, 2006).
"Fractions calculator," http://www.calculator.com, 1 page (Aug. 15, 2006).
"General Loan Calculator," http://www.calculator.com, 1 page (Aug. 15, 2006).
"Google Code," , pp. 1-11 (Mar. 17, 2005).
"Google Code," <http://code.google.com/>, pp. 1-11 (Mar. 17, 2005).
"Graphing calculator," http://www.calculator.com, 1 page (Aug. 15, 2006).
"Home Equity Calculator," http://www.calculator.com, 1 page (Aug. 15, 2006).
"Home-Finance," http://www.calculator.com, 2 pages (Aug. 15, 2006).
"How Much Can I Afford Calculator," http://www.calculator.com, 1 page (Aug. 15, 2006).
"Length Adding Calculator," http://www.calculator.com, 1 page (Aug. 15, 2006).
"Love Calculator," http://www.calculator.com, 1 page (Aug. 15, 2006).
"Mortgage Payment Calculator," http://www.calculator.com, 1 page (Aug. 15, 2006).
"Mortgage Qualification Calculator," http://www.calculator.com, 1 page (Aug. 15, 2006).
"Percent calculator," http://www.calculator.com, 1 page (Aug. 15, 2006).
"Rent versus Buy Calculator," http://www.calculator.com, 1 page (Aug. 15, 2006).
"Scientific calculator," http://www.calculator.com, 1 page (Aug. 15, 2006).
"Standard calculator," http://www.calculator.com, 1 page (Aug. 15, 2006).
"Temperature calculator," http://www.calculator.com, 1 page (Aug. 15, 2006).
"The Mortgage Calculator," , pp. 1-7 (Aug. 8, 1996).
"The Mortgage Calculator," <http://www.hughchou.org/calc/mortold.html>, pp. 1-7 (Aug. 8, 1996).
"Time Calculator," http://www.calculator.com, 1 page (Aug. 15, 2006).
"Unit Conversion Calculator," http://www.calculator.com, 1 page (Aug. 15, 2006).
Adorni, et al., "Natural Language Input for Scene Generation," Proceedings of the first conference on European Chapter of the Association for Computational Linguistics, pp. 175-182 (1983).
Asperti et al., "A content based mathematical search engine: Whelp," pp. 1-15 (2004).
Estival et al., "Towards Ontology-Based Natural Language Processing," http://acl.ldc.upenn.edu/acl2004/nlpxml/pdf/estival-etal.pdf; 8 pages (Mar. 8, 2010). .
Estival et al., "Towards Ontology-Based Natural Language Processing," http://acl.ldc.upenn.edu/acl2004/nlpxml/pdf/estival-etal.pdf; 8 pages (Mar. 8, 2010). <http://acl.ldc.uoenn.edu/acl2004/nlpxml/pdf/estival-etal.pdf>.
First Office Action for related U.S. Appl. No. 12/780,685, dated Feb. 15, 2012 (26pages).
First Office Action for related U.S. Appl. No. 12/780,705, dated Jan. 31, 2012 (21 pages).
Jones et al., "Generating Query Substitutions," ACM WWW 2006, pp. 387-396 (May 23, 2006).
Kamareddine et al., "Restoring Natural Language as a Computerised Mathematics Input Method," Proceedings of the 14th symposium on Towards Mechanized +Mathematical Assistants: 6th International Conference, pp. 280-295 (2007).
Ko, et al., "The State of the Art in End-User Software Engineering," accepted for publication in ACM Computing Surveys. pp. 1-61 (2010).
Lavrov, "Program Synthesis," Cybernetics and Systems Analysis, vol. 18, No. 6 pp. 708-715 (Nov. 1982).
Meyers, A., "VOX-An Extensible Natural Language Processor," http://dli.iiit.ac.in/ijcai/IJAI-85-VOL2/PDF/026.pdf , 5 pages (Mar. 8, 2010).
Meyers, A., "VOX—An Extensible Natural Language Processor," http://dli.iiit.ac.in/ijcai/IJAI-85-VOL2/PDF/026.pdf <http://dli.iiit.ac.in/iicai/!.JCAI>, 5 pages (Mar. 8, 2010).
Moore, Gregory M., "Calculator Code: Programming Code for Use within a Scientific Calculator," p. 1-29 (Fall 2005).
Myers et al., "Natural Programming Languages and Environments," Communications of the ACM, vol. 47, No. 9, pp. 47-52 (Sep. 2004).
Notice of Allowance for related U.S. Appl. No. 12/780,705, dated Jun. 4, 2014 (6 pages).
Osogami, "A Study of Input and Output Conditions for Automatic Program Generation," Memoirs of the Fukui Institute of Technology, vol. 37, pp. 273-278 (2007).
Second Office Action for related U.S. Appl. No. 12/780,685, dated Aug. 16, 2012 (16 pages).
Second Office Action for related U.S. Appl. No. 12/780,705, dated Jan. 2, 2014 (16 pages).
Sucan, Ioan Alexandru, "A Search Engine for Mathematical Formulae," p. 1-17 (May 7, 2006).
Third Office Action for related U.S. Appl. No. 12/780,685, dated Jan. 2, 2014 (20 pages).
Trott, Michael, "Mathematical Searching of the Wolfram Functions Site," The Mathematica Journal, p. 713-726 (2005).
Trott, Michael, "The Functions Website," The Mathematica Journal, p. 1-10 (2003).
Wang et al., "Mining Term Association Patterns from Search Logs for Effective Query Reformulation," ACM CIKM 2008, pp. 479-488 (Oct. 26, 2008).

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9684721B2 (en) 2006-09-07 2017-06-20 Wolfram Alpha Llc Performing machine actions in response to voice input
US10380201B2 (en) 2006-09-07 2019-08-13 Wolfram Alpha Llc Method and system for determining an answer to a query
US10248388B2 (en) 2011-11-15 2019-04-02 Wolfram Alpha Llc Programming in a precise syntax using natural language
US10606563B2 (en) 2011-11-15 2020-03-31 Wolfram Alpha Llc Programming in a precise syntax using natural language
US9851950B2 (en) 2011-11-15 2017-12-26 Wolfram Alpha Llc Programming in a precise syntax using natural language
US10929105B2 (en) 2011-11-15 2021-02-23 Wolfram Alpha Llc Programming in a precise syntax using natural language
US10908768B2 (en) 2013-03-15 2021-02-02 Wolfram Research, Inc. User interface for selecting elements of a structured object
US10120525B2 (en) 2013-03-15 2018-11-06 Wolfram Research, Inc. Positioning pads for moving a position of interest on a display
US9262070B2 (en) 2013-03-15 2016-02-16 Wolfram Research, Inc. Positioning pads for moving a position of interest on a display
US11340755B2 (en) 2013-03-15 2022-05-24 Wolfram Research, Inc. Moving a position of interest on a display
US20150112971A1 (en) * 2013-10-17 2015-04-23 Wolfram Alpha Llc Method and system for providing answers to queries
US10068016B2 (en) * 2013-10-17 2018-09-04 Wolfram Alpha Llc Method and system for providing answers to queries
US9594737B2 (en) 2013-12-09 2017-03-14 Wolfram Alpha Llc Natural language-aided hypertext document authoring
US10102276B2 (en) 2015-12-07 2018-10-16 International Business Machines Corporation Resolving textual numerical queries using natural language processing techniques
US11106668B2 (en) 2019-08-08 2021-08-31 Salesforce.Com, Inc. System and method for transformation of unstructured document tables into structured relational data tables
US11243948B2 (en) 2019-08-08 2022-02-08 Salesforce.Com, Inc. System and method for generating answers to natural language questions based on document tables
US11347733B2 (en) 2019-08-08 2022-05-31 Salesforce.Com, Inc. System and method for transforming unstructured numerical information into a structured format
US11720589B2 (en) 2019-08-08 2023-08-08 Salesforce.Com, Inc. System and method for transformation of unstructured document tables into structured relational data tables
US11461396B2 (en) 2020-07-08 2022-10-04 Tata Consultancy Services Limited System and method of extraction of information and graphical representation for design of formulated products

Also Published As

Publication number Publication date
US8589869B2 (en) 2013-11-19
US20080066052A1 (en) 2008-03-13
US20150169769A1 (en) 2015-06-18
US20140075410A1 (en) 2014-03-13
US20170286543A1 (en) 2017-10-05
US10380201B2 (en) 2019-08-13
US9684721B2 (en) 2017-06-20

Similar Documents

Publication Publication Date Title
US10380201B2 (en) Method and system for determining an answer to a query
US8601015B1 (en) Dynamic example generation for queries
US9229927B2 (en) Macro replacement of natural language input
Horton et al. Using R and RStudio for data management, statistical analysis, and graphics
CN105408890B (en) Performing operations related to listing data based on voice input
US8140323B2 (en) Method and system for extracting information from unstructured text using symbolic machine learning
US9471670B2 (en) NLP-based content recommender
US11768884B2 (en) Training and applying structured data extraction models
US9213768B1 (en) Assumption mechanism for queries
EP1324213A2 (en) Grammar authoring system
US8688727B1 (en) Generating query refinements
US8484015B1 (en) Entity pages
Ofungwu Statistical applications for environmental analysis and risk assessment
US20130166530A1 (en) Method and System for Analyzing Data Using a Query Answering System
CN110674271A (en) Question and answer processing method and device
US20220050850A1 (en) Source Code Search Engine
Laramée Introduction to stylometry with Python
Khan et al. A clustering framework for lexical normalization of Roman Urdu
Lin et al. An introduction to Python programming for scientists and engineers
Xiong et al. Automating smart recommendation from natural language API descriptions via representation learning
Cohen et al. SuperCAT: The (New and Improved) Corpus Analysis Toolkit
Nguyen et al. XLMRQA: open-domain question answering on Vietnamese wikipedia-based textual knowledge source
Shaikh et al. Autocomplete recommendation plugin and Summarizing Text using Natural Language Processing
Rochester New tools for analyzing texts
Ferreira Safety Desk: Extraction and analysis of textual information to build a reporting system

Legal Events

Date Code Title Description
AS Assignment

Owner name: WOLFRAM ALPHA LLC, ILLINOIS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:WOLFRAM, STEPHEN;REEL/FRAME:032769/0171

Effective date: 20140422

STCF Information on status: patent grant

Free format text: PATENTED CASE

FEPP Fee payment procedure

Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.)

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YR, SMALL ENTITY (ORIGINAL EVENT CODE: M2551)

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE UNDER 1.28(C) (ORIGINAL EVENT CODE: M1559); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FEPP Fee payment procedure

Free format text: PETITION RELATED TO MAINTENANCE FEES GRANTED (ORIGINAL EVENT CODE: PTGR); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8