gpt4 book ai didi

sql - 搜索自然语言句子结构

转载 作者:行者123 更新时间:2023-11-30 08:28:29 24 4
gpt4 key购买 nike

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

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

因此,对于函数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 数据库中存储和查询这些树?

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

是的,我意识到使用简单的关键字搜索来检索我的示例是微不足道的。我试图测试的想法是如何利用语法结构,这样我就可以淘汰具有相似关键字但句子结构不同的条目。例如,对于上面的查询,我不想检索与句子“检查远程计算机以查找上传文件的用户。”相关的条目,该句子具有类似的关键字,但显然是描述完全不同的行为。

最佳答案

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

关于sql - 搜索自然语言句子结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4959723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com