搜索自然语言句子结构

2024-01-15

存储和搜索自然语言句子结构树数据库的最佳方式是什么?

Using OpenNLP 的 http://incubator.apache.org/opennlp/英语树库解析器,我可以对任意句子进行相当可靠的句子结构解析。我想做的是创建一个工具,可以从源代码中提取所有文档字符串,为文档字符串中的所有句子生成这些树,将这些树及其关联的函数名称存储在数据库中,然后允许用户使用自然语言查询来搜索数据库。

所以,给出这个句子"This uploads files to a remote machine."对于函数upload_files(),我会有树:

(TOP
  (S
    (NP (DT This))
    (VP
      (VBZ uploads)
      (NP (NNS files))
      (PP (TO to) (NP (DT a) (JJ remote) (NN machine))))
    (. .)))

如果有人输入查询“如何上传文件?”,相当于树:

(TOP
  (SBARQ
    (WHADVP (WRB How))
    (SQ (MD can) (NP (PRP I)) (VP (VB upload) (NP (NNS files))))
    (. ?)))

我如何在 SQL 数据库中存储和查询这些树?

我编写了一个简单的概念验证脚本,可以使用正则表达式和网络图解析的组合来执行此搜索,但我不确定如何以可扩展的方式实现此搜索。

是的,我意识到使用简单的关键字搜索来检索我的示例是微不足道的。我试图测试的想法是如何利用语法结构,这样我就可以淘汰具有相似关键字但句子结构不同的条目。例如,对于上面的查询,我不想检索与该句子关联的条目"Checks a remote machine to find a user that uploads files."它具有相似的关键字,但显然描述了完全不同的行为。


关系数据库不能以自然的方式存储知识,你真正需要的是知识库 or ontology(尽管它可以构建在关系数据库之上)。它以三元组形式保存数据<subject, predicate, object>,所以你的短语将被存储为<upload_file(), upload, file>。有很多工具和方法可以在此类知识库中进行搜索(例如,Prolog 就是一种专门用于执行此操作的语言)。所以,你所要做的就是将句子从自然语言翻译成KB 三元组/本体图,将用户查询翻译为不完整的三联体(你的问题看起来像<?, upload, file>) or 连接查询然后搜索您的知识库。 OpenNLP 将帮助您进行翻译,其余的取决于您决定使用的具体技术和技术。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

搜索自然语言句子结构 的相关文章

  • 是什么阻止“Select top 1 * from TableName with (nolock)”返回结果?

    我目前正在运行以下语句 select into adhoc san savedi from dps san savedi record 这花了很长时间 我想看看它走了多远 所以我运行了这个 select count from adhoc s
  • SQL SERVER 中的排序依据和大小写

    我需要在存储过程中按功能排序 一个值被发布到网络服务 并且基于该值我必须以某种方式对结果进行排序 即 当 ColName 按 ColName 发布订单时 当 ColName2 由 ColName2 发布订单时 我正在研究使用 Case 但出
  • 使用 SQL Filestream 时出现 OutOfMemoryException

    我正在尝试将大约 600 MB 的 zip 文件上传到 SQL 2008 FILESTREAM 表 但出现 OutOfMemoryException 我正在使用 SqlFileStream 类上传文件 如本教程中所述 http www ag
  • 表名搜索

    我使用以下命令在特定数据库的存储过程中搜索字符串 USE DBname SELECT Name FROM sys procedures WHERE OBJECT DEFINITION OBJECT ID LIKE xxx 修改上面的内容是否
  • PHP PDO相关:更新SQL语句未更新数据库内容

    我正在尝试使用准备好的语句来实现更新语句PHP http en wikipedia org wiki PHP脚本 但它似乎没有更新数据库中的记录 我不确定为什么 所以如果您能分享一些见解 我将不胜感激 Code query UPDATE D
  • 如何在 SELECT 子句中编写带点(“.”)的列名?

    我正在尝试使用 编写列名称 没有成功 sample SELECT PrmTable Value MAX Value FROM TempTable or SELECT MAX Value AS PrmTable Value FROM Temp
  • 从表中删除孤儿

    我正在尝试清理一张有很多孤立项目的桌子 我通过查找空值来检查是否与另一个表存在关系来解决此问题 DELETE FROM table1 LEFT JOIN table2 ON table1 ID table2 ID WHERE table2
  • 如何以最少的查询次数获取帖子列表和关联标签

    我的表格结构如下 标签 更多的是一个类别 id 标签名称 描述 slug POSTS ID 标题 网址 邮戳 id idPost idTag USERS ID 用户名 userSlug VOTES id idPost idUser 每个帖子
  • 社交应用程序的数据库设计和优化注意事项

    通常的情况 我有一个简单的应用程序 允许人们上传照片并关注其他人 因此 每个用户都会有类似 墙 或 活动源 的东西 他或她可以在其中看到他 她的朋友 他或她关注的人 上传的最新照片 大多数功能都很容易实现 然而 当涉及到这个历史活动源时 由
  • TOAD 将 &String 视为绑定变量

    我正在使用 Oracle Data Integrator 开发一些 ETL 有时会使用 TOAD 测试部分代码 今天我遇到了 TOAD 的问题 我有一行像 AND column value like DEV PROD 当我尝试运行包含上面过
  • 如何有效地从 DB2 表中删除所有行

    我有一个大约有 50 万行的表 我想删除所有行 如果我做简单的delete from tbl 事务日志已满 我不关心这种情况下的事务 无论如何我都不想回滚 我可以删除许多事务中的行 但是有更好的方法吗 如何有效地从 DB2 中的表中删除所有
  • 查询中列的顺序重要吗?

    当从 MySQL 表中选择列时 与表中的顺序相比 选择列的顺序是否会影响性能 不考虑可能覆盖列的索引 例如 您有一个包含行 uid name bday 的表 并且有以下查询 SELECT uid name bday FROM table M
  • SPARK SQL - 当时的情况

    我是 SPARK SQL 的新手 SPARK SQL 中是否有相当于 CASE WHEN CONDITION THEN 0 ELSE 1 END 的内容 select case when 1 1 then 1 else 0 end from
  • 连接两个表的查询的 SQL Server“FOR XML”输出

    我是 SQL Server 中 FOR XML 功能的新手 我正在使用 SQL Server 2012 我有两个表 Word 和 Word Expansion 样本数据 表 字 WordOID Word 1 PIPE 2 WIRE 表 Wo
  • 将 SQL 数据中的一行映射到 Java 对象

    我有一个 Java 类 其实例字段 以及匹配的 setter 方法 与 SQL 数据库表的列名相匹配 我想优雅地从表中获取一行 到 ResultSet 中 并将其映射到此类的实例 例如 我有一个 Student 类 其中包含实例字段 FNA
  • 如何在 SQL Server 中使用 nvarchar 变量为 unicode 用户添加前缀“N”?

    如何在 SQL Server 中使用 nvarchar 变量为 unicode 用户添加前缀 N 例如 给定这个变量 declare Query1 nvarchar max 我可以这样分配它 set Query1 N 但是如果我想使用怎么办
  • 拆分列中的字符串并在列中添加值

    我有一个包含几行数据的表 如下所示 16 W 2 Work ALBO 00 Proposal ALxO Amendement 1 20091022 signed pdf 17 W 2 Work ALBO 00 Proposal Level1
  • 如何在 Visual Studio 中更改 Azure 数据库表的列顺序

    我整个下午都在寻找在 MS Visual Studio 2022 中重新排序 Azure 数据库表列的方法 没有运气 在其他应用程序中 可以通过拖动或剪切和粘贴轻松重新排列列 这里无能为力 此时 我什至不确定可以在 VS 中移动列 我只对
  • Mysql 中 UNION 子句的替代方案

    我有两张桌子 表 a 表 b table a ID 1 2 3 4 5 7 table b ID 2 3 4 5 6 我必须得到这样的输出而无需UNION命令 ID 1 2 3 4 5 6 7 注意 我有一个联合解决方案 select fr
  • 如何从 PostgreSQL 中的时间戳列值提取一天中的时间(或小时)?

    我正在尝试从 PostgreSQL 中的 时间戳 列中提取一天中的时间 这是我的做法 但是 太糟糕了 知道如何做得更好吗 SELECT date part hour date demande text hours date part min

随机推荐

  • 如何在 git 的历史记录中查找包含提交的所有引用

    假设你在 git 中有以下结构 A lt refs heads somebranch B C D lt refs tags TAG1 E F G H I lt refs heads branch1 J lt refs heads maste
  • 通知和警报管理器

    我知道这个问题已经被问过好几次了 但我真的不明白为什么我的代码不起作用 我基于很多示例 来自 stackoverflow 答案 来编写我的代码 我需要帮助来理解问题出在哪里 上下文 用户可以根据偏好选择通知的日期 我得到一个从 2 星期一
  • 如何检查整数是否可以转换为枚举类型值?

    我定义了一个InRange我的枚举器类型上的函数 该函数应该返回True传入的整数参数是否可以转换为枚举类型 TMyEnum eA eB TMyEnumHelper record helper for TMyEnum class funct
  • .NET 中的身份验证、授权、用户和角色管理以及一般安全性

    我需要知道如何为 C 应用程序实现一般安全性 在这方面我有哪些选择 如果现有的框架满足我的需求 我更愿意使用它 我不想重新发明轮子 我的要求如下 通常的用户名 密码身份验证 用户管理 为用户分配权限 角色管理 将用户分配给角色 将权限分配给
  • 在 Windows 上学习 IOCP 的资源

    我最近意识到 Windows 上有一个名为 IOCP 的东西 我开始搜索有关它的更多信息 但我找不到任何最新的信息 大多数示例都在差不多 5 年前的 codeproject 上 并且没有太多指南或教程 任何人都可以以在线教程或示例项目 您编
  • 为什么 Unity 会卡在 Application.EnterPlayMode 上?

    我正在尝试使用柏林噪声和统一的行进立方体来创建程序地形生成器 它一直有效 直到我从创建高度图切换到将其制作成 3d 数组 然后 每当我单击播放时 Unity都会打开一个对话框 其中写入了Application EnterPlayMode 该
  • 为什么 Rust 不支持重载函数或方法? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 java中的方法重载是一个非常有用的特性 有时 我们需要定义具有相同名称但具有不同参数集的函数 我想知道为什么 Rust 不支持这个功能 我认为
  • 如何在 Scala 中进行转换?

    例如假设我有 val myDouble 25 7 val myInt 5 我会怎么做类似的事情 val divide Int myDouble myInt 你可以做 myDouble myInt toInt 你也可以做toDouble to
  • tensorflow:reshape()可以创建副本吗?

    在他们的 API v4 中 torch 引入了reshape 更加符合 numpy 的风格 以前 改变火炬张量的形状是通过view 我想知道是否view 现在将被弃用并查看docs https pytorch org docs stable
  • 如何更新 Google Drive v3 PHP 中的文件

    我似乎无法使用以下代码更新谷歌驱动器中的文件 一切正常 但文件保持不变 我正在使用 v3 api function updateFile service fileId data try emptyFile new Google Servic
  • 将类应用于 br 标签? [复制]

    这个问题在这里已经有答案了 以下是有效的 HTML 吗 br class something 作为一个 HTML 元素 我不明白为什么它不会 但我认为我从未见过它被使用 Yes See 规格 https www w3 org TR html
  • tkinter 中的按钮命令选项

    在下面的小 GUI 应用程序中 当我使用按钮的命令选项来调用函数时 它不是这样工作的 self update 相反 它的工作原理如下 self update 为什么这样 按钮的命令选项是否有某种特殊的工作方式 我认为应该用这些大括号调用方法
  • 一些 Express.Router() 路由不执行中间件函数

    我正在尝试解决 Express router 的实现问题 而不是触发分配给它的中间件函数 我编写了一个相当大的应用程序 并尝试向我的路径添加更多端点 但由于某种原因 第 9 条路线被加载但没有触发该功能 app js server use
  • 将图像放置在居中的 div 后面

    我的网站有 900px div content以margin left auto and margin right auto 我有一个图像需要在 div 后面显示 该图像将部分重叠 content 图像目前设置为显示为块 我可以将其到达需要
  • Bootstrap 轮播可以仅旋转部分幻灯片吗?

    我有一个直接来自引导站点的香草轮播 carousel carousel interval 2000 它有 5 张幻灯片和 5 个指标 1 2 3 A B 我希望轮播能够自动循环播放幻灯片 1 2 和 3 然后重复 但是 如果我单击幻灯片 A
  • 无法让 JQuery 在母版页中工作

    我有一个没有母版页的表单中的示例 jquery 它工作正常 我试图在我的母版页中使用相同的功能 但它不起作用 我正在使用 ASP NET 这是我的代码 WebForm 这有效
  • 为什么要让用户在 PayuMoney 网关的 android SDK 中登录?

    我正在尝试集成适用于 Android 的 PayUMoney SDK 并成功将 SDK 添加到我的应用程序中 当用户单击支付按钮时 将打开登录页面 为什么要让用户登录 创建 payu 帐户 一旦用户按下支付按钮 支付选项就会打开 但事实并非
  • NSPredicate 中 ALL 、 ANY 和 SOME 运算符之间的区别

    我真的很难理解这 3 个 看起来像ANY and SOME做同样的事情 但我看不出有什么区别ALL 让我们有一个组列表 每个团体都有人类型的成员 每个人都有一个年龄 所有会员年龄 gt 30 意味着您将找到一个成员全部年龄超过 30 岁的群
  • Django unique_together 与可为空的外键

    我在使用 Sqlite 的开发机器中使用 Django 1 8 4 并且有以下模型 class ModelA Model field a CharField verbose name a max length 20 field b Char
  • 搜索自然语言句子结构

    存储和搜索自然语言句子结构树数据库的最佳方式是什么 Using OpenNLP 的 http incubator apache org opennlp 英语树库解析器 我可以对任意句子进行相当可靠的句子结构解析 我想做的是创建一个工具 可以