知识图谱构建方式及程序设计
31 Jan 2018 知识图谱简单来说就是具有语义理解与信息互联互通能力的知识库。它作为人工智能技术的重要组成部分,主要应用在搜索引擎、话术追踪、人机交流等多个领域。本文提供一种构建知识图谱的概念,其本质上来说还算不上真正的知识图谱,构建方式如下:
(1)从样例文本或FAQ中提取不同的对话场景;
(2)将不同的对话场景编译为正则表达式的形式;
(3)人工对每个正则表达式配上相应的业务知识点;
(4)根据正则表达式回扫所有文本并打上对应的业务知识点标签;
具体操作步骤如下:
(1)将已构建好的正则及知识点整合文档reg.excel放在D盘下;
(2)在D盘下创建test文件夹,将原始语料*.txt放入文件夹中;
Python程序设计如下:
import xlrd # Excel读取包
import os # 路径包
import re # 正则包
# ==== 读取reg.excel文件 ====
datadir='d:\\reg.xlsx'
data = xlrd.open_workbook(datadir)
table = data.sheets()[0] # 0表示读取第1张表
nrows = table.nrows # 获取行数
reg_list = []
for i in range(1,nrows): # 第一行为表头,range从第二行到第nrows行
row = table.row_values(i) # 按行读取数据,row[0]第一列 row[1]第二列
if row: # 存储k-value值,row[0]正则为key,row[1]标签为value
one_reg = dict() # 创建一个字典对象
one_reg[row[0]] = row[1]
reg_list.append(one_reg)
# ==== 读取原始语料txt文件 ====
rootdir='d:\\test\\'
txt_list = [] # 定义一个列表用于存储所有文件内容
for root, dirs, files in os.walk(rootdir): # 遍历指定目录
for filename in files: # 遍历目录下所有文件
fullname = root + filename # 拼接完整的文件名,parent是父目录
one_file = open(fullname,'r', encoding='utf-8').read()
# 存储K-value 文件名:文件内容
one_txt = dict()
one_txt[fullname] = one_file
txt_list.append(one_txt)
# ==== 依据正则对文本进行打标 ====
result_content = ''
for reg in reg_list: # 遍历Excel文件
for reg_key in reg.keys(): # value值:reg[reg_key]
pattern = re.compile(reg_key)
for txt in txt_list: # 遍历txt文件
for txt_key in txt.keys():
match = pattern.search(txt[txt_key])
if match: # 如果Match不为空
turn = match.group(0) # group(0)返回整理,返回对应文本内容
# 输出"文件名\知识点\正则表达式"
result_content += os.path.join(txt_key + '|'+ reg[reg_key] + '|'+ reg_key + '|' + turn + '\n')
print((result_content),file=open('d:\\test01.txt','w',encoding='utf-8')) # 将结果打印到txt中
分类: 自然语言处理