将自然语言描述解析为结构化数据的策略要求
我有一组要求,我正在寻找最好的基于Java的策略/算法/软件来使用。基本上,我想采用一组真实的人用自然英语输入的食谱成分,并将元数据解析为结构化格式(请参阅下面的要求,看看我正在尝试做什么)。
我在这里和其他地方四处寻找,但没有发现任何可以就接下来的方向提供高级建议。所以,我会把它给聪明的人:-):
解决此问题的最佳/最简单的方法是什么?我应该使用自然语言解析器,dsl,lucene / solr还是其他一些工具/技术?NLP似乎可以工作,但它看起来真的很复杂。我宁愿不花很多时间进行深入研究,只是为了发现它不能做我想要的东西,或者有一个更简单的解决方案。
要求
鉴于这些食谱成分描述....
- “8杯混合蔬菜(约5盎司)”
- “八条去皮鸡腿(约11/4磅)”
- “6.5汤匙特级初榨橄榄油”
- “约 6 盎司切成薄片的烟熏三文鱼,切成条状”
- “2只整鸡(每只3.5磅)”
- “每个冷冻切碎的菠菜20盎司,解冻”
- “5杯帕玛森芝士,磨碎”
- “约.5杯山核桃,烤熟,磨碎”
- “.5杯迪克西晚餐面包屑混合,平原”
- “8 瓣大蒜,切碎(4 茶匙)”
- “8 个葱,切成 2 块”
我想把它变成这个....
|-----|---------|-------------|-------------------------|--------|-----------|--------------------------------|-------------| | | Measure | | | weight | weight | | | | # | value | Measure | ingredient | value | measure | preparation | Brand Name | |-----|---------|-------------|-------------------------|--------|-----------|--------------------------------|-------------| | 1. | 8 | cups | mixed greens | 5 | ounces | - | - | | 2. | 8 | - | skinless chicken thigh | 1.5 | pounds | - | - | | 3. | 6.5 | tablespoons | extra-virgin olive oil | - | - | - | - | | 4. | 6 | ounces | smoked salmon | - | - | thinly sliced, cut into strips | - | | 5. | 2 | - | whole chicken | 3.5 | pounds | - | - | | 6. | 20 | ounces | forzen chopped spinach | - | | thawed | - | | 7. | .5 | cup | parmesean cheese | - | - | grated | - | | 8. | .5 | cup | pecans | - | - | toasted, finely ground | - | | 9. | .5 | cup | Bread Crumb Mix, plain | - | - | - | Dixie Diner | | 10. | 8 | - | garlic clove | 4 | teaspoons | minced | - | | 11. | 8 | - | green onions | - | - | cut into 2 pieces | - | |-----|---------|-------------|-------------------------|--------|-----------|--------------------------------|-------------|
请注意描述的多样性。有些东西是缩写的,有些不是。有些数字是数字,有些是拼写出来的。
我会喜欢一些能做完美解析/翻译的东西。但是,会满足于开始做一些做得相当好的事情。
奖励问题:在建议策略/工具后,您将如何去做?
谢谢!
乔