优化方案设计
为中文维基百科知识建立索引库,利用albert模型进行命名实体提取,提取后进行检索。通过预训练W2V中文词向量进行模糊关键词匹配,最终找到索引库中的文段,使用上述阅读理解模型进行答案获取。
选择torchserve作为模型服务器部署工具,因此将模型全部替换为torch框架下的模型。
知识库索引建立
将转化为json的中文wiki数据存入sqlite数据库,对大规模数据索引进行加速
# -*- coding: utf-8 -*-
import os
import sqlite3, json
from tqdm import tqdm
import unicodedata
def normalize(text):
"""Resolve different type of unicode encodings."""
return unicodedata.normalize('NFD', text)
def get_contents(filename):
"""Parse the contents of a file. Each line is a JSON encoded document."""
documents = []
with open(filename, encoding='utf-8') as f:
for line in f:
doc = json.loads(line)
documents.append((normalize(doc['id']), doc['text']))
return documents
conn = sqlite3.connect(r'DB_output/output.db')
os.chdir('data')
c = conn.cursor()
try:
c.execute("CREATE TABLE documents (id PRIMARY KEY, text);")
except:
pass
for file in tqdm(os.listdir()):
doc = get_contents(file)
c.executemany("INSERT INTO documents VALUES (?,?)", doc)
conn.commit()
conn.close()