将自然语言描述解析为结构化数据的策略

2024-02-07

我有一系列要求,并且正在寻找最好的基于Java使用的策略/算法/软件。基本上,我想获取一组由真人用自然英语输入的食谱成分,并将元数据解析为结构化格式(请参阅下面的要求以了解我想要做什么)。

我环顾过这里和其他地方,但没有找到任何关于下一步方向的高级建议。所以,我会把它告诉聪明人:-):

解决这个问题的最好/最简单的方法是什么?我应该使用自然语言解析器、dsl、lucene/solr 还是其他工具/技术? NLP 看起来似乎可行,但看起来确实很复杂。我不想花大量时间进行深入研究,只是为了发现它不能满足我的要求,或者有一个更简单的解决方案。

要求

鉴于这些食谱成分描述......

  1. “8杯混合蔬菜(约5盎司)”
  2. “八只去皮鸡大腿(约 1 1/4 磅)”
  3. “6.5汤匙特级初榨橄榄油”
  4. “约 6 盎司,切成薄片的熏鲑鱼,切成条”
  5. “2 只整鸡(每只 3 .5 磅)”
  6. “每份 20 盎司冷冻切碎菠菜,解冻”
  7. “.5 杯帕尔马干酪,磨碎”
  8. “约 0.5 杯山核桃,烘烤并磨细”
  9. “.5 杯 Dixie Diner 面包屑混合物,原味”
  10. “8 瓣蒜,切碎(4 茶匙)”
  11. “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(使用前将#替换为@)

将自然语言描述解析为结构化数据的策略 的相关文章

随机推荐

  • 数据读取器如何工作?

    我在想如果没有连接到 SQLServer SQLDataReader 不应该工作 我实验了这个场景 我执行 ExecuteReader 然后停止 SQLServer 服务并尝试迭代 DataReader 我期待的是一个例外 但它却给出了一个
  • 如何将 NestJS 中的服务注入到 typeorm 存储库中?

    我有一个UserRepository它处理在数据库前面创建 验证用户 我想对用户的密码执行哈希和验证 因此我为此创建了一个单独的服务 尝试遵循单一责任原则 其声明如下 Injectable export default class Hash
  • jeditable 意外触发嵌套项目上的 Draggable

    我使用jquery ui的draggable进行拖放 并且可编辑的 http www appelsiini net projects jeditable用于内联编辑 当我拖放一个也可编辑的元素时 在它被放置后 jeditable 立即启动并
  • 防止/限制方法继承

    我有一个应用程序 其中许多对象都扩展一个抽象类 该类定义了类似的方法create edit retrieve and delete 由于每个子类对这些函数都使用相同的逻辑 因此抽象类定义了默认行为 并且在需要增强的少数情况下 子类可以覆盖或
  • Bootstrap 导航栏垂直显示而不是水平显示

    我正在使用 CodePen 开发一个项目 并使用 bootstrap 来制作导航栏 但由于某种原因 它是垂直显示而不是水平显示 即使我从W3学校 https www w3schools com bootstrap bootstrap nav
  • maven中的“pom”包装是什么?

    我得到了一个 Maven 项目来编译并部署在 tomcat 服务器上 我今天之前从未使用过 Maven 但我已经在谷歌上搜索了很多 貌似是顶级水平pom xml该项目中的文件的打包类型设置为pom 之后我应该做什么mvn install部署
  • Java查询数据库后返回一个数组

    我必须查询 MSSQL 数据库 并且希望查询结果作为 Array 或 ArrayList 返回 我现在有这个代码 但它给出了一个错误 我有到数据库的连接 所以这不是问题 public ArrayList
  • 在 Linux 上嗅探数据包时过滤网络堆栈中的数据包?

    我有一个问题要问底层网络 Linux 专家 我必须为我大学的安全项目构建两个工具 第一个工具是 ARP 中毒攻击者 它会毒害远程主机的 ARP 缓存 以便检索他发送到另一台主机的数据 我使用原始套接字用 C 语言编写了这个工具 它工作得很好
  • 选择数据表中的所有 jsf primefaces

    我正在尝试创建一个全选按钮或复选框 单击该按钮或复选框时 所有 selectbooleanCheck 框都会被选中 有没有直接简单的方法 我开始创建 selectcheckbox 当更改时它将 selectAll 谢谢
  • 如何在输出文件中抑制 stargazer() 信息

    我正在使用stargazer将 R 数据帧输出为乳胶代码的包 library stargazer stargazer mtcars 这是输出 Table created by StarGazer v 3 0 1 by Marek Hlava
  • 如何重新初始化 jQuery DataTables 上的数据排序?

    我在我的项目中使用 jQuery Datatables 并且通过使用属性在列上提供了 自定义值 排序data sort如此处所述 https datatables net examples advanced init html5 data
  • Android Studio“提取方法”快捷键 Ctrl+Alt+M 不起作用

    The android studio shortcut for extract function is not working for me If I press Ctrl Alt M nothing is happening and wh
  • AWS C++ S3 SDK PutObjectRequest 无法连接到端点

    在使用 AWS C SDK 时 我遇到了一个问题 即尝试执行 PutObjectRequest 时会抱怨上传超过 400KB 时 无法连接到端点 Aws Client ClientConfiguration clientConfig cli
  • 在knitr Latex文档中缩放图形

    我正在尝试将图表包含到带有knitr的乳胶文档中 由于 knitr 包含 webshot 包 因此效果很好 但是 如果我想调整乳胶输出的图形大小 图形环境会变大 但绘图图表不会被调用到手动设置的图形宽度和高度 指定 webshot 选项 例
  • 验证应该在 Form 对象中还是模型中完成?

    这个问题主要针对PHP中的Zend 尽管它当然也适用于其他语言和框架 所以我欢迎大家的意见 我最近才开始使用 Zend 框架 虽然它并不完美 但我用它玩得很开心 然而 让我发疯的一件事是 我看到的大多数使用 Zend 的人的例子都是特殊形式
  • GetSystemMetrics() 对 .NET 4.5 和 .NET 4.0 返回不同的结果

    在 NET 4 0 gt NET 4 5 应用程序迁移过程中 我发现了一种极其奇怪的行为 我已经能够将这个问题追溯到这个简短的代码片段 class Program System Runtime InteropServices DllImpo
  • 如何在经典asp中执行多线程/后台进程

    我需要通过经典 asp 应用程序上的后台作业发送电子邮件 这样用户就不必等待缓慢的网络服务器完成发送电子邮件 我知道我可以使用 Ajax 生成两个单独的请求 但我不想需要 Javascript 另外 我怀疑有更好的方法来实现这一目标 有想法
  • Cordova 构建错误:在严格模式下使用 const

    我在 VS 2015 中创建了一个新的 Cordova 项目 当我尝试运行代码时 我在构建输出中收到以下错误 1 gt Build started Project TestProject Configuration Debug Androi
  • Docker 返回退出代码 3221225781 安装 vc_redist.x64.exe

    我在 docker RUN 中看到了很多有关退出代码 3221225781 的问题 但我仍然找不到答案 考虑这个 dockerfile FROM mcr microsoft com dotnet core runtime 3 1 WORKD
  • 将自然语言描述解析为结构化数据的策略

    我有一系列要求 并且正在寻找最好的基于Java使用的策略 算法 软件 基本上 我想获取一组由真人用自然英语输入的食谱成分 并将元数据解析为结构化格式 请参阅下面的要求以了解我想要做什么 我环顾过这里和其他地方 但没有找到任何关于下一步方向的