假设我有一整套文本格式的食谱,没有其他事先知道它们。我必须将这些数据分为“烘焙食品配方”和“其他食谱”。
对于烘焙食品,食谱的摘录可能如此:
“将面粉加入搅拌碗中,然后加入两个打好的鸡蛋,少许盐和发酵粉......”
这些都是由不同的作者写的,所以语言和词汇不一致。我需要一个算法,或者更好的是,现在的机器学习库(实现语言不是问题)我可以“教”来区分这两种类型的配方。
例如,我可能会提供一套食谱,我知道这些食谱适用于烘焙食品,并且能够分析这些食谱以便能够估算出新配方是否与其一起呈现。属于这一类。
获得正确的答案并不重要,但应该相当可靠。研究过这个问题后,我很清楚我的AI / ML词汇量不足以让我改进搜索。
有人可以建议一些库,工具甚至概念/算法来解决这个问题吗?
答案 0 :(得分:0)
您正在寻找的是异常/异常值检测。
在您的示例中,“烘焙食品”是您感兴趣的数据,任何看起来不像您以前看到过的东西(不是烘焙食品)都是异常/异常值。
scikit learn的方法数量有限。另一种常用方法是计算数据点之间的平均距离,然后任何超过平均值+ c *标准差的新值都被视为异常值。
也存在更复杂的方法。
答案 1 :(得分:0)
您可以尝试基于案例的推理。
提取将食谱放入烘焙食品类别的特定单词或短语。如果它不在那里,它必须在其他食谱中。
您可以聪明地添加单词集{},这样您就不需要查找短语了。 为每个单词添加权重,如果超过一个值,则将其加入烘焙。
所以{“烤箱”=> “10”,“面粉”=> “5”,“eggs”=> “3”}
我的理由是,如果它进入“烤箱”,它可能会被烘烤。如果你要区分烘烤蛋糕和烘焙加入,那么这需要调整。同样,“面粉”与将要被烘烤的东西联系在一起。
添加对{(“beaten”,“eggs”)=> “5”}注意这与短语不同{“beaten eggs”=> “10”}因为配对中的最差可以出现在配方中的任何地方。
否定{“冰箱里的寒意”=> -10}
否定者{“面粉尘”=> “-flour”}
绝对值{“在烤箱中烘烤”=> 10000}只是一种说法{“在烤箱里烘烤”=> “它是一种烘焙食品”,通过使数字如此之高,它将超过其自身的门槛。