CN116991968B - 一种基于树结构的菜谱生成方法、系统、存储介质及设备 - Google Patents
一种基于树结构的菜谱生成方法、系统、存储介质及设备 Download PDFInfo
- Publication number
- CN116991968B CN116991968B CN202311243302.7A CN202311243302A CN116991968B CN 116991968 B CN116991968 B CN 116991968B CN 202311243302 A CN202311243302 A CN 202311243302A CN 116991968 B CN116991968 B CN 116991968B
- Authority
- CN
- China
- Prior art keywords
- menu
- tree
- constraint rule
- recipe
- training
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000003860 storage Methods 0.000 title claims abstract description 8
- 239000000463 material Substances 0.000 claims abstract description 121
- 238000012549 training Methods 0.000 claims abstract description 70
- 235000013305 food Nutrition 0.000 claims abstract description 66
- 230000009471 action Effects 0.000 claims abstract description 53
- 238000009826 distribution Methods 0.000 claims abstract description 27
- 238000005070 sampling Methods 0.000 claims abstract description 17
- 238000007781 pre-processing Methods 0.000 claims abstract description 9
- 239000013598 vector Substances 0.000 claims description 90
- 230000006870 function Effects 0.000 claims description 48
- 238000013528 artificial neural network Methods 0.000 claims description 14
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 6
- 238000004519 manufacturing process Methods 0.000 claims description 5
- 238000012545 processing Methods 0.000 abstract description 4
- 238000005520 cutting process Methods 0.000 description 17
- 244000061458 Solanum melongena Species 0.000 description 15
- 235000002597 Solanum melongena Nutrition 0.000 description 15
- 238000010586 diagram Methods 0.000 description 12
- 238000005406 washing Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 238000004458 analytical method Methods 0.000 description 7
- 238000010606 normalization Methods 0.000 description 7
- 230000000306 recurrent effect Effects 0.000 description 7
- 229920002472 Starch Polymers 0.000 description 6
- 239000000203 mixture Substances 0.000 description 6
- 239000008107 starch Substances 0.000 description 6
- 235000019698 starch Nutrition 0.000 description 6
- 238000003756 stirring Methods 0.000 description 6
- 244000291564 Allium cepa Species 0.000 description 5
- 238000004140 cleaning Methods 0.000 description 5
- 235000002732 Allium cepa var. cepa Nutrition 0.000 description 4
- 238000000354 decomposition reaction Methods 0.000 description 4
- 239000008157 edible vegetable oil Substances 0.000 description 4
- 238000003475 lamination Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 235000015277 pork Nutrition 0.000 description 4
- 241000237502 Ostreidae Species 0.000 description 3
- 230000004913 activation Effects 0.000 description 3
- 238000009835 boiling Methods 0.000 description 3
- 238000010438 heat treatment Methods 0.000 description 3
- 235000020636 oyster Nutrition 0.000 description 3
- 235000015067 sauces Nutrition 0.000 description 3
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 3
- ORILYTVJVMAKLC-UHFFFAOYSA-N Adamantane Natural products C1C(C2)CC3CC1CC2C3 ORILYTVJVMAKLC-UHFFFAOYSA-N 0.000 description 2
- 240000002234 Allium sativum Species 0.000 description 2
- 235000010469 Glycine max Nutrition 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000005315 distribution function Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 235000004611 garlic Nutrition 0.000 description 2
- 238000005304 joining Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 239000003921 oil Substances 0.000 description 2
- 238000005554 pickling Methods 0.000 description 2
- 150000003839 salts Chemical class 0.000 description 2
- 235000021419 vinegar Nutrition 0.000 description 2
- 239000000052 vinegar Substances 0.000 description 2
- 235000010167 Allium cepa var aggregatum Nutrition 0.000 description 1
- 235000002566 Capsicum Nutrition 0.000 description 1
- 240000008574 Capsicum frutescens Species 0.000 description 1
- 244000068988 Glycine max Species 0.000 description 1
- 244000046052 Phaseolus vulgaris Species 0.000 description 1
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 1
- 240000006677 Vicia faba Species 0.000 description 1
- 235000010749 Vicia faba Nutrition 0.000 description 1
- 235000002098 Vicia faba var. major Nutrition 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000001390 capsicum minimum Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001125 extrusion Methods 0.000 description 1
- 235000021060 food property Nutrition 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000002075 main ingredient Substances 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- 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/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/322—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/211—Syntactic parsing, e.g. based on context-free grammar [CFG] or unification grammars
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Databases & Information Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及文本数据处理领域,具体为一种基于树结构的菜谱生成方法、系统、存储介质及设备,包括以下步骤:获取菜谱中的文本信息,经预处理后构建菜谱文本数据集;基于数据集中的菜谱文本,提取动作关键字和食材关键字,将关键字通过设置的根节点进行拼接,得到树结构形式的菜谱,即菜谱树;基于菜谱树构建约束规则集合,根据得到的约束规则集合转换成预训练嵌入编码值集合,嵌入编码值基于自编码器网络进行训练,训练后,约束规则在网络中对应的潜空间编码作为嵌入编码;在菜谱生成模型的潜空间中,经高斯分布进行采样并传递给菜谱生成模型的解码器部分,模型的输出为生成的新菜谱。
Description
技术领域
本发明涉及文本数据处理技术领域,具体为一种基于树结构的菜谱生成方法、系统、存储介质及设备。
背景技术
本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。
餐饮行业会定期或不定期的对菜品进行更新,以获得可能的创新菜,例如改变食材、辅料的配比,食材的形态、菜品的火候以及制作步骤等内容,这些信息会以文本的形式记载到菜谱中,从而获得更新后的菜谱。
菜谱更新的过程需要执行者掌握食材的属性、辅料的性能以及处理食材时各步骤之间的逻辑关系等繁杂的内容,目前需要通过人工来进行,由于需要依赖人的主观经验,导致人力成本高昂。
现有技术中存在一些依赖计算机进行处理的方法,将菜谱中的文本信息通过神经网络处理,来生成更新后的菜谱,从而帮助餐饮行业从业者来获得创新菜,这类神经网络仅仅是语言模型,通常只能识别菜谱中的文本以及文本中包含的语法信息,并且关注生成的内容读起来是否通顺,而没有关注生成的内容是否符合菜品在制成时的逻辑,导致生成的菜谱结果难以符合餐饮行业的需求。
发明内容
为了解决上述背景技术中存在的技术问题,本发明提供一种基于树结构的菜谱生成方法、系统、存储介质及设备,构建菜谱约束规则集,使文本形式的菜谱通过提炼关键字,转化成上下文无关语法进行约束的菜谱树,将菜谱树输入自编码器网络,从编码得到的潜空间经过采样传给解码器进而生成新的菜谱,解决了人工大批量生成菜谱成本高昂的问题。
为了实现上述目的,本发明采用如下技术方案:
本发明的第一个方面提供一种基于树结构的菜谱生成方法,包括以下步骤:
获取菜谱中的文本信息,经预处理后构建菜谱文本数据集;
基于数据集中的菜谱文本,提取动作关键字和食材关键字,将关键字通过设置的根节点进行拼接,得到树结构形式的菜谱,即菜谱树;
基于菜谱树构建约束规则集合,根据得到的约束规则集合转换成预训练嵌入编码值集合,嵌入编码值基于自编码器网络进行训练,训练后,约束规则在网络中对应的潜空间编码作为嵌入编码;
在菜谱生成模型的潜空间中,经高斯分布进行采样并传递给菜谱生成模型的解码器部分,模型的输出为生成的新菜谱。
进一步的,基于菜谱树构建约束规则集合,包括:
菜谱树进行遍历操作,取处于同一连线上的非叶子结点和对应父节点作为一条动作约束规则,去掉重复约束规则形成动作约束规则集合;
菜谱树进行遍历操作,取处于同一连线上的叶子结点和对应父节点作为一条动作约束规则,去掉重复约束规则制作成食材约束规则集合;
动作约束规则集合和食材约束规则集合进行取并集操作,形成总约束规则集合。
进一步的,在菜谱生成模型的潜空间中,经高斯分布进行采样并传递给菜谱生成模型的解码器部分,模型的输出为生成的新菜谱,包括:
构建训练集,并基于自编码器架构构建菜谱生成模型;
设置损失函数,训练基于树结构的菜谱生成模型;
基于树结构的菜谱生成模型中取解码器部分,通过在潜空间进行采样获得固定维度的向量传输给解码器,生成规则序列形式的菜谱;
将规则序列形式的菜谱转换成树结构形式的菜谱,得到新生成的菜谱。
进一步的,构建训练集时,菜谱树进行遍历获得遍历序列,得到的若干条遍历序列形成训练集,遍历序列表示为 ,/>,/>是一条约束规则,/>为上下文无关语法四元组中/>的V,V是动作结点集合,/>属于/>,/>是食材集合,/>属于总约束规则集合R。
进一步的,菜谱生成模型包括编码器和解码器,基于人工神经网络拟合训练数据集。
进一步的,设置的损失函数中,结点序列使用基于概率分布度量的损失函数。
进一步的,生成规则序列形式的菜谱时,取模型的解码器部分,基于高斯分布从潜空间取向量,再送到模型的解码器部分,得到拟合出来的向量序列;
得到的向量序列中的每一项分别计算条件概率得到在前一项条件下的每一项的向量,确定拟合出来的向量序列中的每一项向量对应序号,从总约束规则集合获取序号对应的规则,将向量序列转换成规则序列。
进一步的,将规则序列形式的菜谱转换成树结构形式的菜谱,得到新生成的菜谱,具体为:将规则序列进行遍历,转换成树结构形式的菜谱树,新生成的一颗菜谱树作为一个菜谱。
本发明的第二个方面提供实现上述方法所需的系统,包括:
文本预处理模块,被配置为:获取菜谱中的文本信息,经预处理后构建菜谱文本数据集;
文本结构转换模块,被配置为:基于数据集中的菜谱文本,提取动作关键字和食材关键字,将关键字通过设置的根节点进行拼接,得到树结构形式的菜谱,即菜谱树;
约束规则模块,被配置为:基于菜谱树构建约束规则集合,根据得到的约束规则集合转换成预训练嵌入编码值集合,嵌入编码值基于自编码器网络进行训练,训练后,约束规则在网络中对应的潜空间编码作为嵌入编码;
规则关联模块,被配置为:基于菜谱树构建约束规则集合,根据得到的约束规则集合转换成预训练嵌入编码值集合,嵌入编码值基于自编码器网络进行训练,训练后,约束规则在网络中对应的潜空间编码作为嵌入编码;
菜谱生成模块,被配置为:在菜谱生成模型的潜空间中,经高斯分布进行采样并传递给菜谱生成模型的解码器部分,模型的输出为生成的新菜谱。
本发明的第三个方面提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述一种基于树结构的菜谱生成方法中的步骤。
本发明的第四个方面提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现如上述一种基于树结构的菜谱生成方法中的步骤。
与现有技术相比,以上一个或多个技术方案存在以下有益效果:
1、将文本形式的菜谱进行解耦,分离了菜谱中的行文语法部分和做菜逻辑部分,将菜谱创作的关注点转移到做菜逻辑上面,从而将文本形式的菜谱通过提炼关键字,转化成上下文无关语法的菜谱树,在进行约束后,将得到的编码嵌入到菜谱树中经过模型生成新的菜谱,解决了菜谱表示形式只有纯文本的问题,也解决了文本形式菜谱无法使用约束规则输入给神经网络进行训练的问题,并且人工大批量生成菜谱成本高昂的问题。
2、规则约束的方式约束模型的训练和新菜谱的生成,相比于使用文本形式的菜谱数据训练模型以及生成菜谱,规则约束的方式更加容易让人理解生成的结果,从而更容易让大众心理接受。生成的菜谱是树结构形式的菜谱,相比于文本形式的菜谱,树结构形式的菜谱结构更加清晰。
3、基于深度学习的方法,实现了从潜空间高斯采样生成新的菜谱,使用时无需具有专业的厨师经验,降低了用户研发新菜谱的成本,解决了研发大批量新菜谱成本高昂的问题。
4、同文本形式的菜谱生成模型相比,本模型规模更小,对训练硬件设备要求更低,生成菜谱多样性更高。
附图说明
构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
图1是本发明实施例一提供的菜谱文本生成过程的流程示意图;
图2是本发明实施例一提供的全连接自编码器模型示意图;
图3是本发明实施例一提供的多叉树形式的菜谱示意图;
图4是本发明实施例一提供的菜谱文本生成模型示意图;
图5是本发明实施例一提供的生成的多叉树形式的菜谱示意图;
图6是本发明实施例一提供的生成的多叉树形式的菜谱示意图;
图7是本发明实施例二提供的菜谱文本生成过程的流程示意图;
图8是本发明实施例二提供的多叉树形式的菜谱示意图;
图9是本发明实施例二提供的简化后的多叉树形式的菜谱示意图;
图10是本发明实施例二提供的二叉树形式的菜谱示意图;
图11是本发明实施例二提供的菜谱文本生成模型示意图;
图12是本发明实施例三提供的菜谱文本生成过程的流程示意图;
图13是本发明实施例三提供的多叉树形式的菜谱示意图;
图14是本发明实施例三提供的简化后的多叉树形式的菜谱示意图;
图15是本发明实施例三提供的菜谱文本生成模型示意图。
具体实施方式
下面结合附图与实施例对本发明作进一步说明。
应该指出,以下详细说明都是示例性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
实施例一:
在本实施例中,基于树结构的菜谱生成方法包括:
S101:收集并构建菜谱文本数据集,从公开网络搜集菜谱文本数据,并进行数据清洗,去除特殊符号,构建菜谱文本数据集。
在本实施例中,共搜集了134条菜谱,提取描述菜谱流程的文本以及食材明细的文本放在一起构建菜谱文本数据集,数据清洗将中文数字转换成阿拉伯数字。
S102:将文本形式的菜谱数据转换成多叉树形式的菜谱。
将文本形式菜谱转换成多叉树形式菜谱,通过倒叙阅读文本形式菜谱,通过词法分析提炼动作关键字、食材关键字以及属性关键字使用语法分析的方式将文本形式菜谱转换成多叉树形式的菜谱。
在本实施例中,以表1所示的菜谱为例。
表1:文本形式菜谱数据表
在本实施例中,将文本形式的菜谱数据转换成多叉树形式的菜谱,需要倒叙阅读文本形式的菜谱。
以“茄子洗净后切条”这段文字为例子进行说明,使用词法分析的方式分析一段文本,“茄子”是属于食材这个集合的关键字,“洗”和“切”是属于动作集合的关键字。通过语法分析,动作集合的关键字作为非叶子结点,食材集合的关键字作为叶子结点,转换成树形结构可以表述为“洗->茄子”,其中“切”是“洗”之后的进一步操作,“切”可以作为“洗”的父结点转换成树形结构表示为“切->洗;洗->茄子”。“净”是语法上程度词这里作为“洗”的属性词,转换成树形结构可以表述为“洗{程度:“干净”}->茄子”,“条”也作为描述形状的属性,附着于“切”这个动作,转换成树形结构可以表述为“切{形状:“条”}->洗{程度:“干净”};洗{程度:“干净”}->茄子”。此外,在食材明细文本中可知“茄子”数量是“1个”,进一步可以表述为“切{形状:“条”}->洗{程度:“干净”};洗{程度:“干净”}->茄子{数量:“1个”}”。
通过这种方式,可以将文本形式的菜谱转换成多叉树形式的菜谱。本实施例中,多叉树形式的菜谱如图3所示。
S103:计算多叉树形式菜谱的全排列,进行数据扩充。
本实施例中,计算多叉树形式菜谱的具体步骤包括:取出多叉树形式的菜谱,选取一个具有两个及以上子树的结点,选取该结点的两个子树,交换两个子树,保存子树交换完成的菜谱树,到此就扩充了一次该菜谱树。一个多叉树的全排列的数量为所有结点子树个数的乘积。
S104:构建多叉树形式的菜谱各个结点的属性集合,属性共六种包括形状、火力、程度、时间、数量和重量。
在本实施例中,通过对134个原始的菜谱树结点进行提取,然后去重复,可以总结成六种属性包括形状、火力、程度、时间、数量和重量。在一个具体的实施例中,以“切{形状:“条”}->洗{程度:“干净”};洗{程度:“干净”}->茄子”举例说明,在这个子树中,提取到:形状:“条”、程度:“干净”、程度:“干净”。经过去重,得到:形状:“条”、程度:“干净”。
在本实施例中,所有菜谱树结点提取到属性,部分展示如表2所示。
表2:菜谱树结点属性表
S105:使用多叉树形状的菜谱树构建动作约束规则集合、食材约束规则集合、总约束规则集合。
在本实施例中,通过对多叉树进行先序遍历,获得先序遍历序列。在一个具体实施例中,以图3所示的多叉树举例说明,将图3所示的多叉树进行先序遍历,得到的先序遍历序列如下:
“装盘{}->加入{}热操作,加入{}->冷操作,冷操作->切{'形状':'末'},切{'形状':'末'}->主料,主料->"葱{'数量':'1根'}",热操作->煮{'时间':'5分钟'},煮{'时间':'5分钟'}->冷操作热操作,冷操作->拌{'程度':'均匀'},拌{'程度':'均匀'}->辅料辅料辅料辅料辅料,辅料->"陈醋{'重量':'8克'}",辅料->"蚝油{'重量':'8克'}",辅料->"生抽{'重量':'8克'}",辅料->"淀粉{'重量':'10克'}",辅料->"凉水{'重量':'200克'}",热操作->炒{'程度':'均匀'},炒{'程度':'均匀'}->装盘{}热操作,装盘{}->热操作,热操作->煎{'程度':'金黄'},煎{'程度':'金黄'}->热操作挤{},热操作->烧{'程度':'全熟'},烧{'程度':'全熟'}->辅料,辅料->"食用油{'重量':'30克'}",挤{}->冷操作,冷操作->腌{'时间':'10分钟'},腌{'时间':'10分钟'}->冷操作,冷操作->拌{'程度':'均匀'},拌{'程度':'均匀'}->辅料冷操作,辅料->"食盐{'重量':'若干'}",冷操作->切{'形状':'条'},切{'形状':'条'}->主料,主料->"茄子{'数量':'1个'}",热操作->炒{'程度':'出红油'},炒{'程度':'出红油'}->辅料热操作,辅料->"郫县豆瓣酱{'重量':'5克'}",热操作->炒{'程度':'香'},炒{'程度':'香'}->冷操作冷操作冷操作热操作冷操作,冷操作->切{'形状':'末'},切{'形状':'末'}->主料,主料->"葱{'数量':'1根'}",冷操作->切{'形状':'末'},切{'形状':'末'}->主料,主料->"蒜{'数量':'10瓣'}",冷操作->切{'形状':'末'},切{'形状':'末'}->主料,主料->"辣椒{'数量':'2颗'}",热操作->烧{'程度':'全熟'},烧{'程度':'全熟'}->辅料,辅料->"食用油{'重量':'30克'}",冷操作->腌{'时间':'10分钟'},腌{'时间':'10分钟'}->冷操作,冷操作->拌{'程度':'均匀'},拌{'程度':'均匀'}->辅料辅料冷操作,辅料->"生抽{'重量':'若干'}",辅料->"淀粉{'重量':'若干'}",冷操作->切{'形状':'末'},切{'形状':'末'}->主料,主料->"五花肉{'重量':'100克'}"”;
按先后顺序,将“->”左侧是“辅料”(叶子结点)或者“主料”(对应的父节点)的规则放入到食材约束规则集合,将“->”左侧不是“辅料”(非叶子结点)或者“主料”的规则放入到动作约束规则集合,然后进行去重操作,最后将动作约束规则集合和食材约束规则集合进行合并得到总约束规则集合。本实施例中,得到的总约束规则集合如表3所示。
表3:总约束规则集合
S106:使用食材约束规则集合获得食材的预训练Bert Embedding编码值,再将Bert Embedding编码值通过全连接的自编码器的进行自监督训练,使用经过训练后的模型的潜空间作为食材的Embedding。Bert模型是搜集于网络的预训练好的通用模型,使用食材输入给Bert模型,取Bert模型的最后一层的CLS Token作为食材的Bert Embedding编码值,再将Bert embedding编码值输入给全连接的自编码器的进行自监督训练,
本实施例中,以“主料 ->"五花肉{'重量':'100克'}"”为例子进行说明,提取该条规则中的“五花肉”这个部分,再将提取到的词条加入到材料词条集合,将该集合送入Bert工具箱,取Bert模型的最后一层的CLS Token作为食材的Bert Embedding编码值。将BertEmbedding编码值送入全连接的自编码器进行自监督训练,使用优化器是Adam,学习率是0.0001,batch_size是64,epoch是1000,模型潜空间大小是50,过第1000个epoch训练的模型权重,使用食材对应的潜空间向量作为对应食材的Embedding。
其中,Bert Embedding的编码值长度是1024,在模型的编码器部分,由1024到512的线性层,512的一维批归一化层,512到256的线性层,256的一维批归一化层,256到128的线性层,128的一维批归一化层,128到50的线性层组成。在模型的解码器部分,50的一维批归一化层,50到128的线性层,128的一维批归一化层,128到256的线性层,256的一维批归一化层,256到512的线性层,512的一维批归一化层,512到1024的线性层组成。所有激活函数使用是Leaky ReLU。
如图2所示为本实施例使用的全连接自编码器模型(MSE loss)示意图,食材的Bert Embedding编码值输入到两个全连接层(Fully connecied layers)中,两个全连接层中的模型潜空间大小是50,得到拟合的数据。
S107:基于自编码架构,构建使用卷积和反卷积模块的菜谱生成模型,将多叉树形式的菜谱数据送给模型进行自监督训练,取模型的解码器部分用来生成新的菜谱。使用AdamW优化器进行数据优化:设置学习率为0.0001,batch_size设置为64。
步骤7.1、制作训练集;
步骤7.2、搭建使用自编码器架构的菜谱生成模型;
步骤7.3、设置损失函数:;其中,/>是动作结点的损失函数,/>是食材结点的损失函数,/>是动作和食材属性的损失函数。
步骤7.4、训练使用自编码器架构的菜谱生成模型;
步骤7.5、在基于规则约束和自编码器的菜谱生成模型中取解码器部分,通过在潜空间高斯采样获得随机固定维度的向量送给解码器,进而生成规则序列形式的菜谱;
步骤7.6、将规则序列形式的菜谱转换成多叉树形式的菜谱即新生成的菜谱。
进一步的,步骤7.1中,将多叉树形式的菜谱进行前序遍历获得先序遍历序列,前序遍历序列表示为,其中X是多叉树形式菜谱的前序遍历序列,/>属于上下文无关语法四元组中/>的V,V表示有限非终端符号集合,这里指代动作结点集合,/>属于/>,/>是与V不相交的有限终端符号集合,这里指代食材集合,/>属于R,R是总约束规则集合,Attr是结点属性,属性为{形状:“t1”,火力:“t2”,程度:“t3”,时间:“t4”,数量:“t5”,重量:“t6”}。训练集由若干X构成。
进一步的,步骤7.2中,判断前序遍历序列中的一项/>是在动作约束规则集合还是食材约束规则集合集中,若在动作约束规则集合中则msk设置成1,否则设置成0,将msk与/>对应的one_hot向量相乘。若msk是1,则通过随机初始化的Embedding层,该层大小是617*50。若msk是0,则通过使用食材的Embedding进行初始化的Embedding层,该层大小是186*50。属性通过各自对应的随机初始化Embedding层得到对应的编码值,编码值总长度是12。三组向量拼接,得到向量/>。
进一步的,编码器层共有9层卷积层,卷积核大小都是3,卷积核数量依次是112,112,112,112,128,256,512,1024,1024。没经过一层卷积,都会进行一次BatchNorm。之后经过多次全连接层,将维度压缩到8。
进一步的,解码器层由多个全连接层和4个反卷积模块(Deonvolutional Layers)和3个卷积层(Convolutional Layers)组成,每个反卷积模块包括一个上采样层和一个卷积层,所有卷积核大小都是3。
进一步的,在步骤7.3中,动作结点的损失函数和食材结点的损失函数/>,以及动作和食材属性的损失函数/>全都使用的是KL损失函数:
;
式中为训练集的真实的概率分布,/>为模型拟合出来的概率分布,式中/>是一次损失函数计算中使用到的/>的集合,/>是一次损失函数计算中使用到的/>的集合,是在已知/>条件下/>的概率。
将动作结点的损失函数带入到KL损失函数中,则/>为训练集动作结点的one_hot向量,/>为模型拟合出来的向量。将食材结点的损失函数/>带入到KL损失函数中,则/>为训练集食材结点的one_hot向量,/>为模型拟合出来的向量,式中/>是一次损失函数计算中使用到的/>的集合,Q是一次损失函数计算中使用到的/>的集合。在计算时,若msk是1则拟合出来的向量是动作向量,若msk是0则拟合出来的向量是食材向量。将动作和食材属性的损失函数/>带入到KL损失函数中,则/>为训练集动作和食材属性的one_hot向量,/>为模型拟合出来动作和食材属性的向量。
进一步的,是在已知/>条件下/>的概率,是把多叉树结点的前序遍历序列中每个规则的one_hot(独热编码)作为条件,与拟合出来的下一个位置的向量进行向量对应相乘。
进一步的,在步骤7.5中,训练20000个epoch,保存基于规则约束和自编码器的菜谱生成模型,取模型的解码器部分。使用高斯分布从8维度的潜空间取向量,再送到模型的解码器部分,得到拟合出来的动作向量、食材向量和动作食材的属性向量。将得到的向量通过使用条件概率的方式得到在前一项条件下的向量,再将带有条件的向量取argmax()获得对应的序号,从的动作约束规则集合、食材约束规则集合获取序号对应的规则进而将向量序列转换成规则序列。
进一步的,在步骤7.6中,将规则序列使用栈的方式进行前序遍历,转换成多叉树形式的菜谱树,该新生成的一颗菜谱树可以代表一个菜谱。
使用卷积和反卷积模块的菜谱生成模型如图4所示。
以将图2所示多叉树的先序遍历序列为例子进行说明,首先将该先序遍历序列转成总约束规则集合中规则对应的序号,然后将该序号转成独热编码,再将独热编码送给到使用卷积和反卷积模块的菜谱生成模型中进行自监督训练。取该模型训练的第20000个epoch作为生成模型,从潜空间进行随机采样生成。生成结果如图5、图6所示。
上述过程将文本形式的菜谱转化成树结构形式的菜谱,并将文本形式的菜谱进行解耦,主动分离了文本形式菜谱的行文语法部分和做菜逻辑部分,将菜谱创作的关注点转移到做菜逻辑上面,解决了菜谱表示形式只有纯文本的问题,也解决了文本形式菜谱无法使用约束规则输入给神经网络进行训练的问题。
上述过程使用规则约束的方式约束模型的训练和新菜谱的生成,相比于使用文本形式的菜谱数据训练模型以及生成菜谱,规则约束的方式更加容易让人理解生成的结果,从而更容易让大众心理接受。生成的菜谱是树结构形式的菜谱,相比于文本形式的菜谱,树结构形式的菜谱结构更加清晰。
上述过程基于深度学习的方法,实现了从潜空间高斯采样生成新的菜谱,用户无需具有专业的厨师经验,降低了用户研发新菜谱的成本,解决了研发大批量新菜谱成本高昂的问题。同文本形式的菜谱生成模型相比,本模型规模更小,对训练硬件设备要求更低,生成菜谱多样性更高。
实施例二:
如图7所示,在本实施例中,基于树结构的菜谱生成及交互式优化方法包括以下步骤:
S101:收集并构建菜谱文本数据集,从网络搜集菜谱文本数据,并进行数据清洗,去除特殊符号,构建菜谱文本数据集。
在本实施例中,一共从网络搜集了103条菜谱,提取描述菜谱流程的文本以及食材明细的文本放在一起构建菜谱文本数据集,数据清洗指的是将中文数字转换成阿拉伯数字。
S102:将文本形式的菜谱数据转换成多叉树形式的菜谱。
在本实施例中,网络搜集的文本形式菜谱与实施例一的表1相同。
在本实施例中,将文本形式的菜谱数据转换成多叉树形式的菜谱,需要倒叙阅读文本形式的菜谱。同样以“茄子洗净后切条”为例,使用词法分析的方式分析,表述为“切{形状:“条”}->洗{程度:“干净”};洗{程度:“干净”}->茄子{数量:“1个”}”。通过这种方式,可以将文本形式的菜谱转换成多叉树形式的菜谱。多叉树形式的菜谱如图8所示。
S103:将多叉树形式菜谱进行原子规则分解,转换成二叉树形式的菜谱;具体包括:从多叉树形式的菜谱树的根节点开始,对菜谱树进行遍历。若当前结点有3个或3个以上的子结点,那么将第2个子树和第3个子树拿出来,将“加入”这个词作为第2个结点和第3个结点的父亲结点进行操作,从而形成了一个以“加入”为根节点的树,将该树插入到菜谱树遍历的当前结点第2个子位置上替代原来的第2个子树,对这个过程进行循环操作,最终使得当前结点转换成只有两个子节点的结构。对多叉树形式的菜谱树从根节点进行遍历,对每个结点都进行上述过程的转换操作,从而达到了对多叉树形式菜谱进行原子规则分解的目的。
以“拌”为父结点的子树为例子进行说明,如表4所示:
表4:菜谱分解
如表4所示,以“拌”为父结点的子树,说明结点类型如表4所示,经过去除属性和添加说明结点操作得到步骤2中的结构,进一步进行原子分解操作,将“拌”结点的自上而下的第2和第3个子树进行合并,以“加入”结点作为父节点得到步骤3的结构。
表5:结点类型
本实施例中,将属性关键词去除得到简化后的(经过上述步骤2处理)多叉树形式的菜谱树如图9所示,经过步骤3处理得到的二叉树形式的菜谱树如图10所示。
S104:计算二叉树形式菜谱的全排列,进行数据扩充。在本实施例中,计算二叉树形式菜谱的具体步骤包括:取出二叉树形式的菜谱,选取一个具有两个子树的结点,选取该结点的两个子树,交换两个子树,保存子树交换完成的菜谱树,到此就扩充了一次该菜谱树。一个二叉树的全排列的数量为所有结点子树个数的乘积。
S105:使用二叉树形状的菜谱树构建动作约束规则集合、食材约束规则集合、总约束规则集合。在本实施例中,通过对二叉树进行先序遍历,获得先序遍历序列。在一个具体实施例中,以图10所示的二叉树举例说明,将图9所示的多叉树进行先序遍历,得到先序遍历序列,“装盘->加入热操作,加入->冷操作,冷操作->切,切->主料,主料->'葱',热操作->煮,煮->冷操作热操作,冷操作->拌,拌->辅料加入,辅料->'陈醋',加入->加入辅料,加入->加入辅料,加入->辅料辅料,辅料->'蚝油',辅料->'生抽',辅料->'淀粉',辅料->'凉水',热操作->炒,炒->装盘热操作,装盘->热操作,热操作->煎,煎->热操作挤,热操作->烧,烧->辅料,辅料->'食用油',挤->冷操作,冷操作->腌,腌->冷操作,冷操作->拌,拌->辅料冷操作,辅料->'食盐',冷操作->切,切->主料,主料->'茄子',热操作->炒,炒->辅料热操作,辅料->'郫县豆瓣酱',热操作->炒,炒->冷操作加入,冷操作->切,切->主料,主料->'葱',加入->加入冷操作,加入->加入热操作,加入->冷操作冷操作,冷操作->切,切->主料,主料->'蒜',冷操作->切,切->主料,主料->'辣椒',热操作->烧,烧->辅料,辅料->'食用油',冷操作->腌,腌->冷操作,冷操作->拌,拌->辅料加入,辅料->'生抽',加入->辅料冷操作,辅料->'淀粉',冷操作->切,切->主料,主料->'五花肉'”,按先后顺序,将“->”左侧是“辅料”或者“主料”的规则放入到食材约束规则集合,将“->”左侧不是“辅料”或者“主料”的规则放入到动作约束规则集合,然后进行去重操作,最后将动作约束规则集合和食材约束规则集合进行合并得到总约束规则集合。
S106:对动作约束规则集合、食材约束规则集合、总约束规则集合进行独热编码。在本实施例中,分别对动作约束规则集合和食材约束规则集合进行排序标号,一条动作约束规则独热编码的长度为动作约束规则集合的规则数量。对于每一条动作约束规则,只有该条动作约束规则标号位置的编码数字为1,其余位置编码数字为0。一条食材约束规则独热编码的长度为食材约束规则集合的规则数量,对于每一条食材约束规则,只有该条动作约束规则标号位置的编码数字为1,其余位置编码数字为0。本实施例中的总约束规则集合如表6所示。
表6:总约束规则集合
S107:基于编码器解码器架构,构建使用全连接层的菜谱生成模型,将二叉树形式的菜谱的独热编码送给模型进行自监督训练,取模型的解码器部分用来生成新的菜谱树。
进一步的,在步骤7中,基于编码器解码器架构,构建使用全连接层的菜谱生成模型。生成模型使用AdamW优化器进行数据优化,激活函数设置为leaky_relu:设置学习率为0.0001,batch_size设置为64。
进一步的,在步骤7中,建立使用全连接层的菜谱生成模型,模型结构如图11所示,包括如下步骤:
步骤7.1、制作训练集;
步骤7.2、搭建使用全连接层的菜谱生成模型;
步骤7.3、设置损失函数:;其中,/>是动作结点的损失函数,是食材结点的损失函数。
步骤7.4、使用反向传播的方式训练使用全连接层的菜谱生成模型;
步骤7.5、在基于树结构的菜谱生成模型中取解码器部分,通过在潜空间高斯采样获得随机固定维度的向量送给解码器,进而生成规则序列形式的菜谱;
步骤7.6、将规则序列形式的菜谱转换成二叉树形式的菜谱即新生成的菜谱。
进一步的,在步骤7.1中,将二叉树形式的菜谱进行前序遍历获得先序遍历序列,前序遍历序列表示为,其中X是二叉树形式菜谱的前序遍历序列/>,/>属于上下文无关语法四元组中/>的V,V表示有限非终端符号集合,这里指代动作结点集合,/>属于/>,/>是与V不相交的有限终端符号集合,这里指代食材集合,/>属于R,R是总约束规则集合。训练集由若干X构成。
进一步的,在步骤7.2中,判断前序遍历序列中的一项/>是在动作约束规则集合还是食材约束规则集合集中,若在动作约束规则集合中则msk设置成1,否则设置成0,将msk与/>对应的one_hot向量相乘。若msk是1,则通过随机初始化的Embedding层,该层大小是617*100。若msk是0,则通过随机初始化的Embedding层,该层大小是186*20。两组向量拼接,得到向量/>。
进一步的,编码器层共有6层全连接层,全连接层大小分别是(100*120,3600),(3600,1800),(1800,900),(900,400),(400,100),(100,10),每经过一层线性层,都会进行一次BatchNorm。最终将维度压缩到10,该10维度向量空间称之为潜空间z,z使用重参数化技巧获得符合高斯分布的潜空间,公式表示为:。其中mu为上层全连接层压缩得到的向量,表示均值,sigma为上层全连接层压缩得到的方差向量/>依次经过取对数和乘0.5得到的向量,epsilon为高斯分布的向量,向量形状和全连接层最后一层输出向量形状一致,“*”为点乘。
进一步的,解码器层由6层全连接层组成,潜空间的z向量首先经过一次BatchNorm,全连接层大小分别是(10,100),(100,400),(400,900),(900,1800),(1800,3600),(3600,60*200),每经过一层线性层,都会进行一次BatchNorm。最终将维度扩展到100*120,将120维度的向量拆分成100维和20维。再将拆分后的两个向量分别通过(100*100,100*617)的全连接层和(100*20,100*186)的全连接层。
进一步的,在步骤7.3中,动作结点的损失函数和食材结点的损失函数/>使用的都是KL散度损失函数,如下式所示:
;
式中为训练集的真实的概率分布,/>为模型拟合出来的概率分布,式中/>是一次损失函数计算中使用到的/>的集合,Q是一次损失函数计算中使用到的/>的集合,/>是在已知/>条件下/>的概率。将动作结点的损失函数/>带入到KL散度损失函数中,则/>为训练集动作结点的one_hot向量,/>为模型拟合出来的向量。将食材结点的损失函数/>带入到KL损失函数中,则/>为训练集食材结点的one_hot向量,/>为模型拟合出来的向量。在计算时,若msk是1则拟合出来的向量是动作向量,若msk是0则拟合出来的向量是食材向量。
进一步,在步骤7.3中,使用KL散度最小化分布误差对潜空间z进行约束,在保证潜空间z能尽可能的保留更多的信息的同时使其与高斯分布函数对齐,约束潜空间z的KL散度的约束方法与βVAE中的相同,需要设置拉格朗日乘子β,,其中logvar表示方差,mean表示均值。在实际模型中,logvar和mean都通过全连接进行拟合,设置损失函数:/>。
进一步的,在步骤7.5中,训练20000个epoch,保存一种基于树结构的菜谱生成模型,取模型的解码器部分。按照10维高斯分布从潜空间取向量,再送到模型的解码器部分,得到拟合出来的动作向量和食材向量。将得到的向量通过使用条件概率的方式得到在前一项条件下的向量,再将带有条件的向量取argmax()获得对应的序号,从动作约束规则集合、食材约束规则集合获取序号对应的规则进而将向量序列转换成规则序列。
进一步的,在步骤7.6中,将规则序列使用栈的方式进行前序遍历,转换成二叉树形式的菜谱树,该新生成的一颗菜谱树可以代表一个菜谱。
实施例三:
如图12所示,在本实施例中,基于树结构的菜谱生成方法包括:
S101:收集并构建菜谱文本数据集,从网络搜集菜谱文本数据,并进行数据清洗,去除特殊符号,构建菜谱文本数据集。
S102:将文本形式的菜谱数据转换成多叉树形式的菜谱。
在本实施例中,网络搜集的文本形式菜谱形式与实施例一中的表1相同。
在本实施例中,将文本形式的菜谱数据转换成多叉树形式的菜谱,需要倒叙阅读文本形式的菜谱。仍然以“茄子洗净后切条”这段文字为例子进行说明,使用词法分析的方式分析,表述为“切{形状:“条”}->洗{程度:“干净”};洗{程度:“干净”}->茄子{数量:“1个”}”。通过这种方式,可以将文本形式的菜谱转换成多叉树形式的菜谱。多叉树形式的菜谱如图13所示,将属性关键词去除得到简化后的多叉树形式的菜谱树如图14所示。
S103:使用多叉树形式的菜谱树构建总约束规则集合。在本实施例中,通过对多叉树进行先序遍历,获得先序遍历序列。在一个具体实施例中,以图13所示的多叉树举例说明,将图14所示的多叉树进行先序遍历,得到先序遍历序列,“装盘->加入煮,加入->切,切->'葱',煮->拌炒,拌->'陈醋''蚝油''生抽''淀粉''凉水',炒->装盘炒,装盘->煎,煎->烧挤,烧->'食用油',挤->腌,腌->拌,拌->'食盐'切,切->'茄子',炒->'郫县豆瓣酱'炒,炒->切切切烧腌,切->'葱',切->'蒜',切->'辣椒',烧->'食用油',腌->拌,拌->'生抽''淀粉'切,切->'五花肉'”,按先后顺序将先序遍历序列的每个元素放入到总约束规则集合,然后进行去重操作,最后得到总约束规则集合。
S104:对总约束规则集合进行独热编码。
在本实施例中,分别对总约束规则集合进行排序标号,一条总约束规则集合独热编码的长度为总约束规则集合的规则数量。对于每一条约束规则,只有该条约束规则标号位置的编码数字为1,其余位置编码数字为0。本实施例中总约束规则集合如表7所示。
表7:总约束规则集合
S105:基于编码器解码器架构,构建使用门控循环神经网络(GRU)的菜谱生成模型,将多叉树形式的菜谱的独热编码送给模型进行自监督训练,取模型的解码器部分用来生成新的菜谱树,模型结构如图15所示。
构建使用门控循环神经网络(GRU)的菜谱生成模型。生成模型使用Adam优化器进行数据优化,激活函数设置为relu:设置学习率为0.0001,batch_size设置为32。
进一步的,在步骤5中,建立菜谱生成模型包括如下步骤:
步骤5.1、制作训练集;
步骤5.2、搭建使用门控循环神经网络的菜谱生成模型;
步骤5.3、设置损失函数:;其中,/>是结点序列的损失函数。
步骤5.4、使用反向传播的方式训练使用门控循环神经网络的菜谱生成模型;
步骤5.5、一种基于树结构的菜谱生成中取解码器部分,通过在潜空间高斯采样获得随机固定维度的向量送给解码器,进而生成规则序列形式的菜谱;
步骤5.6、将规则序列形式的菜谱转换成多叉树形式的菜谱即新生成的菜谱。
进一步的,在步骤5.1中,将多叉树形式的菜谱进行前序遍历获得先序遍历序列,前序遍历序列表示为,其中X是多叉树形式菜谱的前序遍历序列/>,/>属于上下文无关语法四元组中/>的V,V表示有限非终端符号集合,这里指代非叶子结点集合,/>属于/>,/>是与V不相交的有限终端符号集合,这里指代叶子结点集合,/>属于R,R是总约束规则集合。训练集由若干X构成。
进一步的,在步骤5.2中,首先通过随机初始化的Embedding层对前序遍历序列表示为的独热向量进行编码,该层大小为563*100。
进一步的,编码器由1个门控循环神经网络(GRU)层和2层全连接层组成。门控循环神经网络的input_size设置为100,hidden_size设置为50,num_layers设置为1,bidirectional设置为0。全连接层的大小分别为(50,30)(30,10),经过第一个线性层后会经过一次BatchNorm,最终将维度压缩到10,该10维度向量空间称之为潜空间z,z使用重参数化技巧获得符合高斯分布的潜空间,公式表示为:。其中mu为上层全连接层压缩得到的向量,表示均值,sigma为上层全连接层压缩得到的方差向量/>依次经过取对数和乘0.5得到的向量,epsilon为高斯分布的向量,向量形状和全连接层最后一层输出向量形状一致,“*”为点乘。
进一步的,解码器层依次由2层全连接层,1个门控循环神经网络(GRU)层和1层全连接层组成。前两个全连接层大小分别为(10,30)(30,50),潜空间向量z首先经过一次BatchNorm再送给第一个全连接层,再经过一次BatchNorm再送给第二个全连接层,门控循环神经网络的input_size设置为100,hidden_size设置为50,num_layers设置为1,bidirectional设置为0。最后一层全连接层大小为(50,563)。
进一步的,在步骤5.3中,结点序列使用的是交叉熵损失函数:
;
式中为训练集的真实的概率分布,/>为模型拟合出来的概率分布,式中P是一次损失函数计算中使用到的/>的集合,Q是一次损失函数计算中使用到的/>的集合。将结点序列的损失函数/>带入到交叉熵损失函数中,则/>为训练集总约束规则结点的one_hot向量,/>为模型拟合出来的向量。
进一步,在步骤5.3中,使用KL散度最小化分布误差对潜空间z进行约束,在保证潜空间z能尽可能的保留更多的信息的同时使其与高斯分布函数对齐,约束潜空间z的KL散度的约束方法与βVAE中的相同,需要设置拉格朗日乘子β,,其中logvar表示方差,mean表示均值。在实际模型中,logvar和mean都通过全连接进行拟合,设置损失函数:/>。
进一步的,在步骤5.5中,训练10000个epoch,保存一种基于原子规则和编码器解码器架构的菜谱生成模型,取模型的解码器部分。按照10维高斯分布从潜空间取向量,再送到模型的解码器部分,得到拟合出来的向量。将拟合出来的向量取argmax()获得对应的序号,从总约束规则集合获取序号对应的规则进而将向量序列转换成规则序列。
进一步的,在步骤5.6中,将规则序列使用栈的方式进行前序遍历,转换成多叉树形式的菜谱树,该新生成的一颗菜谱树可以代表一个菜谱。
实施例四:
实现上述方法的系统,包括:
文本预处理模块,被配置为:获取菜谱中的文本信息,经预处理后构建菜谱文本数据集;
文本结构转换模块,被配置为:基于数据集中的菜谱文本,提取动作关键字和食材关键字,将关键字通过设置的根节点进行拼接,得到树结构形式的菜谱,即菜谱树;
约束规则模块,被配置为:基于菜谱树构建约束规则集合,根据得到的约束规则集合转换成预训练嵌入编码值集合,嵌入编码值基于自编码器网络进行训练,训练后,约束规则在网络中对应的潜空间编码作为嵌入编码;
规则关联模块,被配置为:基于菜谱树构建约束规则集合,根据得到的约束规则集合转换成预训练嵌入编码值集合,嵌入编码值基于自编码器网络进行训练,训练后,约束规则在网络中对应的潜空间编码作为嵌入编码;
菜谱生成模块,被配置为:在菜谱生成模型的潜空间中,经高斯分布进行采样并传递给菜谱生成模型的解码器部分,模型的输出为生成的新菜谱。
实施例五:
本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例一至三中任意一种基于树结构的菜谱生成方法中的步骤。
实施例六:
本实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现如上述实施例一至三中任意一种基于树结构的菜谱生成方法中的步骤。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于树结构的菜谱生成方法,其特征在于,包括以下步骤:
获取菜谱中的文本信息,经预处理后构建菜谱文本数据集;
基于数据集中的菜谱文本,提取动作关键字和食材关键字,将关键字通过设置的根节点进行拼接,得到树结构形式的菜谱,即菜谱树;
基于菜谱树构建约束规则集合,根据得到的约束规则集合转换成预训练嵌入编码值集合,嵌入编码值基于自编码器网络进行训练,训练后,约束规则在网络中对应的潜空间编码作为嵌入编码;
在菜谱生成模型的潜空间中,经高斯分布进行采样并传递给菜谱生成模型的解码器部分,模型的输出为生成的新菜谱。
2.如权利要求1所述的一种基于树结构的菜谱生成方法,其特征在于,基于菜谱树构建约束规则集合,包括:
菜谱树进行遍历操作,取处于同一连线上的非叶子结点和对应父节点作为一条动作约束规则,去掉重复约束规则形成动作约束规则集合;
菜谱树进行遍历操作,取处于同一连线上的叶子结点和对应父节点作为一条动作约束规则,去掉重复约束规则制作成食材约束规则集合;
动作约束规则集合和食材约束规则集合进行取并集操作,形成总约束规则集合。
3.如权利要求1所述的一种基于树结构的菜谱生成方法,其特征在于,在菜谱生成模型的潜空间中,经高斯分布进行采样并传递给菜谱生成模型的解码器部分,模型的输出为生成的新菜谱,包括:
构建训练集,并基于自编码器架构构建菜谱生成模型;
设置损失函数,训练基于树结构的菜谱生成模型;
基于树结构的菜谱生成模型中取解码器部分,通过在潜空间进行采样获得固定维度的向量传输给解码器,生成规则序列形式的菜谱;
将规则序列形式的菜谱转换成树结构形式的菜谱,得到新生成的菜谱。
4.如权利要求3所述的一种基于树结构的菜谱生成方法,其特征在于,构建训练集时,菜谱树进行遍历获得遍历序列,得到的若干条遍历序列形成训练集,遍历序列表示为,/>,/>是一条约束规则,/>为上下文无关语法四元组中/>的V,V是动作结点集合,/>属于/>,/>是食材集合,/>属于总约束规则集合R。
5.如权利要求3所述的一种基于树结构的菜谱生成方法,其特征在于,所述菜谱生成模型包括编码器和解码器,基于人工神经网络拟合训练数据集。
6.如权利要求3所述的一种基于树结构的菜谱生成方法,其特征在于,设置的损失函数中,结点序列使用基于概率分布度量的损失函数。
7.如权利要求3所述的一种基于树结构的菜谱生成方法,其特征在于,生成规则序列形式的菜谱时,取模型的解码器部分,基于高斯分布从潜空间取向量,送入到模型的解码器部分,得到拟合出来的向量序列;
得到的向量序列中的每一项分别计算条件概率得到在前一项条件下的每一项的向量,确定拟合出来的向量序列中的每一项向量对应序号,从总约束规则集合获取序号对应的规则,将向量序列转换成规则序列。
8.一种基于树结构的菜谱生成系统,其特征在于,包括:
文本预处理模块,被配置为:获取菜谱中的文本信息,经预处理后构建菜谱文本数据集;
文本结构转换模块,被配置为:基于数据集中的菜谱文本,提取动作关键字和食材关键字,将关键字通过设置的根节点进行拼接,得到树结构形式的菜谱,即菜谱树;
约束规则模块,被配置为:基于菜谱树构建约束规则集合,根据得到的约束规则集合转换成预训练嵌入编码值集合,嵌入编码值基于自编码器网络进行训练,训练后,约束规则在网络中对应的潜空间编码作为嵌入编码;
规则关联模块,被配置为:基于菜谱树构建约束规则集合,根据得到的约束规则集合转换成预训练嵌入编码值集合,嵌入编码值基于自编码器网络进行训练,训练后,约束规则在网络中对应的潜空间编码作为嵌入编码;
菜谱生成模块,被配置为:在菜谱生成模型的潜空间中,经高斯分布进行采样并传递给菜谱生成模型的解码器部分,模型的输出为生成的新菜谱。
9.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,该程序被处理器执行时实现如权利要求1-7任一项所述的基于树结构的菜谱生成方法中的步骤。
10.一种计算机设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现如权利要求1-7任一项所述的一种基于树结构的菜谱生成方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311243302.7A CN116991968B (zh) | 2023-09-26 | 2023-09-26 | 一种基于树结构的菜谱生成方法、系统、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311243302.7A CN116991968B (zh) | 2023-09-26 | 2023-09-26 | 一种基于树结构的菜谱生成方法、系统、存储介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116991968A CN116991968A (zh) | 2023-11-03 |
CN116991968B true CN116991968B (zh) | 2023-12-08 |
Family
ID=88521652
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311243302.7A Active CN116991968B (zh) | 2023-09-26 | 2023-09-26 | 一种基于树结构的菜谱生成方法、系统、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116991968B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117933250B (zh) * | 2024-03-22 | 2024-06-18 | 南京泛美利机器人科技有限公司 | 一种基于改进生成对抗网络的新菜谱生成方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111414450A (zh) * | 2020-03-02 | 2020-07-14 | 广州富港万嘉智能科技有限公司 | 标准化菜谱生成方法、装置、存储介质及程序模块构架 |
CN112446206A (zh) * | 2019-08-16 | 2021-03-05 | 阿里巴巴集团控股有限公司 | 一种菜谱标题的生成方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA3081242A1 (en) * | 2019-05-22 | 2020-11-22 | Royal Bank Of Canada | System and method for controllable machine text generation architecture |
US11544923B2 (en) * | 2021-03-12 | 2023-01-03 | Agot Co. | Image-based kitchen tracking system with order accuracy management |
-
2023
- 2023-09-26 CN CN202311243302.7A patent/CN116991968B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112446206A (zh) * | 2019-08-16 | 2021-03-05 | 阿里巴巴集团控股有限公司 | 一种菜谱标题的生成方法及装置 |
CN111414450A (zh) * | 2020-03-02 | 2020-07-14 | 广州富港万嘉智能科技有限公司 | 标准化菜谱生成方法、装置、存储介质及程序模块构架 |
Non-Patent Citations (1)
Title |
---|
用于高血压菜谱识别的基于遗传算法的改进XGBoost模型;雷雪梅;谢依彤;;计算机科学(第S1期);489-494 * |
Also Published As
Publication number | Publication date |
---|---|
CN116991968A (zh) | 2023-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhu et al. | CookGAN: Causality based text-to-image synthesis | |
Esser et al. | Scaling rectified flow transformers for high-resolution image synthesis | |
CN116991968B (zh) | 一种基于树结构的菜谱生成方法、系统、存储介质及设备 | |
CN107729312B (zh) | 基于序列标注建模的多粒度分词方法及系统 | |
CN109657156A (zh) | 一种基于循环生成对抗网络的个性化推荐方法 | |
CN110209789A (zh) | 一种用户注意力引导的多模态对话系统及方法 | |
Guerrero et al. | Matformer: A generative model for procedural materials | |
CN107579816B (zh) | 基于递归神经网络的密码字典生成方法 | |
JP6920136B2 (ja) | 情報処理システム | |
CN110245228A (zh) | 确定文本类别的方法和装置 | |
CN116095089B (zh) | 遥感卫星数据处理方法及系统 | |
Han et al. | Generative graph prototypes from information theory | |
CN112100486B (zh) | 一种基于图模型的深度学习推荐系统及其方法 | |
CN103914527B (zh) | 一种基于新编码方式的遗传规划算法的图形图像识别与匹配方法 | |
CN114648535A (zh) | 一种基于动态transformer的食品图像分割方法及系统 | |
CN108230121B (zh) | 一种基于循环神经网络的产品设计方法 | |
CN112487200A (zh) | 一种改进的包含多重边信息与多任务学习的深度推荐方法 | |
Nishimura et al. | Structure-aware procedural text generation from an image sequence | |
Chhikara et al. | Fire: Food image to recipe generation | |
Thiagarajan et al. | Shift-invariant sparse representation of images using learned dictionaries | |
CN110489667A (zh) | 基于用户画像的智能公文流转技术 | |
CN110889293A (zh) | 多层级主题向量空间的构建方法、装置、设备和存储介质 | |
CN117236287A (zh) | 一种基于树结构的菜谱优化方法、系统、存储介质及设备 | |
CN114861065A (zh) | 基于多行为的级联残差图卷积网络的个性化推荐方法 | |
CN110457703B (zh) | 一种基于改进卷积神经网络的文本分类方法、装置和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |