gAnswer系统是一个基于海量知识库的自然语言问答系统,针对用户的自然语言问题,能够输出SPARQL格式的知识库查询表达式以及查询答案的结果。整个项目用JAVA编写,因此可以在不同操作系统上使用。
若您需要获取源码,可以从我们的github页面上获取:https://github.com/pkumod/gAnswer
1、系统要求
-
数据集。gAnswer系统需要使用RDF格式的数据集,目前我们使用dbpedia 2016数据集作为gAnswer的知识库,我们对dbpedia 2016的官方数据进行了一定的筛选和预处理。
-
外部图数据库系统。gAnswer系统的运行需要借助支持SPARQL查询的图数据库系统来获取最终答案。我们在目前的版本中,我们使用gStore系统,并且在其基础上利用预处理的dbpedia 2016 数据进行建库,并使用http请求与其交互。关于gStore系统,详情请参阅其github页面https://github.com/pkumod/gStore
-
外部工具包。gAnswer系统在问题理解阶段需要借助一些NLP工具,主要包括maltparser、StanfordNLP,在sparql生成阶段,需要借助Lucene对辅助信息进行索引。
-
其他。见下表:
项目 | 要求 |
---|---|
操作系统 | Linux,Windows |
架构 | x86_64 |
磁盘容量 | >8GB |
内存空间 | >20GB |
Java | 版本 >= 1.6 |
2、安装依赖
2.1、包依赖
在目前版本的gAnswer系统中,需要引入如下jar包:
commons-codec-1.3.jar | maltparser-1.9.1.jar |
---|---|
commons-httpclient.jar | mysql-connector-java-5.1.7-bin.jar |
GstoreJavaAPI.jar | Stanford-corenlp-1.3.4-models.jar |
jetty-all-9.0.4.v20130625.jar | Stanford-corenlp-1.3.4.jar |
json.jar | xom.jar |
liblinear-1.8.jar | lucene-core-2.0.0.jar |
libsvm.jar | maltparser-1.9.1.jar |
log4j.jar |
2.2、外部接口依赖
在目前的gAnswer系统中,我们需要借助一些外部系统接口。在我们公开的版本中,我们提供了远程的外部系统调用函数,因此,您并不需要在您的计算机上安装这些外部系统。当然,您也可以选择自己安装它们。具体见下表:
项目 | 要求 | 位置 |
---|---|---|
gStore | 版本 >= v0.7.0 | qa.GAnswer.getAnswerFromGStore2() |
DBpediaLookup | qa.mapping.DBpediaLookup |
出于性能考虑,我们强烈建议您使用自己在本地安装的gStore和DBpediaLookup服务。
-
如果您需要安装gStore,请从gStore的github主页上获取资源与相关信息:https://github.com/pkumod/gStore
-
如果您需要安装DBpediaLookup,请从DBpedia的官方网站上获取资源与相关信息:https://wiki.dbpedia.org/lookup/
-
当您选择使用自己配置的gStore或DBpediaLookup,您需要下载我们的源码,自行更改源码中gStore与DBpediaLookup的服务器地址与端口(需要修改的位置见上表),才能够正确使用gAnswer。需要注意的是,这时您只能从IDE(我们推荐您使用Eclipse)运行gAnswer工程。如果您仍然需要使用jar包运行gAnswer,您需要自行打包jar包。
2.3、文件依赖
文件/文件夹 | 描述 |
---|---|
16predicate_id | RDF数据中出现的谓词到编号的映射 |
16entity_id | RDF数据中出现的实体到编号的映射 |
16basic_types_id | RDF数据中出现的rdf type到编号的映射 |
16yago_types_list | RDF数据中出现的yago type的列表 |
16type_id_all | 所有出现的type到编号的映射 |
16type_fragment | 数据集中各种type所包含的实体集合 |
16entitiy_fragment | 数据集中每个实体可以接受的实体和谓词 |
16predicate_fragment | 数据集中谓词可以接受的type类型 |
16dbo_predicates | 数据集中属于dbo域的谓词列表(标准谓词) |
stopEntDict | 停用的实体名称列表 |
dbpedia-relation-paraphrases-withScore-baseform-merge-sorted-rerank-slct | 谓词复述短语到RDF数据中标准的谓词的映射词典 |
3、gAnswer 部署
首先你可以在百度网盘(https://pan.baidu.com/s/1LHGO0cU5et5o5nQWc3UvVg)下载必要的数据文件 dbpedia16.rar ,提取码是1mcr。如果您在打开它时遇到问题,请使用 Google-Drive下载(https://drive.google.com/open?id=1hmqaftrTo0_qQNRApCuxFXaBx7SosNVy)推荐你将文件解压缩到名为 data 的目录中。由于完整的数据至少需要 20 GB 的主内存,您也可以尝试较小的数据集(https://pan.baidu.com/s/1Txe_cwpuoohJXH70yfxB-Q)(需要 5GB),提取码是zuue。该数据集能够回答我们官方网站(http://ganswer.gstore-pku.com/)上以及 QALD 数据集中的问题,但系统性能在小数据上有限,你需要根据数据文件选择合适的问题进行测试。
对于那些想要建立自己的 gstore 服务的人,我们还提供dbpedia (https://pan.baidu.com/s/1jQ_jGTniflzoqBhpz5tjnw)三元组数据集,提取码是 rpev。
使用jar包部署gAnswer
我们推荐您使用我们提供的打包好的jar文件部署gAnswer,具体步骤为:
1. 下载Ganswer.jar与dbpedia16.rar两个文件,我们推荐您从该项目的github版本的release页面下载最新版的Ganswer.jar,以保证稳定性。
2. 在控制台下解压Ganswer.jar,您可以解压到任意文件路径下,但请保证Ganswer.jar文件与解压得到的文件处在统一路径下。
jar -xvf Ganswer.jar
3. 在控制台下解压dbpedia16.rar,您需要把解压得到的文件夹置于Ganswer.jar文件所在的路径下。这时,您的文件结构应该如下所示:
unrar x dbpedia16.rar ./data/
Ganswer. jar
unzipped files from Ganswer. jar
data
unzipped files from dbpedia16. rar
4. 在控制台下运行Ganswer.jar
java -jar Ganswer. jar
等待系统初始化结束,出现Server Ready!字样后,则说明初始化成功,您可以开始通过Http请求访问gAnswer的服务了。
5. 在控制台下运行Ganswer.jar
java -jar Ganswer. jar
等待系统初始化结束,出现Server Ready!字样后,则说明初始化成功,您可以开始通过Http请求访问gAnswer的服务了。
4、开源与授权
gAnswer 的源代码遵循 BSD 开源协议。你可以使用 gAnswer 、报告建议或问题,或者加入我们使 gAnswer 变得更好。在尊重我们的工作的前提下,你也可以基于gAnswer 开发各种应用。