US20150220624A1 - Recipe creation using text analytics - Google Patents
Recipe creation using text analytics Download PDFInfo
- Publication number
- US20150220624A1 US20150220624A1 US14/557,101 US201414557101A US2015220624A1 US 20150220624 A1 US20150220624 A1 US 20150220624A1 US 201414557101 A US201414557101 A US 201414557101A US 2015220624 A1 US2015220624 A1 US 2015220624A1
- Authority
- US
- United States
- Prior art keywords
- recipe
- ingredients
- methods
- dish
- application
- 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.)
- Abandoned
Links
- 239000004615 ingredient Substances 0.000 claims abstract description 98
- 238000000034 method Methods 0.000 claims abstract description 83
- 238000002360 preparation method Methods 0.000 claims abstract description 21
- 235000020805 dietary restrictions Nutrition 0.000 claims abstract description 5
- 238000010411 cooking Methods 0.000 claims description 8
- 235000016709 nutrition Nutrition 0.000 claims description 8
- 238000013179 statistical model Methods 0.000 claims description 8
- 239000000284 extract Substances 0.000 abstract description 6
- 230000009193 crawling Effects 0.000 abstract 1
- 238000003860 storage Methods 0.000 description 27
- 238000010586 diagram Methods 0.000 description 10
- 229910052708 sodium Inorganic materials 0.000 description 10
- 239000011734 sodium Substances 0.000 description 10
- 241000207836 Olea <angiosperm> Species 0.000 description 9
- DGAQECJNVWCQMB-PUAWFVPOSA-M Ilexoside XXIX Chemical compound C[C@@H]1CC[C@@]2(CC[C@@]3(C(=CC[C@H]4[C@]3(CC[C@@H]5[C@@]4(CC[C@@H](C5(C)C)OS(=O)(=O)[O-])C)C)[C@@H]2[C@]1(C)O)C)C(=O)O[C@H]6[C@@H]([C@H]([C@@H]([C@H](O6)CO)O)O)O.[Na+] DGAQECJNVWCQMB-PUAWFVPOSA-M 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 235000001674 Agaricus brunnescens Nutrition 0.000 description 5
- 235000013305 food Nutrition 0.000 description 5
- 235000013311 vegetables Nutrition 0.000 description 5
- 244000223760 Cinnamomum zeylanicum Species 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 235000017803 cinnamon Nutrition 0.000 description 4
- 235000005911 diet Nutrition 0.000 description 4
- 230000000378 dietary effect Effects 0.000 description 4
- 206010020751 Hypersensitivity Diseases 0.000 description 3
- 230000007815 allergy Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000009835 boiling Methods 0.000 description 2
- 239000012267 brine Substances 0.000 description 2
- 235000014633 carbohydrates Nutrition 0.000 description 2
- 150000001720 carbohydrates Chemical class 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 235000012149 noodles Nutrition 0.000 description 2
- 235000015927 pasta Nutrition 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- HPALAKNZSZLMCH-UHFFFAOYSA-M sodium;chloride;hydrate Chemical compound O.[Na+].[Cl-] HPALAKNZSZLMCH-UHFFFAOYSA-M 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 244000025272 Persea americana Species 0.000 description 1
- 235000008673 Persea americana Nutrition 0.000 description 1
- 235000009337 Spinacia oleracea Nutrition 0.000 description 1
- 244000300264 Spinacia oleracea Species 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 206010012601 diabetes mellitus Diseases 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 235000008216 herbs Nutrition 0.000 description 1
- 235000004213 low-fat Nutrition 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 235000013372 meat Nutrition 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 235000013555 soy sauce Nutrition 0.000 description 1
- 235000013599 spices Nutrition 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
Images
Classifications
-
- G06F17/30696—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/40—Processing or translation of natural language
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/338—Presentation of query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G06F17/28—
-
- G06F17/30864—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/284—Lexical analysis, e.g. tokenisation or collocates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
Definitions
- Embodiments disclosed herein relate to text analytics. More specifically, embodiments provide techniques for generating culinary recipes by applying text analytics techniques on unstructured recipe texts.
- Text information is often voluminous and unstructured. To use large amounts of text information for a particular purpose, the information often needs to be structured based on its language and content.
- Text analytics describes a set of linguistic, statistical, and machine learning techniques that model and structure the information content of textual sources. Such techniques process the text information to identify structures, common meanings, and relationships between different words and word phrases. Through these techniques, organizations and individuals alike may extract value from the processed information. As more content becomes available on the Internet, text analytics becomes of increasing importance.
- Text analytics has applications in a variety of contexts. For example, consider culinary recipes, which are increasingly shared over the Internet through recipe websites, food blogs, and the like. Many culinary recipes may describe a variety of ingredients and methods for preparing a given dish. For example, one recipe for a pasta dish may specify a different set of herbs compared to another recipe. Further, one recipe may specify a different preparation method compared to another recipe (e.g., boiling or baking the pasta dish). Generally, when an individual searches online for a recipe for a particular dish, the individual may receive hundreds of results. Because the results are numerous, the individual often may consider only the first few hits and disregard the rest, without any regard to the quality of the remaining recipes. Additionally, an individual may have specific dietary needs, so the individual might have difficulty obtaining a recipe that suits these needs.
- Embodiments presently disclosed herein provide a computer-implemented method.
- the method generally includes receiving, via a processor, a recipe request.
- the recipe request specifies a dish and a set of criteria.
- the method also includes retrieving a plurality of recipe texts corresponding to the specified dish.
- the method also includes parsing each of the recipe texts to identify one or more ingredients and one or more methods used in preparing the specified dish and to associate metadata to one or more of the identified ingredients and methods.
- the method also includes generating, from the associated metadata of the identified ingredients and methods, a statistical model for preparing the specified dish.
- the method also includes generating a combination of the identified ingredients and methods for preparing the specified dish based on the specified set of criteria and the statistical model.
- Another embodiment of the invention includes a computer program product, the computer program product comprising a computer usable medium having computer usable program code having instructions for causing a processor to perform an operation.
- the operation generally includes receiving a recipe request.
- the recipe request specifies a dish and a set of criteria.
- the operation also includes retrieving a plurality of recipe texts corresponding to the specified dish.
- the operation also includes parsing each of the recipe texts to identify one or more ingredients and one or more methods used in preparing the specified dish and to associate metadata to one or more of the identified ingredients and methods.
- the operation also includes generating, from the associated metadata of the identified ingredients and methods, a statistical model for preparing the specified dish.
- the operation also includes generating a combination of the identified ingredients and methods for preparing the specified dish based on the specified set of criteria and the statistical model.
- Still another embodiment of the invention includes a system having a processor and a memory containing an operation.
- the operation generally includes receiving a recipe request.
- the recipe request specifies a dish and a set of criteria.
- the operation also includes retrieving a plurality of recipe texts corresponding to the specified dish.
- the operation also includes parsing each of the recipe texts to identify one or more ingredients and one or more methods used in preparing the specified dish and to associate metadata to one or more of the identified ingredients and methods.
- the operation also includes generating, from the associated metadata of the identified ingredients and methods, a statistical model for preparing the specified dish.
- the operation also includes generating a combination of the identified ingredients and methods for preparing the specified dish based on the specified set of criteria and the statistical model.
- FIG. 1 illustrates an example computing environment, according to one embodiment.
- FIG. 2 illustrates an example search query interface of a client application used to communicate with a server application, according to one embodiment.
- FIG. 3 illustrates an application executing on a server computer, according to one embodiment.
- FIG. 4 illustrates a method for generate recipes using text analytics, according to one embodiment.
- FIG. 5 illustrates an example server computing system configured to generate recipes using text analytics, according to one embodiment.
- a server application receives a search query from a user.
- the search query may specify a dish by name as well as other criteria, such as dietary restrictions, desired preparation methods, and desired ingredients.
- the application retrieves recipe texts corresponding to the dish from different sources (e.g., recipe websites, cookbooks in text or e-book format, restaurant menus, etc.).
- the server application may process the recipe texts (e.g., through natural language processing techniques, parsing, tokenization, etc.) to annotate identified ingredients and preparation methods.
- the application analyzes the annotated data to determine a recipe. For example, the application may create predictive models used to determine a recipe that conforms to user-specified criteria. Thereafter, the application generates a recipe based on the analysis and returns the recipe to the user.
- the recipes generated based on analyses of text analytics output may serve the needs of a user by both identifying ingredients and preparation methods desired by the user and identifying ingredients and methods that conform to the user's dietary needs.
- FIG. 1 illustrates an example computing environment 100 , according to one embodiment.
- the computing environment 100 includes a server computer 105 .
- a server computer 105 hosts an application 107 that provides a service accessed by multiple client computers 110 over a network 120 (e.g., the Internet) to an application 112 executing on the client computer 110 .
- the application 107 generates recipes based on analysis of data annotated through text analytics techniques.
- Server computer 105 may be a physical computing system (e.g., a system in a data center) or may be a virtual computing instance executing within a computing cloud.
- the network 115 may be a telecommunications network and/or a wide area network (WAN).
- WAN wide area network
- the application 107 performs text analytics techniques on recipes to identify ingredients and cooking methods for a recipe.
- the application 107 retrieves recipe texts from various recipe sources 115 corresponding to the dish specified in the search query.
- recipe sources 115 may include recipe websites 117 , cookbooks 118 (e.g., in a scanned or ebook format), or restaurant menus 119 .
- the application 107 uses text analytics methods on the recipes to identify each ingredient and preparation method used to create the dish. For example, the application 107 may use a set of dictionaries and parsing rules to determine common language constructs and tokenize terms. Further, the application 107 uses the text analytics methods to annotate the ingredients and preparation methods, such as nutritional information and other properties for each ingredient. Once annotated, the application 107 may generate a recipe that conforms to the search query.
- FIG. 2 illustrates an example search query interface 200 of a client application 112 used to communicate with the server application 107 , according to one embodiment.
- the interface 200 allows a user to create a search query for recipes corresponding to a particular dish. To do so, a user enters the name of a dish in a dish field 205 . Illustratively, the user has entered “Vegetable lasagna” in the dish field 205 . Once entered, the user may click a search button 235 to send the search query to the server application 107 (or alternatively, clear the query by clicking a clear button 240 ).
- the user may specify additional criteria for the requested dish through the interface 200 .
- interface 200 provides dropdown boxes 210 and 215 that allow the user to specify different cooking methods (e.g., frying, baking, sous-vide, etc.) and preparation times.
- the user may also list ingredients to be included or excluded in a generated result in fields 220 and 225 .
- the user has specified to exclude mushrooms from results in the field 225 .
- the user may select various dietary restrictions to which the generated result should conform. As shown, the interface 200 lists several dietary restrictions: dairy-free, gluten-free, low-cal, low-carbs, low-fat, low-sodium, vegan, and vegetarian.
- the interface 200 may be configured to allow the user to specify further criteria in the search.
- FIG. 3 illustrates the application 107 executing on the server computer 105 , according to one embodiment.
- the application 107 includes a retrieval component 302 , an ingredient annotation component 305 , a method annotation component 310 , an analytical component 315 , and a generation component 320 .
- the application 107 may process search queries sent by a user and, in response, generate a recipe by processing unstructured recipe texts related to the search.
- the retrieval component 302 may obtain recipe texts from various sources. Examples of such sources include culinary recipe websites, food blogs, scanned cookbooks, local databases, and the like. In one embodiment, the retrieval component 302 may scrape each source for recipe texts for any recipe on a periodic basis and store the texts locally (e.g., in a database) for faster retrieval. Once recipe texts corresponding to the dish identified in the search query are retrieved, the retrieval component 302 may extract the text from each recipe and transmit the text to the ingredient annotation component 305 and the method annotation component 310 .
- sources include culinary recipe websites, food blogs, scanned cookbooks, local databases, and the like.
- the retrieval component 302 may scrape each source for recipe texts for any recipe on a periodic basis and store the texts locally (e.g., in a database) for faster retrieval. Once recipe texts corresponding to the dish identified in the search query are retrieved, the retrieval component 302 may extract the text from each recipe and transmit the text to the ingredient annotation component 305 and the method annotation component 310 .
- the ingredient annotation component 305 is configured to process the extracted text to identify ingredients for a requested recipe using text analytics, such as natural language processing. As shown, the ingredient annotation component 305 itself includes dictionaries 307 and parsing rules 309 .
- the dictionaries 307 and the parsing rules 309 are a collection of lexical, semantic, and tokenization instructions used on the extracted and unstructured text to separate specific terms (i.e., ingredients) from common language constructs (e.g., verbs, phrases, etc.).
- the ingredient annotation component 305 then identifies which ingredients are common to the requested recipe. In addition, the ingredient annotation component 305 may identify uncommon or unusual ingredients to the requested recipe. To do so, the ingredient annotation component 305 may determine how frequently a given ingredient appears in the collected recipe texts.
- the ingredient annotation component 305 may also filter false positive information in identifying ingredients. For example, consider the use of the term “cinnamon” in the sentence “Add 1 tbsp. of cinnamon,” in light of, “My dog Cinnamon loves this dish.” The ingredient annotation component 305 may identify the term “cinnamon” in the first sentence as an ingredient based on its placement within the sentence.
- the ingredient annotation component 305 may also assign metadata about each identified ingredient.
- metadata may include a type of ingredient (e.g., meat, vegetable, spice, etc.), whether the ingredient is fresh or packaged, nutritional information, and the like.
- the ingredient annotation component 305 may process the identified ingredients through dictionaries that specify ingredient types, nutritional information, etc.
- the method annotation component 310 analyzes the extracted text to identify preparation methods and steps for a requested recipe. As shown, the method annotation component 310 itself includes dictionaries 312 and parsing rules 314 .
- the dictionaries 312 and parsing rules 314 are a collection of lexical, semantic, and tokenization instructions that are used to identify specific steps from common language constructs.
- the method annotation component 310 may identify which preparation methods and steps are common and uncommon to a specific dish. To do so, the method annotation component 310 may determine how common a preparation method is based on a frequency of the step in different recipes. Further, the method annotation component 310 may assign metadata about each identified step and method. For example, such metadata may include an amount of time spent per step, temperatures used in each step, whether the step is an example of a certain preparation (e.g., frying, baking, etc.), and the like.
- metadata may include an amount of time spent per step, temperatures used in each step, whether the step is an example of a certain preparation (e.g., frying
- the analytical component 315 is configured to perform a variety of analytics on the text and metadata annotated by the ingredient annotation component 305 and the method annotation component 310 . By doing so, the analytical component may loosely predict whether a culinary recipe conforms to criteria specified in a search query. For example, if the search query submitted by specifies that the resulting culinary recipe must be low sodium, the analytical component 315 may filter ingredients that are high in sodium. To do so, the analytical component may disregard ingredients that are known to be high in sodium, such as processed ingredients, brined ingredients, soy sauces, etc. For example, the ingredient annotation component 305 may identify canned olives as a common ingredient to a vegetable lasagna dish.
- the analytical component 305 may filter canned olives from the generated recipe because canned olives are typically marinated in brine, which results in a higher sodium levels. Further, the analytic component 315 may factor the high sodium content of canned olives into an analysis of whether to include canned olives in the final generated recipe.
- analytic component 315 may be configured to receive additional information about the user sending the search query (or other individual) to assist in performing predictive analytics to generate the recipe.
- the information may include medical conditions, allergies, etc., that the user may have.
- the analytical component 315 may establish predictive models that determine a recipe adhering to a dietary plan for the medical condition. For example, if the analytical component 315 receives information that indicates that the user has diabetes, then the analytical component 315 may identify ingredients and methods, based on the text previously annotated, that provides a low yield of sugar and carbohydrates. Conversely, the analytical component 315 may filter ingredients high in sugar and carbohydrates.
- the generation component 320 is configured to create a culinary recipe that conforms to the user's search based on the data transmitted by the analytical component 315 . Further, the generation component 320 may be configured to alternatively present the user with a variety of ingredients and cooking methods for a particular recipe. The user may then select from the variety of ingredients and cooking methods and submit the selection to the application 107 . When the application 107 receives a selection of ingredients and methods from the user, the generation component 320 may create a recipe based on the selection and return the generated recipe to the user.
- FIG. 4 illustrates a method 400 for generating a culinary recipe, according to one embodiment.
- a user may submit a search query for a culinary recipe through an application executing on a client computer to an application on a server computer.
- the search query corresponds to the example information provided in the interface 200 , where a user searches for a low-sodium vegetarian lasagna dish that excludes mushrooms as an ingredient.
- the server application receives a search query for a recipe from the user.
- the application retrieves relevant recipes corresponding to the search query.
- the application performs a crawl search through various recipe sources, such as recipe websites, food blogs, local databases, and the like to obtain the recipes.
- the application extracts the text from each of the collected recipes and applies dictionaries and parsing rules to identify ingredient variations and different preparation methods associated with the requested recipe.
- the application retrieves recipes that are relevant to vegetable lasagna from the recipe sources and extracts the text from each available recipe. Doing so allows the application to analyze the recipes to derive a variety of linguistic and statistical data about the requested recipe.
- the application determines ingredient variations for the dish associated with the various recipes obtained.
- the application identifies ingredients that are common to a given dish and also identifies ingredients that are uncommon by analyzing the unstructured text of each collected recipe. To do so, the application may determine how frequently a given ingredient appears in the recipe and among other collected recipes. For example, the application may determine that ingredients common to vegetable lasagna may include lasagna noodles, spinach, and olives, while uncommon ingredients may include peperoncini and avocado. Further, the application may also assign metadata to each ingredient, such as nutritional information, nutritional properties, whether an ingredient is processed or fresh, related ingredients, etc. Doing so allows the application to determine, for example, certain ingredients that may be substituted for other ingredients in the resulting recipe.
- the application determines variations in preparing specified dish.
- the application identifies cooking methods and steps that are common and uncommon in preparing a given dish. To do so, the application may determine how frequently a given step appears in each of the recipes identified at step 410 . For example, the application may determine that boiling lasagna noodles is a common step in preparing lasagna. Further, the application may also assign metadata to each step, such as time information, temperature information, and the like.
- the application evaluates the annotated ingredient and cooking method data and generates a culinary recipe based on the ingredient variations, cooking method variations, and the search criteria.
- the application may rank certain ingredients based on the frequency at which the ingredient appears in other recipes, the nutritional information of each ingredient, and other metrics. Further, the application may also remove ingredients and methods that do not conform to criteria specified in the recipe search.
- the search query specifies to exclude mushrooms, and in response, the application excludes mushrooms from the recipe and identifies alternatives that can be used in place of mushrooms. Further, assume that the application identifies canned olives as a common ingredient.
- the application may determine that canned olives are high in sodium because they are typically marinated in brine, and as a result, the application may exclude canned olives in the generated recipe. Additionally, the application may use data associated with the user in generating the recipe. Such data may include patient charts and other information that indicates medical conditions that the user has. The application may adjust the generated recipe according to the data. For example, if the user data specifies certain allergies, the application may exclude ingredients that aggravate such allergies and supplement the ingredients with alternatives. At step 430 , the application returns the generated recipe to the user.
- the application may present the user with a list of result ingredients and methods to choose in creating the recipe.
- the list may include the top ten most common ingredients and the top ten most uncommon ingredients for the requested dish. Further, the list may also include the most common and uncommon preparation methods for the requested dish.
- the user may select which ingredients and preparation methods to use in the final recipe and submit the result to the application. In turn, the application generates the recipe based on the user selection.
- FIG. 5 illustrates an example server computing system 500 configured to generate culinary recipes using text analytics, according to one embodiment.
- computing system 500 includes, without limitation, a central processing unit (CPU) 605 , a network interface 515 , a memory 520 , and storage 530 , each connected to a bus 517 .
- Computing system 500 may also include an I/O device interface 510 connecting I/O devices 512 (e.g., keyboard, display and mouse devices) to the computing system 500 .
- I/O device interface 510 connecting I/O devices 512 (e.g., keyboard, display and mouse devices) to the computing system 500 .
- the computing elements shown in computing system 500 may correspond to a physical computing system (e.g., a system in a data center) or may be a virtual computing instance executing within a computing cloud.
- CPU 505 retrieves and executes programming instructions stored in memory 520 as well as stores and retrieves application data residing in the storage 630 .
- the interconnect 517 is used to transmit programming instructions and application data between CPU 505 , I/O devices interface 510 , storage 530 , network interface 515 , and memory 520 .
- CPU 505 is included to be representative of a single CPU, multiple CPUs, a single CPU having multiple processing cores, and the like.
- Memory 520 is generally included to be representative of a random access memory.
- Storage 530 may be a disk drive storage device. Although shown as a single unit, storage 530 may be a combination of fixed and/or removable storage devices, such as fixed disc drives, removable memory cards, or optical storage, network attached storage (NAS), or a storage area-network (SAN).
- NAS network attached storage
- SAN storage area-network
- memory 520 includes an application 522 .
- Storage 530 includes application data 532 and user data 534 .
- Application 522 receives search queries and generates a culinary recipe based on the search query using text analytics.
- Application 522 itself includes a retrieval component 523 , annotation components 524 , an analytical component 525 , and a generation component 526 .
- the retrieval component 523 collects culinary recipes that are relevant to the search query from a variety of recipe sources (e.g., recipe websites, food magazines, food blogs, etc.) and extracts text from the recipes.
- the annotation components 524 use a set of dictionaries and parsing rules to identify and annotate ingredients and preparation methods for the recipe.
- the analytical component 525 creates predictive models based on the annotated data to identify a recipe that conforms to the search query (and the user data 534 ).
- the generation component 526 generates the final recipe and presents the recipe to the user.
- the present invention may be a system, a method, and/or a computer program product.
- the computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
- the computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device.
- the computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing.
- a non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing.
- RAM random access memory
- ROM read-only memory
- EPROM or Flash memory erasable programmable read-only memory
- SRAM static random access memory
- CD-ROM compact disc read-only memory
- DVD digital versatile disk
- memory stick a floppy disk
- a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon
- a computer readable storage medium is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
- Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network.
- the network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers.
- a network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
- Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages.
- the computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
- the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
- electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
- These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
- These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
- the computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
- each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s).
- the functions noted in the block may occur out of the order noted in the figures.
- two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved.
- embodiments presented herein provide techniques for generating a culinary recipe using text analytics methods.
- using text analytics on a number of unstructured recipes for a particular dish allows many different possibilities for preparing the dish to be identified.
- Performing further analytics on the possible ingredients and preparation methods results in a recipe that conforms to the requests of a user as well as the user's dietary needs.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Entrepreneurship & Innovation (AREA)
- Human Resources & Organizations (AREA)
- Strategic Management (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Economics (AREA)
- General Business, Economics & Management (AREA)
- Tourism & Hospitality (AREA)
- Quality & Reliability (AREA)
- Operations Research (AREA)
- Marketing (AREA)
- Machine Translation (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Embodiments presented herein provide techniques for generating a recipe using text analytics methods. A server application receives a search query for a specified dish (e.g., from a client computer). The application retrieves recipes relevant to the specified dish (e.g., by crawling websites on the Internet) and extracts text from each recipe. The application performs a variety of text analytics methods on the text to identify different ingredients and preparation methods in creating the dish. Additional analytics are performed to loosely predict a recipe that conforms to the search query as well as dietary restrictions of a user.
Description
- This application is a continuation of co-pending U.S. patent application Ser. No.14/170,053, filed Jan. 31, 2014. The aforementioned related patent application is herein incorporated by reference in its entirety.
- 1. Technical Field
- Embodiments disclosed herein relate to text analytics. More specifically, embodiments provide techniques for generating culinary recipes by applying text analytics techniques on unstructured recipe texts.
- 2. Description of the Related Art
- Text information is often voluminous and unstructured. To use large amounts of text information for a particular purpose, the information often needs to be structured based on its language and content. Text analytics describes a set of linguistic, statistical, and machine learning techniques that model and structure the information content of textual sources. Such techniques process the text information to identify structures, common meanings, and relationships between different words and word phrases. Through these techniques, organizations and individuals alike may extract value from the processed information. As more content becomes available on the Internet, text analytics becomes of increasing importance.
- Text analytics has applications in a variety of contexts. For example, consider culinary recipes, which are increasingly shared over the Internet through recipe websites, food blogs, and the like. Many culinary recipes may describe a variety of ingredients and methods for preparing a given dish. For example, one recipe for a pasta dish may specify a different set of herbs compared to another recipe. Further, one recipe may specify a different preparation method compared to another recipe (e.g., boiling or baking the pasta dish). Generally, when an individual searches online for a recipe for a particular dish, the individual may receive hundreds of results. Because the results are numerous, the individual often may consider only the first few hits and disregard the rest, without any regard to the quality of the remaining recipes. Additionally, an individual may have specific dietary needs, so the individual might have difficulty obtaining a recipe that suits these needs.
- Embodiments presently disclosed herein provide a computer-implemented method. The method generally includes receiving, via a processor, a recipe request. The recipe request specifies a dish and a set of criteria. The method also includes retrieving a plurality of recipe texts corresponding to the specified dish. The method also includes parsing each of the recipe texts to identify one or more ingredients and one or more methods used in preparing the specified dish and to associate metadata to one or more of the identified ingredients and methods. The method also includes generating, from the associated metadata of the identified ingredients and methods, a statistical model for preparing the specified dish. The method also includes generating a combination of the identified ingredients and methods for preparing the specified dish based on the specified set of criteria and the statistical model.
- Another embodiment of the invention includes a computer program product, the computer program product comprising a computer usable medium having computer usable program code having instructions for causing a processor to perform an operation. The operation generally includes receiving a recipe request. The recipe request specifies a dish and a set of criteria. The operation also includes retrieving a plurality of recipe texts corresponding to the specified dish. The operation also includes parsing each of the recipe texts to identify one or more ingredients and one or more methods used in preparing the specified dish and to associate metadata to one or more of the identified ingredients and methods. The operation also includes generating, from the associated metadata of the identified ingredients and methods, a statistical model for preparing the specified dish. The operation also includes generating a combination of the identified ingredients and methods for preparing the specified dish based on the specified set of criteria and the statistical model.
- Still another embodiment of the invention includes a system having a processor and a memory containing an operation. The operation generally includes receiving a recipe request. The recipe request specifies a dish and a set of criteria. The operation also includes retrieving a plurality of recipe texts corresponding to the specified dish. The operation also includes parsing each of the recipe texts to identify one or more ingredients and one or more methods used in preparing the specified dish and to associate metadata to one or more of the identified ingredients and methods. The operation also includes generating, from the associated metadata of the identified ingredients and methods, a statistical model for preparing the specified dish. The operation also includes generating a combination of the identified ingredients and methods for preparing the specified dish based on the specified set of criteria and the statistical model.
- BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
- So that the manner in which the above recited features, advantages and objects of the present invention are attained and can be understood in detail, a more particular description of the invention, briefly summarized above, may be had by reference to the embodiments thereof which are illustrated in the appended drawings.
- It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments.
-
FIG. 1 illustrates an example computing environment, according to one embodiment. -
FIG. 2 illustrates an example search query interface of a client application used to communicate with a server application, according to one embodiment. -
FIG. 3 illustrates an application executing on a server computer, according to one embodiment. -
FIG. 4 illustrates a method for generate recipes using text analytics, according to one embodiment. -
FIG. 5 illustrates an example server computing system configured to generate recipes using text analytics, according to one embodiment. - Embodiments presented herein provide techniques for generating customized recipes based on text analytics. In one embodiment, a server application receives a search query from a user. The search query may specify a dish by name as well as other criteria, such as dietary restrictions, desired preparation methods, and desired ingredients. In response to the query, the application retrieves recipe texts corresponding to the dish from different sources (e.g., recipe websites, cookbooks in text or e-book format, restaurant menus, etc.). The server application may process the recipe texts (e.g., through natural language processing techniques, parsing, tokenization, etc.) to annotate identified ingredients and preparation methods. The application analyzes the annotated data to determine a recipe. For example, the application may create predictive models used to determine a recipe that conforms to user-specified criteria. Thereafter, the application generates a recipe based on the analysis and returns the recipe to the user.
- Because culinary recipes are typically unstructured and do not share a common format across different sources, performing text analytics on the recipes allows many possibilities for creating a certain dish to be determined. As a result, the recipes generated based on analyses of text analytics output may serve the needs of a user by both identifying ingredients and preparation methods desired by the user and identifying ingredients and methods that conform to the user's dietary needs.
-
FIG. 1 illustrates an example computing environment 100, according to one embodiment. As shown, the computing environment 100 includes aserver computer 105. Aserver computer 105 hosts anapplication 107 that provides a service accessed bymultiple client computers 110 over a network 120 (e.g., the Internet) to anapplication 112 executing on theclient computer 110. Specifically, theapplication 107 generates recipes based on analysis of data annotated through text analytics techniques.Server computer 105 may be a physical computing system (e.g., a system in a data center) or may be a virtual computing instance executing within a computing cloud. In general, thenetwork 115 may be a telecommunications network and/or a wide area network (WAN). - The
application 107 performs text analytics techniques on recipes to identify ingredients and cooking methods for a recipe. In one embodiment, after receiving a search query from a user, theapplication 107 retrieves recipe texts fromvarious recipe sources 115 corresponding to the dish specified in the search query. Examples ofrecipe sources 115 may includerecipe websites 117, cookbooks 118 (e.g., in a scanned or ebook format), orrestaurant menus 119. Once collected, theapplication 107 uses text analytics methods on the recipes to identify each ingredient and preparation method used to create the dish. For example, theapplication 107 may use a set of dictionaries and parsing rules to determine common language constructs and tokenize terms. Further, theapplication 107 uses the text analytics methods to annotate the ingredients and preparation methods, such as nutritional information and other properties for each ingredient. Once annotated, theapplication 107 may generate a recipe that conforms to the search query. -
FIG. 2 illustrates an examplesearch query interface 200 of aclient application 112 used to communicate with theserver application 107, according to one embodiment. Theinterface 200 allows a user to create a search query for recipes corresponding to a particular dish. To do so, a user enters the name of a dish in adish field 205. Illustratively, the user has entered “Vegetable lasagna” in thedish field 205. Once entered, the user may click asearch button 235 to send the search query to the server application 107 (or alternatively, clear the query by clicking a clear button 240). - Before submitting the query to the
application 107, the user may specify additional criteria for the requested dish through theinterface 200. For example,interface 200 providesdropdown boxes fields field 225. Additionally, the user may select various dietary restrictions to which the generated result should conform. As shown, theinterface 200 lists several dietary restrictions: dairy-free, gluten-free, low-cal, low-carbs, low-fat, low-sodium, vegan, and vegetarian. Of course, theinterface 200 may be configured to allow the user to specify further criteria in the search. -
FIG. 3 illustrates theapplication 107 executing on theserver computer 105, according to one embodiment. As shown, theapplication 107 includes aretrieval component 302, aningredient annotation component 305, amethod annotation component 310, ananalytical component 315, and ageneration component 320. Theapplication 107 may process search queries sent by a user and, in response, generate a recipe by processing unstructured recipe texts related to the search. - The
retrieval component 302 may obtain recipe texts from various sources. Examples of such sources include culinary recipe websites, food blogs, scanned cookbooks, local databases, and the like. In one embodiment, theretrieval component 302 may scrape each source for recipe texts for any recipe on a periodic basis and store the texts locally (e.g., in a database) for faster retrieval. Once recipe texts corresponding to the dish identified in the search query are retrieved, theretrieval component 302 may extract the text from each recipe and transmit the text to theingredient annotation component 305 and themethod annotation component 310. - The
ingredient annotation component 305 is configured to process the extracted text to identify ingredients for a requested recipe using text analytics, such as natural language processing. As shown, theingredient annotation component 305 itself includesdictionaries 307 and parsing rules 309. Thedictionaries 307 and the parsingrules 309 are a collection of lexical, semantic, and tokenization instructions used on the extracted and unstructured text to separate specific terms (i.e., ingredients) from common language constructs (e.g., verbs, phrases, etc.). Theingredient annotation component 305 then identifies which ingredients are common to the requested recipe. In addition, theingredient annotation component 305 may identify uncommon or unusual ingredients to the requested recipe. To do so, theingredient annotation component 305 may determine how frequently a given ingredient appears in the collected recipe texts. - Further, the
ingredient annotation component 305 may also filter false positive information in identifying ingredients. For example, consider the use of the term “cinnamon” in the sentence “Add 1 tbsp. of cinnamon,” in light of, “My dog Cinnamon loves this dish.” Theingredient annotation component 305 may identify the term “cinnamon” in the first sentence as an ingredient based on its placement within the sentence. - In addition, the
ingredient annotation component 305 may also assign metadata about each identified ingredient. For example, such metadata may include a type of ingredient (e.g., meat, vegetable, spice, etc.), whether the ingredient is fresh or packaged, nutritional information, and the like. To determine such information, theingredient annotation component 305 may process the identified ingredients through dictionaries that specify ingredient types, nutritional information, etc. - The
method annotation component 310 analyzes the extracted text to identify preparation methods and steps for a requested recipe. As shown, themethod annotation component 310 itself includesdictionaries 312 and parsing rules 314. Thedictionaries 312 and parsingrules 314 are a collection of lexical, semantic, and tokenization instructions that are used to identify specific steps from common language constructs. Themethod annotation component 310 may identify which preparation methods and steps are common and uncommon to a specific dish. To do so, themethod annotation component 310 may determine how common a preparation method is based on a frequency of the step in different recipes. Further, themethod annotation component 310 may assign metadata about each identified step and method. For example, such metadata may include an amount of time spent per step, temperatures used in each step, whether the step is an example of a certain preparation (e.g., frying, baking, etc.), and the like. - The
analytical component 315 is configured to perform a variety of analytics on the text and metadata annotated by theingredient annotation component 305 and themethod annotation component 310. By doing so, the analytical component may loosely predict whether a culinary recipe conforms to criteria specified in a search query. For example, if the search query submitted by specifies that the resulting culinary recipe must be low sodium, theanalytical component 315 may filter ingredients that are high in sodium. To do so, the analytical component may disregard ingredients that are known to be high in sodium, such as processed ingredients, brined ingredients, soy sauces, etc. For example, theingredient annotation component 305 may identify canned olives as a common ingredient to a vegetable lasagna dish. If the search query specifies requests a recipe for a particular dish but have a low sodium preparation, then theanalytical component 305 may filter canned olives from the generated recipe because canned olives are typically marinated in brine, which results in a higher sodium levels. Further, theanalytic component 315 may factor the high sodium content of canned olives into an analysis of whether to include canned olives in the final generated recipe. - Further,
analytic component 315 may be configured to receive additional information about the user sending the search query (or other individual) to assist in performing predictive analytics to generate the recipe. For instance, the information may include medical conditions, allergies, etc., that the user may have. In turn, theanalytical component 315 may establish predictive models that determine a recipe adhering to a dietary plan for the medical condition. For example, if theanalytical component 315 receives information that indicates that the user has diabetes, then theanalytical component 315 may identify ingredients and methods, based on the text previously annotated, that provides a low yield of sugar and carbohydrates. Conversely, theanalytical component 315 may filter ingredients high in sugar and carbohydrates. - The
generation component 320 is configured to create a culinary recipe that conforms to the user's search based on the data transmitted by theanalytical component 315. Further, thegeneration component 320 may be configured to alternatively present the user with a variety of ingredients and cooking methods for a particular recipe. The user may then select from the variety of ingredients and cooking methods and submit the selection to theapplication 107. When theapplication 107 receives a selection of ingredients and methods from the user, thegeneration component 320 may create a recipe based on the selection and return the generated recipe to the user. -
FIG. 4 illustrates a method 400 for generating a culinary recipe, according to one embodiment. A user may submit a search query for a culinary recipe through an application executing on a client computer to an application on a server computer. Assume that the search query corresponds to the example information provided in theinterface 200, where a user searches for a low-sodium vegetarian lasagna dish that excludes mushrooms as an ingredient. - At
step 405, the server application receives a search query for a recipe from the user. Atstep 410, the application retrieves relevant recipes corresponding to the search query. The application performs a crawl search through various recipe sources, such as recipe websites, food blogs, local databases, and the like to obtain the recipes. The application extracts the text from each of the collected recipes and applies dictionaries and parsing rules to identify ingredient variations and different preparation methods associated with the requested recipe. Continuing the example, the application retrieves recipes that are relevant to vegetable lasagna from the recipe sources and extracts the text from each available recipe. Doing so allows the application to analyze the recipes to derive a variety of linguistic and statistical data about the requested recipe. - At
step 415, the application determines ingredient variations for the dish associated with the various recipes obtained. The application identifies ingredients that are common to a given dish and also identifies ingredients that are uncommon by analyzing the unstructured text of each collected recipe. To do so, the application may determine how frequently a given ingredient appears in the recipe and among other collected recipes. For example, the application may determine that ingredients common to vegetable lasagna may include lasagna noodles, spinach, and olives, while uncommon ingredients may include peperoncini and avocado. Further, the application may also assign metadata to each ingredient, such as nutritional information, nutritional properties, whether an ingredient is processed or fresh, related ingredients, etc. Doing so allows the application to determine, for example, certain ingredients that may be substituted for other ingredients in the resulting recipe. - At
step 420, the application determines variations in preparing specified dish. The application identifies cooking methods and steps that are common and uncommon in preparing a given dish. To do so, the application may determine how frequently a given step appears in each of the recipes identified atstep 410. For example, the application may determine that boiling lasagna noodles is a common step in preparing lasagna. Further, the application may also assign metadata to each step, such as time information, temperature information, and the like. - At
step 425, the application evaluates the annotated ingredient and cooking method data and generates a culinary recipe based on the ingredient variations, cooking method variations, and the search criteria. The application may rank certain ingredients based on the frequency at which the ingredient appears in other recipes, the nutritional information of each ingredient, and other metrics. Further, the application may also remove ingredients and methods that do not conform to criteria specified in the recipe search. Returning to the example from above, the search query specifies to exclude mushrooms, and in response, the application excludes mushrooms from the recipe and identifies alternatives that can be used in place of mushrooms. Further, assume that the application identifies canned olives as a common ingredient. However, because the request specifies that the generated recipe should be low sodium, the application may determine that canned olives are high in sodium because they are typically marinated in brine, and as a result, the application may exclude canned olives in the generated recipe. Additionally, the application may use data associated with the user in generating the recipe. Such data may include patient charts and other information that indicates medical conditions that the user has. The application may adjust the generated recipe according to the data. For example, if the user data specifies certain allergies, the application may exclude ingredients that aggravate such allergies and supplement the ingredients with alternatives. Atstep 430, the application returns the generated recipe to the user. - Alternatively, the application may present the user with a list of result ingredients and methods to choose in creating the recipe. For example, the list may include the top ten most common ingredients and the top ten most uncommon ingredients for the requested dish. Further, the list may also include the most common and uncommon preparation methods for the requested dish. Once the user receives the list, the user may select which ingredients and preparation methods to use in the final recipe and submit the result to the application. In turn, the application generates the recipe based on the user selection.
-
FIG. 5 illustrates an exampleserver computing system 500 configured to generate culinary recipes using text analytics, according to one embodiment. As shown,computing system 500 includes, without limitation, a central processing unit (CPU) 605, anetwork interface 515, amemory 520, andstorage 530, each connected to abus 517.Computing system 500 may also include an I/O device interface 510 connecting I/O devices 512 (e.g., keyboard, display and mouse devices) to thecomputing system 500. Further, in context of this disclosure, the computing elements shown incomputing system 500 may correspond to a physical computing system (e.g., a system in a data center) or may be a virtual computing instance executing within a computing cloud. -
CPU 505 retrieves and executes programming instructions stored inmemory 520 as well as stores and retrieves application data residing in the storage 630. Theinterconnect 517 is used to transmit programming instructions and application data betweenCPU 505, I/O devices interface 510,storage 530,network interface 515, andmemory 520. Note,CPU 505 is included to be representative of a single CPU, multiple CPUs, a single CPU having multiple processing cores, and the like.Memory 520 is generally included to be representative of a random access memory.Storage 530 may be a disk drive storage device. Although shown as a single unit,storage 530 may be a combination of fixed and/or removable storage devices, such as fixed disc drives, removable memory cards, or optical storage, network attached storage (NAS), or a storage area-network (SAN). - Illustratively,
memory 520 includes anapplication 522.Storage 530 includesapplication data 532 anduser data 534.Application 522 receives search queries and generates a culinary recipe based on the search query using text analytics.Application 522 itself includes aretrieval component 523,annotation components 524, ananalytical component 525, and ageneration component 526. Theretrieval component 523 collects culinary recipes that are relevant to the search query from a variety of recipe sources (e.g., recipe websites, food magazines, food blogs, etc.) and extracts text from the recipes. Theannotation components 524 use a set of dictionaries and parsing rules to identify and annotate ingredients and preparation methods for the recipe. Theanalytical component 525 creates predictive models based on the annotated data to identify a recipe that conforms to the search query (and the user data 534). Thegeneration component 526 generates the final recipe and presents the recipe to the user. - In the preceding, reference is made to embodiments of the invention. However, it should be understood that the invention is not limited to specific described embodiments. Instead, any combination of the following features and elements, whether related to different embodiments or not, is contemplated to implement and practice the invention. Furthermore, although embodiments of the invention may achieve advantages over other possible solutions and/or over the prior art, whether or not a particular advantage is achieved by a given embodiment is not limiting of the invention. Thus, the following aspects, features, embodiments and advantages are merely illustrative and are not considered elements or limitations of the appended claims except where explicitly recited in a claim(s). Likewise, reference to “the invention” shall not be construed as a generalization of any inventive subject matter disclosed herein and shall not be considered to be an element or limitation of the appended claims except where explicitly recited in a claim(s).
- The present invention may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
- The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
- Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
- Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
- Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.
- These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
- The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
- The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.
- As described, embodiments presented herein provide techniques for generating a culinary recipe using text analytics methods. Advantageously, using text analytics on a number of unstructured recipes for a particular dish allows many different possibilities for preparing the dish to be identified. Performing further analytics on the possible ingredients and preparation methods results in a recipe that conforms to the requests of a user as well as the user's dietary needs.
- While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.
Claims (7)
1. A computer-implemented method, comprising:
receiving, via a processor, a recipe request, wherein the recipe request specifies a dish and a set of criteria;
retrieving a plurality of recipe texts corresponding to the specified dish;
parsing each of the recipe texts to identify one or more ingredients and one or more methods used in preparing the specified dish and to associate metadata to one or more of the identified ingredients and methods;
generating, from the associated metadata of the identified ingredients and methods, a statistical model for preparing the specified dish; and
generating a combination of the identified ingredients and methods for preparing the specified dish based on the specified set of criteria and the statistical model.
2. The method of claim 1 , wherein the plurality of recipe texts are retrieved from online recipe websites and local databases.
3. The method of claim 1 , wherein the set of criteria includes nutritional information, preferred ingredients, and ingredients to exclude from the generated combination.
4. The method of claim 3 , wherein the set of criteria further includes medical information and dietary restrictions associated with a user.
5. The method of claim 1 , further comprising:
returning at least one of the identified ingredients and methods to a client computer, wherein the client computer sent the recipe request;
receiving a selection one or more of the at least one of the identified ingredients and methods; and
generating a combination of the identified ingredients and methods based on the selection.
6. The method of claim 1 , wherein the metadata associated with the identified ingredients includes a type, nutritional information, and whether the ingredient is common to the specified recipe, and wherein the metadata associated with the identified methods includes cooking times and preparation temperatures.
7. The method of claim 1 , wherein the ingredients and methods are identified based on a frequency of appearances in the parsed recipe texts.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/557,101 US20150220624A1 (en) | 2014-01-31 | 2014-12-01 | Recipe creation using text analytics |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/170,053 US9495360B2 (en) | 2014-01-31 | 2014-01-31 | Recipe creation using text analytics |
US14/557,101 US20150220624A1 (en) | 2014-01-31 | 2014-12-01 | Recipe creation using text analytics |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/170,053 Continuation US9495360B2 (en) | 2014-01-31 | 2014-01-31 | Recipe creation using text analytics |
Publications (1)
Publication Number | Publication Date |
---|---|
US20150220624A1 true US20150220624A1 (en) | 2015-08-06 |
Family
ID=53755015
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/170,053 Expired - Fee Related US9495360B2 (en) | 2014-01-31 | 2014-01-31 | Recipe creation using text analytics |
US14/557,101 Abandoned US20150220624A1 (en) | 2014-01-31 | 2014-12-01 | Recipe creation using text analytics |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/170,053 Expired - Fee Related US9495360B2 (en) | 2014-01-31 | 2014-01-31 | Recipe creation using text analytics |
Country Status (1)
Country | Link |
---|---|
US (2) | US9495360B2 (en) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9721008B1 (en) | 2016-06-09 | 2017-08-01 | International Business Machines Corporation | Recipe generation utilizing natural language processing |
US20190251202A1 (en) * | 2018-02-12 | 2019-08-15 | Chef Automation Co. Ltd. | Smart recipe recommendation apparatus, method thereof and automatic cooking apparatus |
US10679750B2 (en) | 2016-08-09 | 2020-06-09 | International Business Machines Corporation | System, method, and storage medium to generate predictive medical feedback |
US11182815B1 (en) * | 2018-08-21 | 2021-11-23 | Sarath Chandar Krishnan | Methods and apparatus for a dish rating and management system |
CN113768366A (en) * | 2020-06-09 | 2021-12-10 | 珠海优特智厨科技有限公司 | Blanking method and device, storage medium and computing equipment |
US11232259B1 (en) * | 2020-11-30 | 2022-01-25 | Kpn Innovations, Llc. | Methods and systems for personal recipe generation |
US20220043966A1 (en) * | 2020-08-06 | 2022-02-10 | Cookpad Inc. | Cooking support device, cooking support method, and cooking support program |
US11694141B2 (en) * | 2020-03-27 | 2023-07-04 | Robert Bosch Gmbh | On-demand workflow combination and variant generation |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10262030B1 (en) * | 2013-04-22 | 2019-04-16 | Domo, Inc. | Automatic dynamic reusable data recipes |
US9754508B2 (en) * | 2013-11-14 | 2017-09-05 | Nutrisher Ltd. | Computerized method and system for analyzing and processing a food recipe |
US20150339394A1 (en) * | 2014-05-20 | 2015-11-26 | Tasty Time, Inc. | Extracting Online Recipes, and Arranging and Generating a Cookbook |
EP3189510B1 (en) * | 2014-09-03 | 2022-04-13 | Electrolux Appliances Aktiebolag | Method for data communication with a domestic appliance by a mobile computer device, mobile computer device and domestic appliance |
US20190311647A1 (en) * | 2018-04-04 | 2019-10-10 | Connected Cooking Solutions Private Limited | Methods and Systems for Conversationalization of Recipes |
US20240041251A1 (en) * | 2018-04-13 | 2024-02-08 | Futuristic Labs Private Limited | Artificial Intelligence Driven Cooking System and Methods Employed Thereof |
WO2020010437A1 (en) * | 2018-07-09 | 2020-01-16 | 7262591 Canada Ltd. | An on-line system and method for searching recipes for meal planning |
US12073616B2 (en) | 2018-11-20 | 2024-08-27 | Electrolux Home Products, Inc. | System for integrated device connectivity and agile device control for dynamic object tracking and management |
US11631010B1 (en) | 2019-01-06 | 2023-04-18 | Adaptics Limited | System and method for use with connected kitchen appliances |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050192869A1 (en) * | 2002-06-13 | 2005-09-01 | Dentsu, Inc. | Recipe providing system and method thereof |
US20090071315A1 (en) * | 2007-05-04 | 2009-03-19 | Fortuna Joseph A | Music analysis and generation method |
US20110055044A1 (en) * | 2009-08-31 | 2011-03-03 | Peter Wiedl | Recipe engine system and method |
US20130149677A1 (en) * | 2011-12-12 | 2013-06-13 | Josiah A. Slone | System and methods for virtual cooking with food pairing |
US20140280148A1 (en) * | 2013-03-15 | 2014-09-18 | Rakuten, Inc. | Method for analyzing and categorizing semi-structured data |
US20150212661A1 (en) * | 2014-01-27 | 2015-07-30 | Foodpairing Nv | Method and system for creating a food or drink recipe |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8145854B1 (en) * | 2006-06-08 | 2012-03-27 | Rusty Shawn Lee | Method and apparatus for controlling automated food preparation systems |
US8412579B2 (en) | 2007-12-18 | 2013-04-02 | Carlos Gonzalez | Recipes management system |
US8419434B2 (en) | 2008-04-15 | 2013-04-16 | International Business Machines Corporation | Interactive recipe preparation using interactive cooking device to communicate with kitchen appliances |
US20100153209A1 (en) | 2008-12-15 | 2010-06-17 | De Rubertis Corbin P | System and method for calculating candidate recipes for consumers using widgets based on consumer target data |
US20120136864A1 (en) | 2010-11-30 | 2012-05-31 | Robert Thomas Ochtel | Aggregation of Recipe Information, Meal Planning and Preparation |
US20120317505A1 (en) | 2011-06-08 | 2012-12-13 | Jonah Schwartz | System and method for publishing recipes on an online medium |
US20120322032A1 (en) | 2011-06-17 | 2012-12-20 | Spinning Plates, Llc | Methods and systems for electronic meal planning |
US9286589B2 (en) | 2011-10-14 | 2016-03-15 | Caelo Media, Llc | Method and system for customizing a project |
US20130149679A1 (en) | 2011-12-12 | 2013-06-13 | Yukie J. Tokuda | System and methods for virtual cooking with recipe optimization |
US20130183642A1 (en) | 2012-01-12 | 2013-07-18 | Apperax LLC | System and method for displaying recipes visually |
WO2013125201A1 (en) * | 2012-02-21 | 2013-08-29 | パナソニック株式会社 | Device for presenting recipe and method for presenting recipe |
JP5238895B1 (en) * | 2012-04-26 | 2013-07-17 | 楽天株式会社 | Information processing apparatus, information processing method, information processing program, and recording medium |
US9098588B2 (en) * | 2012-06-27 | 2015-08-04 | Rakuten, Inc. | Information processing apparatus, information processing method, and information processing program |
-
2014
- 2014-01-31 US US14/170,053 patent/US9495360B2/en not_active Expired - Fee Related
- 2014-12-01 US US14/557,101 patent/US20150220624A1/en not_active Abandoned
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050192869A1 (en) * | 2002-06-13 | 2005-09-01 | Dentsu, Inc. | Recipe providing system and method thereof |
US20090071315A1 (en) * | 2007-05-04 | 2009-03-19 | Fortuna Joseph A | Music analysis and generation method |
US20110055044A1 (en) * | 2009-08-31 | 2011-03-03 | Peter Wiedl | Recipe engine system and method |
US20130149677A1 (en) * | 2011-12-12 | 2013-06-13 | Josiah A. Slone | System and methods for virtual cooking with food pairing |
US20140280148A1 (en) * | 2013-03-15 | 2014-09-18 | Rakuten, Inc. | Method for analyzing and categorizing semi-structured data |
US20150212661A1 (en) * | 2014-01-27 | 2015-07-30 | Foodpairing Nv | Method and system for creating a food or drink recipe |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9721008B1 (en) | 2016-06-09 | 2017-08-01 | International Business Machines Corporation | Recipe generation utilizing natural language processing |
US10679750B2 (en) | 2016-08-09 | 2020-06-09 | International Business Machines Corporation | System, method, and storage medium to generate predictive medical feedback |
US20190251202A1 (en) * | 2018-02-12 | 2019-08-15 | Chef Automation Co. Ltd. | Smart recipe recommendation apparatus, method thereof and automatic cooking apparatus |
US11182815B1 (en) * | 2018-08-21 | 2021-11-23 | Sarath Chandar Krishnan | Methods and apparatus for a dish rating and management system |
US11694141B2 (en) * | 2020-03-27 | 2023-07-04 | Robert Bosch Gmbh | On-demand workflow combination and variant generation |
CN113768366A (en) * | 2020-06-09 | 2021-12-10 | 珠海优特智厨科技有限公司 | Blanking method and device, storage medium and computing equipment |
US20220043966A1 (en) * | 2020-08-06 | 2022-02-10 | Cookpad Inc. | Cooking support device, cooking support method, and cooking support program |
US11599712B2 (en) * | 2020-08-06 | 2023-03-07 | Cookpad Inc. | Cooking support device, cooking support method, and cooking support program |
US11232259B1 (en) * | 2020-11-30 | 2022-01-25 | Kpn Innovations, Llc. | Methods and systems for personal recipe generation |
Also Published As
Publication number | Publication date |
---|---|
US20150220603A1 (en) | 2015-08-06 |
US9495360B2 (en) | 2016-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9495360B2 (en) | Recipe creation using text analytics | |
US10839151B2 (en) | Systems and methods for automatic analysis of text-based food-recipes | |
US9870550B2 (en) | Modifying existing recipes to incorporate additional or replace existing ingredients | |
US10255546B2 (en) | Question-answering system | |
US11556803B2 (en) | Modifying a set of instructions based on bootstrapped knowledge acquisition from a limited knowledge domain | |
US10891322B2 (en) | Automatic conversation creator for news | |
KR20210042393A (en) | Systems and methods for performing a computer implemented prior art search | |
US9721008B1 (en) | Recipe generation utilizing natural language processing | |
CN111274397B (en) | Method and device for establishing entity relation detection model | |
US8825620B1 (en) | Behavioral word segmentation for use in processing search queries | |
US11080482B2 (en) | Smart meal preparation using a sensor-enabled kitchen environment | |
US11562446B2 (en) | Smart meal preparation using a wearable device for accommodating consumer requests | |
JP7141191B2 (en) | Method, system and computer program (query processing) | |
Diwan et al. | A named entity based approach to model recipes | |
US9916375B2 (en) | Extraction of concept-based summaries from documents | |
US11061943B2 (en) | Constructing, evaluating, and improving a search string for retrieving images indicating item use | |
US20180114284A1 (en) | Recipe suggestion based on customer feedback | |
US10528660B2 (en) | Leveraging word patterns in the language of popular influencers to predict popular trends | |
US20170344892A1 (en) | Predicting a Chromatic Identity of an Existing Recipe and Modifying the Existing Recipe to Meet a Desired Set of Colors by Adding New Elements to the Recipe | |
RU2689423C1 (en) | Method for generating recommendations on nutrition of a user based on health thereof | |
US20190205434A1 (en) | Constructing, evaluating, and improving a search string for retrieving images indicating item use | |
JP2016045552A (en) | Feature extraction program, feature extraction method, and feature extraction apparatus | |
US20190026270A1 (en) | System and method for identifying candidates for back-of-book index | |
US9489629B2 (en) | Tailored supporting evidence | |
US11645329B2 (en) | Constructing, evaluating, and improving a search string for retrieving images indicating item use |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BHATT, DHRUV A.;WERTS, DAVID B.;REEL/FRAME:034291/0221 Effective date: 20140128 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |