垂直领域知识可迁移搜索项目,目标是通过先进的文本语义理解技术和智能检索技术,把复杂的非结构化文本建立倒排索引,提供高效、便捷、全面的垂类专业问答功能,极大提升知识检索效率,解放生产力。
项目主要功能是将用户的 query 进行解析,提取 query 中的关键信息,使用该关键信息与语料库中 question 字段进行相似度匹配,相似度最高的问题为最佳匹配项,返回该问题的 anwser 作为用户 query 的回答。
核心模块一共四个部分,分别是:
- 数据层
- 输入层
- 相似度计算层
- 输出层
数据层
- 数据预处理模块
- 将源文件转换为规定数据格式,即 question & anwser 对,分别保存至 question.txt 和 anwser.txt 文件中。
- 数据加载模块
- 把符合规定格式的语料库按行读入。
输入层
- Query 清洗模块
- 去除 query 中的乱码、非中文等特殊字符。
- Query 特征抽取模块
- 把 query 文本映射至高维语义空间,得到一个句向量。
相似度计算层
- 相似度计算
- 用户输入的 query 向量与语料库中所有 question 进行相似度计算,得到相似度匹配最高的 question 。
输出层
- Anwser 排序模块
- TODO
- Query & Anwser 匹配模块
- TODO
这是一个示例,说明如何在本地设置项目。要在本地运行,请按照以下简单的示例步骤。
- python == 3.6.5+
- gensim == 3.8.3
- jieba == 0.42.1
- numpy == 1.14.3
- scikit-learn == 0.19.1
pip install -r requirements.txt
python main.py
...
输入:油浸式变压器(电抗器)验收分类
...
输入:验收分类
- 使用 flask 将算法封装接口。
- 基于 AntDesign 的清爽前端界面,提供一个算法调用服务接口。
- 数据加载模块:目前语料为手工构造,后期替换批量自动导入。
- 相似度计算模块:目前采用TFIDF进行计算两句子的相似度,后期可替换为 DSSM 语义相似度模型。
- Anwser 排序模块:将粗召回的结果进行排序。
- Query & Anwser 匹配模块:把最终的结果与用户 query 做准确性验证。
Distributed under the MIT License. See LICENSE
for more information.