我需要将配方成分分解为适用于生产线的数量,量度,项目和描述,例如1杯面粉,2个柠檬皮和1杯红糖等。什么是最好的方法这样做?我有兴趣在项目中使用python,所以我假设使用nltk是最好的选择,但我对其他语言开放。
答案 0 :(得分:24)
我实际上是为我的网站执行此操作,该网站现在是其他人使用的open source project的一部分。
我写了一篇关于我的技术的博客文章,享受!
答案 1 :(得分:6)
《纽约时报》 在解析食谱档案时遇到了这个问题。他们使用了称为线性链条件随机场(CRF)的NLP技术。这篇博客文章提供了很好的概述:
他们开源了代码,但很快就放弃了。我维护the most up-to-date version,并wrote a bit进行现代化改造。
如果您正在寻找现成的解决方案,则有几家公司提供成分解析服务:
答案 2 :(得分:5)
我想这已经过去了好几年了,但是我想自己做了类似的事情并遇到了这个问题,所以我想如果它对f中的其他人有用,我可能会对它进行一次尝试
即使你说要解析免费测试,大多数食谱都有一个非常标准的食谱清单格式:每个成分都在一个单独的行上,确切的句子结构很少是那么重要。词汇范围也相对较小。
一种方法可能是检查每一行可能是名词的单词和表示数量的单词/符号。我认为WordNet可能有助于查看一个单词是否可能是一个名词,但我之前没有使用它。或者,您可以使用http://en.wikibooks.org/wiki/Cookbook:Ingredients作为单词列表,但同样,我不确切地知道它有多全面。
另一部分是识别数量。它们有几种不同的形式,但很少,你可以创建一个关键字列表。特别是,请确保您有良好的错误报告。如果程序无法完全解析某一行,请让它向您报告该行的内容,以及它已识别/未识别的内容,以便您可以相应地调整关键字列表。
Aaanyway,我不保证任何一个都可行(并且几乎可以肯定不是100%可靠)但是我就是这样开始解决问题的方法
答案 3 :(得分:3)
这是一个不完整的答案,但你正在考虑编写一个自由文本解析器,如你所知,这是非常重要的:)
使用烹饪特有的知识作弊的一些方法:
如果你更有野心,你可以在解析器章节中查看NLTK Book。
祝你好运!这听起来像是一个可行的项目!答案 4 :(得分:0)
您能更具体地了解您的意见吗?如果你有这样的输入:
1 cup flour
2 lemon peels
1 cup packed brown sugar
在不使用任何NLP的情况下解析它并不会太难。