百度开源 FAQ 问答系统(AnyQ)---FAQ数据集的添加

版权声明:如需转载,请注明出处 https://blog.csdn.net/qq_28385535/article/details/83958168

1.FAQ

所谓FAQ(Frequently Asked Questions)问答,指的是通过构建一个数量巨大的问题答案库来作为语料库,当输入一个问题时,通过计算该问题与语料库中的所有问题的语义相似度,给出语义最相似的问题所对应的答案。两个问题语义相似度的计算方法,有:余弦相似度、Jaccard相似度、BM25相似度等。

2.AnyQ索引(Indexing)模块

在AnyQ系统中,索引(Indexing)模块的作用是根据所给定的问题答案数据集,通过将其转换为语义索引库,从而提供检索(Retrieval)、匹配(Matching)模块进行语义相似度计算,匹配出与所提问题最相似的答案。
在最初的AnyQ系统中,所提供的问题答案数据集如下所示,该数据集位于AnyQ/build/solr_script/sample_doc。
在这里插入图片描述

{"question": "XXX", "answer": "XXX", "id": XXX}
  • 接下来,再为该JSON格式文件添加索引ID,即每一条数据前以一个ID开头。其命令如下:
awk -F "\t" '{print ++ind"\t"$0}' JSON文件 > JSON文件.index
  • 索引ID添加完毕以后,即可对已添加完索引ID的文件 JSON文件.index构建语义索引库

首先,需要分别对系统中的字典(Dict)模块,和解析(Analysis)模块设置问题解析时所用插件(路径位于AnyQ/build/example/conf/):

dict_config{
	name: "fluid_simnet"
	type: "PaddleSimAdapter"
	path: "./simnet"
}
dict_config {
	name: "annoy_knowledge_dict"
	type: "String2RetrievalItemAdapter"
	path: "JSON文件.index文件路径"
}
analysis_method {
	name: "method_simnet_emb"
	type: "AnalysisSimNetEmb"
	using_dict_name: "fluid_simnet"
	dim: 128
	query_feed_name: "left" 
	cand_feed_name: "right" 
	embedding_fetch_name: "tanh.tmp"
}

然后,再为JSON文件.index构建语义索引库(在AnyQ/build下执行):

./annoy_index_build_tool example/conf/ example/conf/analysis.conf JSON文件.index 128 10 semantic.annoy 1>std 2>err
  • 语义索引库构建完毕后,即可在检索模块配置文件retrieval.conf中配置语义检索插件(路径位于AnyQ/build/example/conf/):
retrieval_plugin {
	name : "semantic_recall"
	type : "SemanticRetrievalPlugin"
	vector_size : 128
	search_k : 10000 
	index_path : "semantic.annoy文件路径"
	using_dict_name: "annoy_knowledge_dict"
	num_result : 10
}

到目前为止,语义索引库已经添加完毕,此时可启动系统进行测试。
提供一个25W的问答数据集进行测试https://download.csdn.net/download/qq_28385535/10777706

猜你喜欢

转载自blog.csdn.net/qq_28385535/article/details/83958168
FAQ
今日推荐