【发布时间】:2011-06-24 23:43:15
【问题描述】:
存储和搜索自然语言句子结构树数据库的最佳方法是什么?
使用OpenNLP'sEnglish Treebank Parser,我可以获得相当可靠的任意句子的句子结构解析。我想做的是创建一个工具,可以从我的源代码中提取所有文档字符串,为文档字符串中的所有句子生成这些树,将这些树及其关联的函数名存储在数据库中,然后允许用户使用自然语言查询来搜索数据库。
所以,给定函数upload_files() 的句子"This uploads files to a remote machine.",我会得到树:
(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." 关联的条目,它具有相似的关键字,但显然描述的是完全不同的行为。
【问题讨论】:
标签: sql artificial-intelligence scalability nlp machine-learning