知识图谱定义:从非结构化文本中提取结构化数据并提供智能检索的大型知识库,根据应用范围可以区分为特定领域知识图谱及开放领域知识图谱。
组织形式:基于RDF存储,基于图数据库存储
存储结构:三元组形式,其结点代表实体(entity)或者概念(concept),边代表实体/概念之间的各种语义关系
技术路线:知识提取,知识表示,知识存储,知识应用
工作流程:人工标注(定义实体标签)房产信息词典导入--分词--词性标注--转BiLSTM+CRF训练语料--训练模型--实体识别--关系抽取--抽取三元组(实体 属性 关联)--知识存储neo4j图数据库
图片来源:https://www.jianshu.com/p/dcfee66b753b
相关网址:http://www.openkg.cn/
数据来源:客服问答清单+楼盘/小区信息
数据获取方式:
网上的公开数据集,主要是竞赛相关数据
爬虫
开发环境:pycharm+python3.6
数据样例:
1.客服问答示例
2.楼盘/小区示例
上述表格示例可以看到,原始数据“客服问答清单”及“楼盘/小区信息”分别属于非结构化数据和结构化数据,由知识图谱的定义可知后者“楼盘/小区信息”是可以通过数据整合清洗后直接录入图数据库作为实体节点的,而前者“客服问答清单”中“问题内容”及“答案内容”部分需要进行知识提取。
数据清洗
1.针对结构化数据的简单处理
从表格简单观察来看,“楼盘/小区信息”是标准的结构化数据,而实际上数据单元仍存在许多人为录入的错误,如词汇间多余的空格,全角/半角的特殊符号差异,数值格式不统一,单元格的空值,句子末尾量词和结束符等。
处理方法是利用字段已经对齐的前提下,对同类别字段的值做正则化统一格式,空值字符统一置空,空值数值统一置零,导入mysql数据库。后续作为词典输入分词器。
特殊符号统一替换分割pattern = r',|/|;|\'|`|\[|\]||\?|:|"|\{|\}|\~|!|@|\$|%|\^|&|\(|\)|-|=|\_|\+|,|。|:|、|;|‘|’|【|】|·|!|\s+|…|(|)'entity = re.sub(u"\\(.*?\\)|\\{.*?}|\\[.*?]|\\(.*?\\)", "", entity)result_list = re.split(pattern, entity
空格统一替换item = item.replace('\r', ' ').replace('\n', ' ').replace('\t', ' ')
2.针对非结构化数据的简单处理
“客服问答清单”中文本量大的部分主要是“问题内容”及“答案内容”字段部分,后续需要从中提取实体和关系,数据预处理部分可以简单地做个拼接处理,即整合成一句话的形式,导入mysql库。