我有一系列要求,并且正在寻找最好的基于Java使用的策略/算法/软件。基本上,我想获取一组由真人用自然英语输入的食谱成分,并将元数据解析为结构化格式(请参阅下面的要求以了解我想要做什么)。
我环顾过这里和其他地方,但没有找到任何关于下一步方向的高级建议。所以,我会把它告诉聪明人:-):
解决这个问题的最好/最简单的方法是什么?我应该使用自然语言解析器、dsl、lucene/solr 还是其他工具/技术? NLP 看起来似乎可行,但看起来确实很复杂。我不想花大量时间进行深入研究,只是为了发现它不能满足我的要求,或者有一个更简单的解决方案。
要求
鉴于这些食谱成分描述......
- “8杯混合蔬菜(约5盎司)”
- “八只去皮鸡大腿(约 1 1/4 磅)”
- “6.5汤匙特级初榨橄榄油”
- “约 6 盎司,切成薄片的熏鲑鱼,切成条”
- “2 只整鸡(每只 3 .5 磅)”
- “每份 20 盎司冷冻切碎菠菜,解冻”
- “.5 杯帕尔马干酪,磨碎”
- “约 0.5 杯山核桃,烘烤并磨细”
- “.5 杯 Dixie Diner 面包屑混合物,原味”
- “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 | - |
|-----|---------|-------------|-------------------------|--------|-----------|--------------------------------|-------------|
注意描述的多样性。有些东西是缩写的,有些则不是。有些数字是数字,有些是拼写出来的。
我想要一些可以完美解析/翻译的东西。但是,我会选择一些表现相当好的东西来开始。
额外问题:在提出策略/工具后,您将如何实施?
Thanks!
Joe
简短的回答。使用GATE http://gate.ac.uk/.
长答案。您需要一些用于文本模式识别的工具。可以捕获如下模式的东西:
{Number}{Space}{Ingredient}
{Number}{Space}{Measure}{Space}{"of"}{Space}{Ingredient}
{Number}{Space}{Measure}{Space}{"of"}{Space}{Ingredient}{"("}{Value}{")"}
...
Where {Number}
是一个数字,{Ingredient}
取自成分词典,{Measure}
- 来自字典测量等。
我描述的模式与 GATE 非常相似JAPE规则。使用它们,您可以捕获与模式匹配的文本,并为模式的每个部分分配一些标签(数字、成分、度量等)。然后提取带标签的文本并将其放入单个表中。
我提到的字典可以表示为地名词典在门里。
所以,GATE 可以满足您的所有需求。这不是最简单的开始方法,因为您至少必须学习 GATE 的基础知识、JAPE 规则和地名词典,但通过这种方法,您将能够获得非常好的结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)