gAnswer/README.md

87 lines
5.6 KiB
Markdown
Raw Normal View History

2018-12-28 00:25:57 +08:00
# GAnswer系统
2018-12-29 14:10:07 +08:00
GAnswer系统是由北京大学计算机技术研究所数据管理实验室邹磊老师牵头开发的自然语言问答系统。gAnswer能够将自然语言问题转化成包含语义信息的查询图然后将查询图转化成标准的SPARQL查询并将这些查询在图数据库中执行最终得到用户的答案。我们使用数据驱动的消歧方式具体来讲在生成查询图的阶段保留多种实体和谓词的链接方案在查询执行的阶段根据匹配情况消除歧义错误链接
2018-12-29 14:14:59 +08:00
这是TKDE 2018论文 [Answering Natural Language Questions by Subgraph Matching over Knowledge Graphs](docs/TKDE18_gAnswer.pdf) 的代码实现。
2018-12-28 00:25:57 +08:00
2019-03-21 00:18:54 +08:00
**帮助文档请点击此处 [中文(ZH)](docs/gAnswer_help.pdf) [English](docs/gAnswer_help_en.pdf)**
2018-12-28 00:25:57 +08:00
## 快速开始
首先您需要从[此处](https://pan.baidu.com/s/1LHGO0cU5et5o5nQWc3UvVg)下载系统必需的数据文件dbpedia16.rar提取码为1mcr您需要将其解压到data文件夹下。
2019-01-26 17:26:13 +08:00
由于完整的数据文件需要较大的内存支持20GB您也可以选择下载我们从DBpedia 2016中抽取生成的[小规模数据](https://pan.baidu.com/s/1Txe_cwpuoohJXH70yfxB-Q)需要5GB内存提取码为zuue。注意问答系统在小规模数据集上的能力是受限的在[官网](http://ganswer.gstore-pku.com/)的问题样例和QALD系列问题之外您可能需要根据数据文件自行选择合适的问题来进行测试。
2018-12-28 00:25:57 +08:00
### 使用jar包部署
我们推荐您使用我们提供的打包好的jar文件部署gAnswer具体步骤为
2018-12-28 00:53:14 +08:00
- 下载Ganswer.jar与dbpedia16.rar两个文件我们推荐您从github的release页面下载最新版的Ganswer.jar以保证稳定性。
- 在控制台下解压Ganswer.jar
```java
jar -xvf Ganswer.jar
```
- 您应该解压到主工程目录下请保证Ganswer.jar文件与解压得到的文件处在同一路径下。
- 在控制台下解压dbpedia16.rar注意这时您需要把解压得到的文件置于Ganswer.jar文件所在的路径的data文件夹下。下方的示例默认dbpedia16.rar与Ganswer.jar已经处于同一文件夹下。
```java
2019-01-26 17:27:50 +08:00
unrar x DBpedia2016.rar ./data/
2018-12-28 00:53:14 +08:00
```
2019-01-24 17:39:12 +08:00
- 这时,您现在的工程目录结构应该是这样的:
>Main_project_directory
>>Ganswer.jar<br />
>>unzipped files from Ganswer.jar<br />
>>data
>>>unzipped files from dbpedia16.rar<br />
2018-12-28 00:53:14 +08:00
- 在控制台下运行jar包。
```java
java -jar Ganswer.jar
```
- 等待系统初始化结束出现Server Ready字样后则说明初始化成功您可以开始通过Http请求访问gAnswer的服务了。
2018-12-28 00:25:57 +08:00
2019-01-24 17:39:41 +08:00
### 通过http请求使用GAnswer
2019-01-24 17:39:12 +08:00
我们为您提供了一个简单的样例以说明如何通过http请求获取GAnswer服务。
您可以通过类似下面的url来访问GAnswer
2019-01-24 19:28:25 +08:00
http://[ip]:[port]/gSolve/?data={maxAnswerNum:1, maxSparqlNum:2, question:Who is the wife of Donald Trump?}
2019-01-24 17:40:16 +08:00
<br />其中,[ip]和[port]分别为您启动GAnswer服务的ip地址和端口端口系统默认为9999您需要通过在http请求中添加“data”参数传递一个json字符串给GAnswer。
2019-01-24 17:39:12 +08:00
在这个样例中您实际传递的json数据为
```json
{
"maxAnswerNum":"1",
"maxSparqlNum":"2",
"question":"Whos is the wife of Donald Trump?"
}
```
其中maxAnswerNum和maxSparqlNum分别规定了返回的答案和sparql的数量上限这两个数据项都是可选的。
一般情况下这时GAnswer会返回一个json字符串其中包含了系统生成的sparql和问题答案。
```json
{
"question":"Who is the wife of Donald Trump?",
"vars":["?wife"],
"sparql":["select DISTINCT ?wife where { <Donald_Trump>\t<spouse>\t?wife. } LIMIT 1","select DISTINCT ?wife where { ?wife\t<spouse>\t<Donald_Trump>. } LIMIT 1"],
"results":{"bindings":[{"?wife":{"type":"uri","value":"<Ivana_Trump>"}}]},
"status":"200"
}
```
详细信息可以在帮助文档的“2.1.1 开始使用”’一章找到。
2018-12-28 00:25:57 +08:00
### 使用eclipse运行
2018-12-28 01:05:35 +08:00
当您使用eclipse运行gAnswer系统时只需要通过clone或者download获取工程源码然后按正常步骤导入Eclipse工程同时将lib中的jar包加入Build Path中即可。由于外部jar包过大无法上传github您可以从[此处](https://pan.baidu.com/s/1ZfdKDtuE6PLby1koEs6aFg)下载所有需要的外部jar包,提取码为ud2v
2018-12-28 00:53:14 +08:00
这时您同样需要下载解压dbpedia16.rar,并解压到工程文件根目录下的data文件夹中。与数据路径相关的参数您可以在qa.Globals.localPath中找到
2018-12-28 00:25:57 +08:00
### 注意事项
要运行gAnswer系统需要较多的包依赖、文件依赖和外部接口依赖关于这部分要求请您参阅帮助文档的“2.4 安装指南”。
2019-01-29 14:36:31 +08:00
在生成SPARQL查询后系统默认调用部署在远程服务器上的gStore查询引擎来查找答案。这意味着额外的网络传输开销和可能存在的排队等待开销。
因此我们强烈建议您在自己的服务器上部署gStore查询引擎并建立对应的知识库。您需要
2019-01-29 14:37:52 +08:00
- 下载[DBpedia2016 triples文件](https://pan.baidu.com/s/1l5Oui65sDn8QPYmA0rUvuA)提取码89yy。
2019-01-29 14:45:53 +08:00
- 部署[gStore](http://gstore-pku.com)查询引擎并使用下载的triples文件来构建数据库。值得提醒的是DBpedia 2016 triples文件大小为9.9GB,构建数据库需要较大的内存(>10GB)和较长的时间(10小时左右)。
2018-12-28 00:25:57 +08:00
## 其他事项
我们非常欢迎您使用gAnswer并向我们提出您的宝贵意见或者bug报告。
如果您的意见或者报告被采纳,我们会将您的贡献记录在我们的帮助文档中。
2018-12-29 14:25:35 +08:00
我们针对QA任务和gAnswer系统发表了多篇论文您可以在帮助文档的“3.2 出版物”一章找到相关信息。
2018-12-28 00:25:57 +08:00
2018-12-13 22:48:23 +08:00