知识图谱构建方式及程序设计

  知识图谱简单来说就是具有语义理解与信息互联互通能力的知识库。它作为人工智能技术的重要组成部分,主要应用在搜索引擎、话术追踪、人机交流等多个领域。本文提供一种构建知识图谱的概念,其本质上来说还算不上真正的知识图谱,构建方式如下:
(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中

分类: 自然语言处理