大数据审计(基于Python) 课件 第8-14章-财经文本的量化 -审计报告自动生成_第1页
大数据审计(基于Python) 课件 第8-14章-财经文本的量化 -审计报告自动生成_第2页
大数据审计(基于Python) 课件 第8-14章-财经文本的量化 -审计报告自动生成_第3页
大数据审计(基于Python) 课件 第8-14章-财经文本的量化 -审计报告自动生成_第4页
大数据审计(基于Python) 课件 第8-14章-财经文本的量化 -审计报告自动生成_第5页
已阅读5页,还剩368页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第八章自然语言处理:财经文本的量化第二节

中文分词目录第三节

命名实体识别第四节

关键信息提取第五节

综合训练第一节

自然语言处理自然语言处理1自然语言处理概述自然语言处理(NLP):研究如何通过机器学习等技术让计算机学会处理人类语言,

乃至实现计算机对人类自然语言的自动或半自动处理。目标:让计算机处理或“理解”自然语言应用领域:机器翻译、命名实体识别、信息提取、情感分析、

关系提取、语音识别等机器学习机器学习(MachineLearning):让计算机自动地从经验数据中总结规律,得出相应

的预测模型,并利用该模型对未知数据进行预测。运用机器学习解决问题的一般过程:其中,用于学习的经验数据的集合被称为“数据集”,数据集中的一个个例子被称为“样本”。机器学习机器学习分类:监督学习:通过输入标注数据,让计算机在迭代学习的过程中训练并完善预测模型。无监督学习:依托于无标注的数据集,让计算机发现并总结出样本的特征按照其性

质自动聚集在一起,常用于聚类与降维。半监督学习:介于监督学习与无监督学习之间,综合利用标注数据和未标注数据。强化学习:强调对周围环境的反馈,即智能系统从环境到行为映射的学习,以使奖

励信号函数值达到最大。语料库语料库:用于语言分析和语料分析的系统化和计算机化的真实语言集合,

由真实语料经过加工处理得到的。语料库构建三阶段:规范制定——由语言学专家制定的包括标注集定义、样例和实施办法在内的一套标注规范人员培训——对标注员进行培训以保障标注工作的一致性人工标注——标注员对语料进行标注语料库常见语料库(根据实现任务划分):中文分词语料库由人工正确切分后的句子集合词性标注语料库切分并为每个词语指定一个词性的语料(词语词性的集合→词性标注集)命名实体识别语料库人工标注文本内部制作者关心的实体名词以及实体类别的语料库。中文分词句法分析语料库对句子进行分词、词性标注和句法标注的语料库。文本分类语料库人工标注了所属分类的文章构成的语料库。词性标注命名实体识别句法分析句法分析文本聚类文本分类自然语言处理&机器学习&语料库自然语言处理机器学习语料库实现方式工具工具Hanlp环境搭建安装命令:检验:输出结果:中文分词2中文分词中文分词:将一个中文文本切分为一系列词语的过程。分类(根据实现原理和特点):

(一)基于词典的分词算法——给定词典 文本内容与词典相匹配

(二)基于统计的分词算法——在给定大量已分词文本 利用机器学习模型进行标注训练词典分词词典分词:给定词典与查词规则 文本与词典中的字符串匹配 输出匹配结果词典分词常见匹配规则:正向最大匹配、反向最大匹配、双向最大匹配

正向最大匹配——从左至右进行匹配

反向最大匹配——从右至左进行匹配

双向最大匹配——同时执行正向最大匹配与反向最大匹配,优先输出词数

更少、单字更少的结果词典分词词典分词实现:自定义词典分词常用的中文词典:互联网词库、清华大学开放中文词库(THUOCL)、HanLP词库等使用Hanlp中提供的已封装好的函数实现分词二元语法分词二元语法分词:基于统计的分词方法 给定大量已分词文本

利用机器学习得到预测模型语言模型:对语言现象的数学抽象二元语法:每次计算只涉及连续两个单词的二元连续二元语法分词全切分:获取分词语句中所有可能的切分结果

例如:“服务业景气”的全切分结果为['服','服务','服务业','务','业','景','景气','气',]语句全切分构建词网选择分词结果加载二元语法模型将大量已分词文本作为语料,以出现频率作为概率,计算出涉及两个词语的二元连续概率根据分词方法出现的概率大小判断出最合理的分词结果词典分词&二元语法分词算法简单明了、较为直观分词速度较快准确度较高,分词结果更为合理词典分词:二元语法分词:词典中所收录的词语有限时效性不长准确率不高无法消除歧义等问题需人工标注中文分词语料库,任务量较大词典的构建常见词典:中文分词词典情感分析词典同义词词典停用词词典词典的构建中文分词词典——纯文本文件可用于词典分词、词性标注等例:THUOCL清华大学开放中文词库

包含:

IT、财经、成语、地名、

历史名人、诗词、医学、

饮食、法律、汽车、动

物共11个模块词语列词频列词典的构建情感分析词典——由具有语法敏感性的专业人员构建

对词语进行正向与负向的划分,评定情感程度

可用于文本的情感分析例:BosonNLP情感词典

词语列分数列以分数大小表示情感倾向“+”表示正向情感“-”表示负向情感分数绝对值越大,情感程度越强词典的构建同义词词典例:哈尔滨工业大学同义词词林

编号词语符号编号——表示词语类别符号——表示词语间的关系词典的构建停用词词典——汇聚常见的停用词

停用词——无实义,用于连接句子或表示程度或语气的词语例:

仅一列——词语列命名实体识别3命名实体识别命名实体(Entity):客观存在并可相互区别的事物命名实体识别:识别出文本中的时间、数字、人名、地名、机构名、专有名词等具

有特定意义的实体并对其进行分类(NamedEntityRecognition)命名实体识别实现方法:基于规则的实体识别、基于统计的实体识别基于规则的实体识别专家制定规则系统

结合命名实体的特征基于规则的实体识别:常用特征:统计信息、标点符号、关键字、指示词和方向词、

位置词、中心词等适用范围:有规则可循的命名实体 语言现象的共性特点能够被比较准确地描述基于规则&基于统计的实体识别适用范围较小耗费的人力、物力及时间成本较高对命名实体库有较强的依赖性存在一定的误差基于规则的实体识别:基于统计的实体识别:基于人工标注的语料,通过机器学习实现灵活,实用性强,实用范围广准确率高基于预训练模型的实体关系抽取预训练模型:经过大量未标注数据训练得到的能够被迁移运用到特定问题的模型。选取预训练模型训练(调整模型参数)得到新模型预训练模型的训练情景与所实现具体任务有较高的相似度实体关系抽取:选取Bert模型运用实体关系抽取语料库进行训练得到新模型用于实体关系抽取基于依存句法分析的实体关系抽取句法分析:分析句子语法结构依存句法分析:关注词语间的依存关系,得出句子的语法结构依存句法理论:词语之间存在从属关系

支配词&从属词依存句法树:将句子内部词语之间的依

存关系通过箭头表示出来基于依存句法分析的实体关系抽取依存句法分析实现方法:基于图的依存句法分析

从完全有向图中寻找最大生成树 对每条边打分,从中搜索最优解基于转移的依存句法分析

寻找最优动作序列 预测转移动作,拼装依存句法树基于依存句法分析进行实体关系抽取:通过依存句法分析得到句子内部词语间的依存关系根据中文语法规则分析,实现实体关系抽取财经文本命名实体识别命名实体识别实现:调用newsegment类完成命名实体识别关键信息提取4关键词提取关键词的判定:(一)根据词频判定关键词词语在文本中的出现次数在一定程度上能够反映其重要程度通过词频统计来初步实现关键词提取词频判定并提取关键词的实现:关键词提取数两个参数:文本关键词提取关键词的判定:(二)TF-IDF评估字词的重要程度TF(TermFrequency)——词频IDF(InverseDocumentFrequency)——逆向文件频率TF-IDF评估:排除助词、副词等无意义的词语,提高关键词提取的准确率字词的重要性随着它在文件中出现的次数成正比增加

随着它在语料库中出现的频率成反比下降关键词提取TF-IDF评估的实现:关键词的判定:(二)TF-IDF评估字词的重要程度关键词提取在HanLP中,使用extractKeyword实现关键词提取关键词提取数extractKeyword两个参数:文本关键句提取关键句的衡量:与相邻句子有更密切的联系,具有更高的相似度

相似度判断:借助于各种算法关键句提取具体实现:关键句提取数extractSummary两个参数:文本使用extractSummary实现关键句提取情感分析情感分析:通过对文本进行处理与分析,提取文本中含有的主观情感倾向。利用情感词典进行情感分析:(一)对文本进行分词,排除停用词,得到分词后的文本语料(二)将分词后的语料与情感词典进行匹配得到每个词语所对应的情感分数(三)将所有词语的情感分值加总得到整个文本的分数(四)根据文本情感分数得出文本情感倾向综合训练5综合训练第一步——中文分词(同时进行命名实体识别)第二步——提取关键词第三步——提取关键句第四步——依存句法分析谢谢观看Thanks第九章自然语言处理:金融文本摘要文本摘要自动生成概述偏好构建模块锁定段落中心句摘要生成模块目录01020304文本摘要自动生成概述1本章节介绍一种基于偏好的金融文本摘要自动生成技术。该方法利用上交所、深交所等官方平台的金融文本构建偏好语料库,通过互信息与TF-IDF算法的结合抽取出携带偏好的段落中心句,最后经由一系列处理方法生成携带偏好的摘要,使其更贴合不同群体的需要,从而打造个性化文本摘要自动生成体系。或者通这里,或者通过复制过复制您的文本1.1研究背景与问题定义互联网蓬勃发展文本数据指数型增长新型工作需求文本摘要自动生成技术右键点击图片选择设置图片格式可直接替换图片。您的容打在这里,或者通这里,或者通过复制过复制您的文本1.2技术分类与实现方法方法技术类型

主题模型无监督学习

基于图无监督学习

特征评分无监督学习

序列标注监督学习抽取式方法分类算法监督学习

启发式算法强化学习

线性规划其他

次模函数其他

深度学习监督学习

基于图无监督学习

线性规划其他生成式方法语义表示无监督学习

模版无监督学习

深度学习监督学习文本摘要自动生成技术自20世纪50年代末被提出至今已发展出许多卓越的技术方法,并且出现众多分类标准。按照产生方法可以将其分为抽取式方法和生成式方法。抽取式方法是从原始文本中提取关键文本单元来组成摘要,通常会保留原始文本的显著信息,虽然有着正确的语法,但也面临大量冗余信息的问题。生成式方法是试图分析理解原始文本,可以生成原始文本中没有的内容,具有生成高质量摘要的潜力,但语法语义方面有所欠缺。

1.3评价指标与数据集分类名称

LCSTS中文数据集NLPCC

搜狐新闻数据集

CNN/DailyMail

Gigaword

DUC/TAC英文数据集NewYorkTimes

Newsroom

Bytecup

会议摘要数据集AMI

雅思摘要数据集LELTS

金融文本摘要自动生成技术应用领域广阔,模型的评价方式对检验提升文本摘要的性能具有重要意义。其评价方法大致分为两类:内部评价方法(IntrinsicMethods):提供参考摘要,以参考摘要为基准评价系统摘要的质量。系统摘要与参考摘要越吻合,质量越高。外部评价方法(ExtrinsicMethods):替原文档执行某个文档相关的应用。例如:文档检索、文档聚类、文档分类等,能够提高应用性能的摘要被认为是参考价值高的摘要。偏好构建模块22.1获取偏好文本采用分布式爬虫作为数据采集的手段,采集各大财经网站中的金融文本以及上交所、深交所等官方平台的金融文本。按规则启动一个采集工程,再通过数据归类、转换,最后得出可以被机器识别使用的数据。分布式爬虫,指的是多台机器多个爬虫对多个URL同时抓取网络信息的程序或者脚本。这种联合采集的方式,使抓取的效率和广度得到了提升。可以通过主从分布式爬虫技术,获取评价文本与目标文本,构成语料库。右键点击图片选择设置图片格式可直接替换图片。您的容打在这里,或者通这里,或者通过复制过复制您的文本2.2文本处理

2.2文本处理

2.2文本处理信息处理特殊字符去除特殊字符日期替换为标签TAG_DATE超链接URL替换为标签TAG_URL全角英文替换为标签TAG_NAME_EN数字替换为标签TAG_NUMBER分组检测方向表

对于一份完整的文本而言,不可避免地会出现脏数据,如特殊字符、括号内的内容、日期、超链接URL、全角的英文、数字等。这些数据会显著增加模型训练时间,甚至对结果造成干扰。因此,文本数据清洗十分必要。依据数据特征,将不同类型的数据分组,不同组类的数据确定相应的检测处理方法。对于关键变量主要分析其缺失性与唯一性;对于数值型变量主要分析其缺失率、平均值、中值、最大值、最小值等;字符型变量和日期型变量主要分析其频数。2.3

LDA主题模型

2.3

LDA主题模型文档-词汇矩阵…………………………………………

文档-主题矩阵…………………………………………

原理解释2.3

LDA主题模型由上述过程,就将偏好文本和词投射到一组偏好标签上,通过偏好标签,可以找出偏好文本和词、文本和文本、词和词之间潜在的关系。主题-词汇矩阵…………………………………………

原理解释2.3

LDA主题模型矩阵1:偏好文本到偏好标签…………………………矩阵2:词到偏好标签…………………………

输出效果2.4构建偏好语料库

2.4构建偏好语料库

2.4构建偏好语料库

右键点击图片选择设置图片格式可直接替换图片。您的容打在这里,或者通这里,或者通过复制过复制您的文本2.4构建偏好语料库

2.4构建偏好语料库语料库示例文本:货币政策方面强调“精准”,明确要处理好恢复经济和防范风险关系。“外需强内需弱”特征下的经济复苏全年宏观政策基调无疑是以当前基本经济形势为考量制定的,而当前经济运行情况的最大特征即是“外需强内需弱”。语料库内容为每个词在七个主题的概率分布可通过Debug查看行标签为7个偏好列标签为文本全部分词,截图仅显示部分锁定段落中心句33.1获取偏好文本关键词TF-IDF算法

3.1获取偏好文本关键词

公式表示为:

3.2相似度计算余弦相似度

3.3提取带偏好段落中心句

示例金融文本

没有金融科技,难有普惠金融。黄金老认为,要想真正实现普惠金融这一使命,必须依赖金融科技。在他看来,普惠金融首先拥有海量的客户。这需要依靠AI,利用精准营销、智能客服、智能投顾、智能催收等技术,才能超越人工的局限,服务海量用户。其次,信用贷款双方互相不见面。这需要借助生物特征识别,如人脸、指纹、声纹、虹膜、静脉等识别技术,解决远程核实身份的难题,延伸金融服务的半径。再次,客户弱资信,尤其是很多小微企业主由于财务数据不全,信用评级相对比较低。这需要大数据风控,通过行为数据风控、海量风控变量、弱征信数据等技术,进行综合评估。普惠金融最后一个特点是跨地域,客户可以遍布全球各地。3.3提取带偏好段落中心句代码实现思路

3.3提取带偏好段落中心句代码实现思路

3.3提取带偏好段落中心句代码实现思路

3.3提取带偏好段落中心句代码实现思路

3.3提取带偏好段落中心句偏好测试“投资”偏好“股票”偏好摘要生成模块44.1依存句法分析依存句法分析可以用来识别句子中的“主谓宾”、“定状补”这些语法成分,并分析各成分之间的关系。同时,它将“谓语”视为句子的中心,其他成分与该词直接或间接地产生联系。本章节通过依存句法分析,挖掘语句层次关系,助力于有相同主语的句子的合并操作。输入:在企业不断运转过程中,投资和再投资是企业生产和扩大再生产所必须经历的阶段。分词代号分词父节点代号依存关系1在12状中结构2企业4主谓关系3不断4状中结构4运转5定中关系5过程6定中关系6中1介宾关系7,1标点符号8投资12主谓关系9和11左附加关系10再11状中结构11投资8并列关系12是0核心关系13企业21主谓关系14生产21主谓关系15和16左附加关系16扩大14并列关系17再18状中结构18生产14并列关系19所21左附加关系20必须21状中结构21经历23定中关系22的21右附加关系23阶段12动宾关系24。12标点符号输出右键点击图片选择设置图片格式可直接替换图片。您的容打在这里,或者通这里,或者通过复制过复制您的文本4.1依存句法分析代码实现思路

4.1依存句法分析代码实现思路

4.1依存句法分析代码实现思路

4.1依存句法分析代码实现思路

4.2结构树剪枝根据上述依存句法分析,可以得到语句层次关系,下一步对语句层次关系进行剪枝处理,即将出度与入度低的词删除,留下出度与入度高的词,将这些词合并成句子,作为输出。输入:货币政策方面强调“精准”,明确要处理好恢复经济和防范风险关系。“外需强内需弱”特征下的经济复苏全年宏观政策基调无疑是以当前基本经济形势为考量制定的,而当前经济运行情况的最大特征即是“外需强内需弱”。

右键点击图片选择设置图片格式可直接替换图片。您的容打在这里,或者通这里,或者通过复制过复制您的文本4.2结构树剪枝输出剪枝后效果4.2结构树剪枝代码实现思路

4.2结构树剪枝代码实现思路

4.2结构树剪枝代码实现思路

4.2结构树剪枝经过上述步骤,可以获得初步摘要。在剪枝过程中,出度与入度的定义依照不同需求、不同应用领域会有不同的策略或方法。并且在中文语境中,句子与句子之间存在着因果、转折、并列、递进等关系,因此可以针对上述合并好的句子做相关性处理,例如存在关系的句子,加入对应的连词,使其更符合中文的逻辑。另外,还可以通过语义依存分析使合并的句子能够满足上下文语义的要求。这里只做启发性思考,有兴趣的读者可以进行深入研究,进而提升文本摘要性能。谢谢观看Thanks第十章自然语言处理:抽取实体关系1)知识抽取任务概述2)面向结构化数据的知识抽取目录3)面向非结构化数据的知识抽取知识抽取任务概述1推理流程德勤:七大智慧审计武器之一——知识图谱资金监管失联客户运用实例云南城投置业股份有限公司的前身为云南光明啤酒股份有限公司,于1992年12月以定向募集方式成立,1998年10月23日在云南省工商行政管理局变更名称为云南红河光明股份有限公司,企业法人营业执照注册号:5300001002428,公司股本177,338,160.00元。2007年10月24日在云南省工商行政管理局变更名称为云南城投置业股份有限公司,企业法人营业执照注册号:530000000004673,公司注册地址为云南省昆明市民航路400号,法定代表人:许雷。知识抽取任务概述云南城投置业股份有限公司前身公司云南光明啤酒股份有限公司云南城投置业股份有限公司成立时间1998年10月23日云南城投置业股份有限公司注册地址云南省昆明市民航路400号云南城投置业股份有限公司法定代表人许雷实体实体关系知识抽取任务概述实体抽取关系抽取事件抽取实体消歧云南省贵金属新材料控股集团有限公司控股股东云南城投&云南城投置业股份有限公司知识抽取任务分类构建审计知识图谱的基础是获取实体和关系,对于审计而言关键点在于特定领域实体关系抽取的精确度。大数据时代下审计线索的收集渠道更加广泛,除了被审计单位提供的业务数据及支持证据,还包括政府文书、新闻媒体稿件、社交网站等等。这类非结构化数据的数据量远远超过业务数据这类结构化数据,其中隐含着的审计线索更需要审计人员进行挖掘。审计知识抽取任务公司公告政府信息公开审计知识抽取任务函证凭证查验-回单审计知识抽取任务面向结构化数据的知识抽取2在财经文本中,蕴含大量以表格形式出现的信息。作为一类结构化形式的数据,Python中有多个用于解析pdf文本的库,其中pdfplumber库除了解析文字,还能对表格数据有效提取。面向结构化数据的知识抽取属性描述.metadata从PDF的Info中获取元数据键/值对字典。通常包括“CreationDate”,“ModDate”,“Producer”等。.pages一个包含pdfplumber.Page实例的列表,每一个实例代表PDF每一页的信息。上市公司年度报告中的表格表格提取表格转换结果表格提取业务循环审计涉及的财务科目销售与收款循环的审计主营业务收入、营业外收入、应收账款、长期应收款、预收账款、应交税费、销售费用等采购与付款循环的审计固定资产、在建工程、无形资产、商誉、预付账款、应付账款、长期待摊费用、管理费用等生产与存货循环的审计存货、原材料、库存商品、委托加工物资、制造费用等货币资金的审计公允价值变动损益、投资收益、交易性金融资产、应收利息、应收股利、长期股权投资、递延所得税资产、其他非流动资产、短期借款、交易性金融负债、应付股利、递延所得税负债、长期借款、其他非流动负债、所得税费用等财务科目涉及的经济活动销售费用水电煤气费、运杂费、其他经营费、手续费、办公费、修理费、宣传推广费等财务费用银行贷款、企业借款、票据贴息、金融机构存款等固定资产办公设备、电子设备、机器设备、运输设备、物流设备等财务报告中的结构化数据—科目结构化数据提取面向非结构化数据的知识抽取320世纪80年代末期,机器学习首次提出,用于人工神经网络的反向传播算法(BP算法)的发明,掀起了基于统计模型的机器学习热潮。这种基于统计的机器学习相比过去基于规则的系统,在很多方面体现出了优越性。在这之后的数十年中,类似于支持向量机、最大熵方法等模型先后问世。2006年,加拿大多伦多大学教授、机器学习领域的泰斗GeoffreyHinton和他的学生RuslanSalakhutdinov在《科学》上发表了一篇文章,开启了深度学习在学术界和工业界的浪潮。1、深度学习与神经网络面向非结构化数据的知识抽取神经网络中的单层神经网络架构神经网络一个经典的神经网络,包含三个层次:输入层,输出层,中间层,其中的节点称之为神经元,神经元间的连线称为连接线,每个连接线对应一个不同的权重,一个神经网络的训练算法就是让权重的值调整到最佳,以使得整个网络的预测效果最好。深度神经网络实际上就是将神经网络进行叠加,中间层叫做隐藏层,能够分辨出浅层神经网络无法分辨的细节。具体来说,随着网络的层数增加,每一层对于前一层次的抽象表示更为深入,例如第一个隐藏层学习到的是“边缘”的特征,第二个隐藏层学习到的是由“边缘”组成的“形状”的特征,第三个隐藏层学习到的是由“形状”组成的“图案”的特征,最后的隐藏层学习到的是由“图案”组成的“目标”的特征。通过抽取更抽象的特征来对事物进行区分,从而获得更好的区分与分类能力。神经网络在自然语言处理任务中,可供使用的模型众多,推动其不断演化进步的目标就是提高准确率和召回率。在Stanford阅读理解数据集(SQuAD2.0)2020年的榜单中,机器的成绩已经超出人类表现,且当时位居前列的模型中都出现了transformer的Bert预训练模型的身影。Bert预训练模型Transformer是谷歌大脑在2017年底发表的论文《attentionisallyouneed》中提出的seq2seq模型,这也正是Bert模型学习的基础。谷歌论文:VaswaniA,ShazeerN,ParmarN,etal.Attentionisallyouneed[C]//AdvancesinNeuralInformationProcessingSystems.2017:5998-6008.Bert预训练模型编码器解码器transformer框架的模型结构Bert预训练模型语言模型与Bert模型简介1.HegotbitbyPython2.PythonismyfavoriteprogramminglanguageBert预训练模型语言模型与Bert模型简介语言模型(LanguageModel)公式化的表达为P(C1,……,Cm),即一串词序列的概率分布,作用是为一个长度为m的文本确定一个概率分布P,表示这段文本存在的可能性。Bert的全称是BidirectionalEncoderRepresentationsfromTransformers,即双向的transformer编码表达,为transformer中编码器的部分。Bert预训练模型在Bert中,主要以两种方式建立语言模型:1、Maskedlanguagemodel这一任务将随机遮盖或替换一句话里的任意字或词,然后让模型通过上下文的理解预测该部分的内容,之后计算损失时只计算被遮盖部分[mask]的损失。实际操作方式为:随机把一句话15%的表示词token替换为以下内容:80%的几率被替换成[mask],10%的几率被替换成任意一个表示词,10%的概率不变。2、NextSentencePrediction这一任务简单而言就是上下句预测,实际操作方式为在句子开头加一个[cls],在两句话中和句末加一个[sep],来判断前后两句话的关联性,即:[cls]上句,[sep]下句.[sep]。Bert预训练模型语言模型与Bert模型简介Bert预训练模型Bert开源项目谷歌提供了多个已经训练好的Bert预训练模型以及对应的实例任务,可以直接进行下载,之后在使用Bert模型时可以基于这些训练好的模型添加自己的子任务进行学习。Bert预训练模型谷歌提供的实例任务Bert预训练模型文本分类任务训练集Bert预训练模型以MRPC模型为例,下载后的Data文件夹中有一个名为MRPC的文件夹。这一任务主要针对文本分类,即判断两句话是否表达相同含义,训练集train.tsv中第一列1和0代表两句话的含义相同或不同,第二、三列代表两个string字符串对应的ID。测试集Test.tsv中会少一列0或1的标签。Bert预训练模型参数配置MRPC模型--task_name=MRPC\

对于不同的数据而言,做数据预处理方法也不相同。 MRPC为已经训练好的例子,无需进行预处理。--do_train=true\--do_eval=true\

是否需要做训练,是否需要验证结果。--data_dir=$GLUE_DIR/MRPC\

数据集所在文件夹的位置,建议使用绝对路径表示,不要出现中文路径。--vocab_file=$BERT_BASE_DIR/vocab.txt\

语料表所在文件夹的位置。--bert_config_file=$BERT_BASE_DIR/bert_config.json\--init_checkpoint=$BERT_BASE_DIR/bert_model.ckpt\

超参数、checkpoint所在文件夹的位置。--train_batch_size=32\

在初次尝试时不建议指定过大,使用cpu可以改成1或者2保证正常运行。--output_dir=/tmp/mrpc_output/

保存的训练模型所在文件夹的位置,建议先创建output文件夹避免报错。MRPC模型在输入过程中,由于需要保证句子长度是一样的,因此对于长度不同的句子需要进行截断或者补齐。Max_seq_length表示最大长度,如果设置长度为128,则长度不到128的句子后面句末用0作为索引进行补充。补充部分的Input_mask为0,将便于之后的selfattention操作。input_mask=[1]*len(input_ids)whilelen(input_ids)<max_seq_length:input_ids.append(0)input_mask.append(0)segment_ids.append(0)MRPC模型模型训练MRPC模型自定义数据集的微调Bert官方项目搭建了文本分类模型的model_fn,只需定义自己的DataProcessor类,即可在自己的文本分类数据集上进行训练。操作步骤:1、将自己的数据集统一放到一个目录下并将其划分成train.txt,eval.txt和predict.txt三个文件,每个文件中每行为一个样本,格式为:simplistic,sillyandtedious.__label__0,即句子和标签之间用__label__划分,句子中的词语之间用空格划分。数据集微调2、修改run_classifier.py文件,新建一个DataProcessor的子类,并继承三个get_examples方法和一个get_labels方法。三个get_examples方法需要从数据集目录中获得各自对应的InputExample列表。3、在main函数中,向main函数开头的processors字典增加一项,key为自己的数据集的名称,value为上一步中定义的DataProcessor的类名。4、修改EditConfigurations的参数。5、运行py文件,注意此时如果使用CPU会弹出多个警告,并不影响模型训练。数据集微调bert预训练模型训练结果示例MRPC模型序列标注使用Bert做预训练首先需要通过序列标注得到train.txt、dev.txt、test.txt三份训练数据集,其中包含了每一个字以及对应的B-PER、I-PER、B-ORG、I-ORG、B-LOC、I-LOC、O标签,运用实例

bert模型实体抽取任务参数配置Bert-BiLSTM-CRF

bert模型实体抽取任务结果示例Bert-BiLSTM-CRF关系抽取与实体抽取相同,同样面向非结构化文本数据,通过抽取实体间的语义关系来组成结构化知识。传统方法主要通过人工设计特征进行抽取,工作量较大且非常考验特征的质量。近些年随着深度学习在语音、图像等多领域的成功运用,关系抽取也获得了重大突破。本小节首先介绍依存句法分析,随后借助浙江大学deepke工具,学习基于PCNN的关系抽取模型。关系抽取依存句法通过分析语言单位内成分之前的依存关系解释其句法结构,主张句子中核心动词是支配其他成分的中心成分。而它本身却不受其他任何成分的支配,所有受支配成分都以某种关系从属于支配者。进行依存句法分析需要满足5个条件:(1)一个句子中只有一个成分是独立的(2)句子的其他成分都从属于某一成分(3)任何一个成分都不能依存于两个或两个以上的成分(4)如果成分A直接从属成分B,而成分C在句子中位于A和B之间,那么,成分C或者从属于A,或者从属于B,或者从属于A和B之间的某一成分(5)中心成分左右两边的其他成分相互不发生关系。依存句法分析setence="徐先生还具体帮助他确定了把画雄鹰、松鼠和麻雀作为主攻目标。"依存句法分析句法可视化分析结果依存句法分析词标签:Word.POSTAG表示某个词(节点)的词性,word.DEPREL表示某个词(节点)与其根节点的关系,Word.LEMMA表示词的内容。要通过依存句法分析得到一个[实体,关系,实体]的三元组,通过遍历的方法查找到词后,可以使用同样的方法找到关系。然而对于每句句子而言,句法结构各不相同,因此需要在开始阶段构建尽量完整的提取规则,便于后续进行抽取。依存句法分析hanlp中默认只包含通用词典,因此对于领域词汇通常无法准确切分,例如后续章节中会运用到大量的审计专业词汇,这就必须要求在词性标注阶段就及时对词典进行补充或修正。举例来看,随机挑选审计报告中的一句话:采用个别认定法计提坏账准备,单独进行减值测试。依存句法分析根据分词结果可以发现,其中的审计术语都没有被识别,“个别认定法”的“法”字还被错误切分,与下文“计提”直接形成依存关系,因此必须手工修改保证分词的准确程度。依存句法分析浙江大学基于深度学习的开源中文知识图谱抽取工具——Deepke,以统一的接口实现了目前主流的关系抽取模型包括卷积神经网络、循环神经网络、注意力机制网络、图卷积神经网络、胶囊神经网络以及使用语言预训练模型等在内的深度学习算法。PCNN模型PCNN在CNN的基础上,对卷积层的输出进行优化,使用分段池化取代前面的最大值池化(max-pooling)操作分段池化根据句子中两个实体的位置将句子分为三个片段,再分别进行池化操作,捕捉句子中的结构信息以及更加细粒度的特征。论文出处:/proceedi/proceedings/EMNLP/pdf/EMNLP203.pdfngs/EMNLP/pdf/EMNLP203.pdfPCNN模型PCNN模型核心流程PCNN模型标注格式实例PCNN模型模型训练结果PCNN模型通过实体关系抽取将被审计单位非结构化数据转化为三元组形式的格式化数据后,还需要进行实体关系的消歧和统一。在审计领域,通常需要解决的是实体关系统一的问题。“WD医疗”、“WD医疗科技股份有限公司”、“本公司”“税务局”、“国家税务局”、“国家税务总局”一项办公设备,但是在公司提供的固定资产明细表中和固定资产处置的凭证摘要中,一项资产描述为“IBMPOS机”,另一项描述为“IBM4614”实体消歧及统一实体关系抽取结果保存Excel中格式实体关系抽取结果实体关系抽取结果保存数据库中格式实体关系抽取结果知识图谱举例实体关系抽取结果推理流程谢谢观看Thanks第十一章审计知识图谱自动构建

知识图谱官方定义:知识图谱是一种基于图的数据结构,由节点(Node)和边(Edge)组成,每个节点表示一个“实体”,每条边为实体与实体之间的“关系”,知识图谱本质上是语义网络。在百度上搜索“周杰伦的妻子”,搜索结果不是周杰伦,而是直接返回了昆凌的信息卡片,为什么呢?因为底层知识图谱已经有了周杰伦和昆凌是夫妻关系,所以可以理解到你要找的是昆凌,而不是周杰伦,最后便将昆凌的数据可视化在我们面前,这也说明了知识图谱有理解用户意图的能力。那么简单来看,知识图谱就是把所有不同种类的信息连接在一起而得到的一个关系网络,因此知识图谱提供了从“关系”的角度去分析问题的能力。如何实现知识图谱Neo4j是一个高性能的NOSQL图形数据库。它是一个嵌入式的,基于磁盘的,具备完全的事务特性的Java持久化引擎,但是他将结构化数据存储在网络上而不是表中。图形数据库除了能像普通的数据库一样存储一行一行的数据之外,还可以很方便的存储数据之间的关系信息,我们常用的数据库例如,mysql,sqlserver,这些都是常用的关系数据库。官网下载链接:/java/technologies/javase-downloads.html下载好之后直接安装到合适的路径右键单击此电脑—点击属性—点击高级系统设置—点击环境变量在下方的系统变量区域,新建环境变量,命名为JAVA_HOME,变量值设置为刚才JAVA的安装路径,D:\software\Java\java-15。编辑系统变量区的Path,点击新建,然后输入%JAVA_HOME%\bin打开命令提示符CMD(WIN+R,输入cmd),输入java-version,若提示Java的版本信息,则证明环境变量配置成功。官方下载链接:/download-center/#community下载好之后,直接解压到合适的路径就可以了,无需安装。在系统变量区域,新建环境变量,命名为NEO4J_HOME,变量值设置为刚才neo4j的安装路径编辑系统变量区的Path,点击新建,然后输入%NEO4J_HOME%\bin,最后,点击确定进行保存说明JDK版本不合适说明neo4j下载成功,可以登录该网页初始账户密码都是neo4j在指令框($符号后)输入指令:serverchange-password,即可修改密码。

数据库连接先从py2neo包中导入所需要用到的模块。Graph就是帮助我们连接数据库。数据库连接的标准语法是graph=Graph(url='',username='',password='')但在pycharm中这种方式可能会连接不上,有两种解决方法。一是不加username参数,二是使用图中第三行的代码返回的链接graph,可以帮助我们删除或创建图谱

节点建立Node建立节点,存放标签和属性值create()完成图的建立标准语法为:node=Node(label=,property='')graph.create(node)可以使用graph.delete(node)对指定节点进行删除以及graph.delete_all()删除所有节点

关系建立

Relationship帮助我们完成关系的建立标准语法为:relationship=Relationship(起始节点,'关系',结束节点)graph.create(relationship)属性值更新

我们可以像字典那样通过属性名访问节点或关系的属性值。最后通过push函数来更新。这里我们将节点a的名称从alice改为了bob,并新增了一个age属性,属性值为10

节点查询NodeMatcher节点匹配器可以通过标签名和属性值查询所需的节点标准语法为:matcher=NodeMatcher(graph)Node=matcher.match('label','其他属性')也可以在尾部加上first(),表示返回所匹配到的节点中的第一个节点不过注意的是不加first()返回的是一个NodeMatch对象,加了之后返回的是一个Node对象此外,可以添加where子句来通过属性值进行查询,效果和matcher.match(‘person’,name=‘bob’)一样,不加first()返回的是NodeMatch对象不过需要注意的where子句中的属性值条件需要这样的格式:_.属性名=属性值

关系查询RelationshipMatch可以帮助我们查询关系,输入一个节点,和一个关系名,可以返回与此节点有此关系的所有关系链标准语法为:matcher=RelationshipMatcher(graph)result=matcher.match({node},'relationship')RelationshipMatcher返回的是一个关系对象RelationshipMatch,这个关系对象包含头结点,关系,尾节点而walk()函数的作用就是根据关系对象分离出头结点,关系,尾节点可以看到下图的结果中就是节点关系节点的顺序输出

批量建立节点或关系Subgraph可以批量建立关系和节点,将节点或关系放在列表中作为参数输入标准语法为:A=Subgraph(nodes=[node1,node2,node3])B=Subgraph(relationships=[relation1,relation2])graph.create(A)graph.create(B)可以看到Subgraph使我们的操作简便,可以传入关系列表或节点列表,统一建立减少了create()语句的使用次数

实践分析我们现在想将上一讲的基本操作封装起来,只需要输入节点的标签和属性,以及节点之间关系便可以自动创建图谱,内部实现细节对用户透明化同时为了增加程序的健壮性,我们希望对通过查询节点的方式判断节点是否存在,并以此来判断是否该创建此关系1.导入py2neo包及所需模块2.这里使用where子句进行查询,那么就需要格式化的条件(_.atrrs=value)3.再判断是否存在,以防重复创建节点,导致图谱混乱根据上一讲内容,思考一下,如果不使用first(),则返回的是什么对象?如果使用的是matcher.match(label,”property”)这句语句如何让它返回Node对象?如果匹配节点的方法未使用first()返回一个NodeMatch对象,则建立关系时就会报错第46行代码,便是上一讲所提到连接数据库时的注意事项,不加username参数。学到一招:可以使用字典的形式作为Node的节点的属性Node(label,{“属性1”:a,})

案例一将保存在csv文件中的工商管理信息先存入MySQL数据库,然后从数据库中读出数据,建立图谱,使其可视化导入pymysql包,实现对MySQL数据库的操作然后就是连接MySQL数据库,并创建游标用来存取数据第11,12行代码就是一行一行读取CSV文件内容。我们看一下结果,列表第0个元素是高管信息(姓名,性别,生日,学历,职务),之后就是一条条的高管记录之后,我们需要先创建一张数据表,创建前判断该表是否已存在,这就是第18行代码所做的事第21行代码表示id从1自增,第28行表示该数据表默认使用utf-8字符集。打印先前的data变量时,可以看到每条记录以换行符结束,所以需要整理以下数据,方便读入数据库

案例二

读取存在Excel表中的关于阿里巴巴公司的工商信息,并生成知识图谱可以观察一下内容的分部格式:左边都是工商信息名称,右边是工商信息init()方法用来初始化Excel表格的基础信息第15行代码:一个Excel表中可能由多个工作表sheet组成,所以需要确定sheet的名称,才能找到我们想要的数据第17行代码,我们获取第一行数据内容,目的是为了建立一个以名称为阿里巴巴的节点作为核心节点,形成由中心一点向四周散发的形状readExcel()方法帮助我们读取表中的内容使用双重循环,访问表中每一个单元格先建立以阿里巴巴为名称的核心节点在读取datas变量数据时,需要注意它是一个工商信息名称,一个工商信息内容这样交错排列的,所以为了各自分离,是以步长为2遍历的工商信息名称做为关系存放到关系列表中,工商信息内容作为属性值存放到节点属性列表中,最后循环创建节点和关系这里因为我们的Excel表中只有一个工作表sheet,所以就是循环读取sheet的名称后便能找到唯一的工作表,这就是75-82行代码所做的事

案例三读取存在Excel表中的内容生成知识图谱。但需要注意其中主语和宾语,会有重复,若不进行去重工作,那么重复创建节点,造成图谱混乱init()对Excel表的基础信息进行初始化,和上一个案例的初始化工作一样。双重循环访问每一个单元格的数据和数据类型,整数和日期类型做不同的处理整体步骤同样和上一个案例一样。但不同的是多了一个字典。是因为需要将主语,谓语,宾语分开存放,如第42行代码datas列表打印出来的结果,如图所示,就是一个一个的字典,每个字典本质上是表中的一行数据此方法就是将datas中的数据,按主语,谓语,宾语分别存放,但需要主要的是,此时每个列表中的元素,都是有重复的,接下来的工作就是给主语和宾语去重这是个典型的去重思路用一个新的列表来放不重复的元素。先判断先前旧列表中的元素在不在新列表中,不在则放入,达到去重效果最后,以不重复的元素创建节点我们已经将不重复的主语节点和宾语节点创建了图,所以不用担心图谱会有重复混乱的节点现象。接下来就是要建立节点间关系。1.1中小企业所遇问题主语2主语3主语4主语列表关于谓语2谓语3谓语41.1.1生产成本上涨宾语2宾语3宾语4谓语列表宾语列表Node(name=1.1中小企业所遇问题)Node(name=1.1.1生产成本上涨)宾语n的节点主语n的节点selected_node主语,谓语,宾语节点列表中每个元素都一一对应,比如三个列表的第一个元素构成的关系链就是Excel表中的第一行数据。但是,其元素内容还是字符串,需要节点才能构成关系。这里用到了tkinter模块,可以在运行时帮我们打开文件窗口,然后手动选择文件,并返回文件的路径,这就是107-110行代码所做的事,其余和上一个案例的步骤一样公司表:证券代码,公司全称,公司中文简称,注册资本,成立日期,上市日期。

案例四分别读取三张Excel表的内容,并建立知识图谱,并实现一个可供我们查询的“小系统”子公司表:所属母公司证券代码,子公司全称高管表:所属公司证券代码,姓名,性别,年龄,职称,个人简介三张表中共同的字段就是公司证券代码,所以这是连接三张表的关键相信看到这里大家对初始化Excel表格的步骤很熟悉了。和前几个案例一样初始化文件路径,同workbook对象找到Excel中的sheet的名称,用它来操作工作表中的内容,获取行数列数的信息这个方法是用来读取子公司表中的数据,需要注意一下dict.fromkeys()这个函数,以传入的参数作为字典的键,形成一个值是空,但是有键的字典结果就是一个字典中的键是母公司证券代码,值是该母公司所拥有的所有子公司名称,如第40行代码所示该方法用来读取公司高管表中的数据,和上一个方法一样用到fromkeys()函数,一条高管信息记录中可能存在空值,所以需要有判断语句做处理。最终的结果是一个字典,字典的键是公司代码,值是一个二维列表,里面含有该公司中每一位的高管信息

该方法读取公司表中的数据,步骤和上两个方法一样。最终结果是一个字典,字典的键是公司代码,值是一个存放公司各种信息的列表,如106行代码所示。该方法初始化接下来要用到的各种数据。获取dealExcel类中三个读取表中内容返回的三个字典,每个字典并拆分成键和值两个列表。创建公司节点,标签为总公司,属性值:name公司名称,self_code公司证券代码,brief_name公司简称,primitiv_capital注册资本,open_time成立日期,market上市日期创建公司高管节点,标签为公司高管,属性:com_code所属公司的证券代码,name姓名,sex性别,age年龄,duty职务,intro个人简介创建子公司节点,标签为子公司,属性:name子公司名称,mother_code所属母公司证券代码此方法前三行代码用于创建公司,子公司,公司高管节点。接下来就是通过判断公司节点的证券代码属性和公司高管的所属公司的证券代码以及子公司的所属母公司证券代码属性进行比较,相同就建立联系generate()方法创建图谱inquiry()方法查询公司节点inquiry_sub()查询子公司节点inquiry_subcompany()方法查寻某一公司所有的子公司,返回的是关系对象,所以用walk()函数把关系对象拆分成头结点,关系,尾节点方便于格式化打印输出。inquiry_man()方法查询公司高管节点,根据返回节点个数判断高管是否有重名。该方法查询某一公司的所有高管,返回关系对象,使用walk()函数拆分关系对象,以便我们格式化输出由于前三张表数据太多,我们以相同的字段仿造几条数据进行测试

案例五审计知识图谱构建大致步骤是数据获取,数据处理,数据导入并构建知识图谱。知识图谱中的数据通常是以三元组的形式来表示实体,关系,属性之间的联系,这样便方便审计员快速抓住关键信息,提高审计效率。因此,在获取数据之后,要抽取实体,筛选出三元组,还要进行语义消歧等工作,这是最重要的流程。本案例主要简单的展示一下上述的过程。

这里就是一个简易的使用requests访问网址的操作,注意返回的数据是json格式,需要转换到Python中的数据类型需要注意的是,当创建关系时,直接输入一个还未创建的Node对象,若发现此节点不存在,那么Relationship会帮我们自动创建这个节点第十二章审计应用:审计规则知识库利用一阶谓词逻辑法表示知识利用一阶谓词逻辑法表示知识1概述和特点2谓词、个体和量词3联结词4谓词公式及示例1概述和特点概述和特点命题谓词刻画个体词的性质个体可以独立存在的事或物原子命题

不包含其他命题作为其组成部分的命题,即在结构上不能再分解出其他命题的命题。又称简单命题。原子命题不能带有非,或,且,如果,那么等联结词。概述和特点自然性确定性易用性可编程性接近于自然语言的形式语言,易于被人理解和接受。适用于精确性知识的表示,不适用于不确定性知识的表示。“非真即假,非假即真”较容易地转换为计算机的内部形式,易于模块化,便于对知识的添加、删除和修改。用谓词逻辑对问题进行表示以后,求解问题就是要以此表示为基础进行相应的推理,便于在计算机上编程实现。2谓词、个体和量词谓词和个体

一般来说,定义谓词的字母或字符串需要与其本身的谓词语义相近,以便于读取和识别。命题的一般形式

量词

量词用于刻画谓词与个体之间的关系

示例

3联结词联结词

用于联结两个谓词公式,组成一个复杂的复合命题的工具。联结词4谓词公式谓词公式定义及规则用谓词联结符号将一些谓词联结起来所形成的公式。也称合式公式。谓词公式

谓词公式有下述演算规则,得到的演算后的公式也称合式公式谓词公式表示知识的步骤(1)定义谓词及个体,确定每个谓词及个体的确切含义。(2)根据所要表达的事物或概念,为每个谓词中的变元赋以特定的值。(3)根据所要表达的知识的语义,用适当的联结符号将各个谓词联结起来。示例1、小明为y公司首席财务官(CFO),他辞职了,则该公司有财务造假嫌疑。2、小红为y公司审计委员会(auditcommittee)成员,她辞职了,则该公司可能进行了财务舞弊。

示例1、小明为y公司首席财务官(CFO),他辞职了,则该公司有财务造假嫌疑。2、小红为y公司审计委员会(auditcommittee)成员,她辞职了,则该公司可能进行了财务舞弊。

示例1、小明为y公司首席财务官(CFO),他辞职了,则该公司有财务造假嫌疑。2、小红为y公司审计委员会(auditcommittee)成员,她辞职了,则该公司可能进行了财务舞弊。

审计规则知识库的设计审计规则知识库的设计1知识库概述2知识库设计1知识库概述知识库概述

知识库的概念来自两个不同的领域,一个是人工智能及其知识工程领域,另一个是传统的数据库领域。知识库是由人工智能和数据库两项计算机相关领域的有机结合。知识库是基于知识且具有智能性的系统(或专家系统)。并不是所有具有智能的程序都拥有知识库,只有基于知识的系统才拥有知识库。

在本节中的知识库是基于审计规则的知识系统。点击添加章节标题为什么需要知识库呢?知识库的功能是什么?·知识库可以使信息有序化。知识库将杂乱无章的知识进行有序化,方便信息和知识的检索,提高知识利用效率。·知识库是可更新和共享的。在知识更新迭代的时候,可以在知识库种存入新知识、摈弃旧知识,实现动态更新,使整个知识体系更加完善。2知识库设计审计规则表概述

此表用于存放完整的审计规则数据。此表分为如下字段:(1)ID此字段为序号字段,设为主键,便于读取数据和应用数据。(2)审计规则此字段存放完整的审计规则。(3)谓词逻辑此字段可存放审计规则的谓词逻辑表达式。新设计规则表概述

此表用于存放审计规则的多种条件和结论。此表分为如下字段:(1)ID此字段为序号字段,设为主键,便于读取数据和应用数据。(2)条件1、2、3、4这是分开的4种字段。这些字段为一条审计规则的多种条件。如果审计规则的条件只有一种则将其存放在条件1,条件2、3、4为空;若有两种条件则将其分别存放在条件1、2,条件3、4为空。以此类推,直至条件被分配完成。(3)结论此字段存放审计规则对应的结论。(4)备注此字段存放相关备注。可对审计规则进行注释,便于阅读。(5)谓词逻辑此字段存放审计规则多种条件合并之后的谓词逻辑表达式。便于数据的清洗、合并。谓词逻辑表概述

此表用于存放最终的审计规则的谓词逻辑表达式。此表分为如下字段:(1)结论此字段用于存放审计规则的结论,设为主键,结论互不相同。(2)谓词逻辑此字段存放最终的审计规则谓词逻辑表达式。审计规则知识库程序示例审计规则知识库程序示例1整体流程2准备工作3程序示例4结果展示1整体流程整体流程规则合并流程图规则生成流程图2准备工作制定谓词逻辑表达式(1)首席财务官辞职:若公司首席财务官(CFO)辞职,则该公司有财务造假嫌疑。(2)审计委员会成员辞职:若公司审计委员会(auditcommittee)成员辞职,则该公

司可能进行了财务舞弊。(3)首席财务官换位:若公司首席财务官(CFO)换位,则该公司有财务造假嫌疑。

制定谓词逻辑表达式

数据库设计(1)设计一张名为“审计规则”的表。“ID”为主键。“审计规则”字段中放入相应的审计规则。“谓词逻辑”字段存放其谓词逻辑表达式。数据库设计(2)设计一张名为“新审计规则”的数据表,其中“ID”字段为主键,“条件1”、“条件2”、“条件3”、“条件4”字段存放一条审计规则的不同条件,“结论”字段存放一条审计规则的结论,“备注”字段存放备注,“谓词逻辑”字段存放该条审计规则的条件谓词逻辑表达式。数据库设计(3)设计一张名为“谓词逻辑”的表。“结论”字段存放规则的结论。“谓词逻辑”字段存放合并后的用谓词逻辑表示的知识。3程序示例连接数据库

选用pymysql库进行python与MySQL数据库的连接。调用pymysql.connect函数与数据库进行连接,注意connect函数有四个重要参数,user(用户名)、passwords(数据库密码)、host(数据库地址)、name(数据库名称)。这里定义了一个connectMysql函数封装了python与数据库连接的操作,需要传入host、user、passwords、name四个参数,使用try、except捕获异常,若无异常返回整个数据库,若有异常则返回失败原因。#连接数据库defconnectMysql(host,user,passwords,name):

globaldatabase

try:

database=pymysql.connect(user=user,password=passwords,host=host,database=name)

print("数据库连接成功!")

returndatabase

exceptpymysql.Errorase:

print("数据库连接失败:"+str(e))更新替换数据表

将“审计规则”表中的规则,按规则的特性分为一个或多个条件与一个结论。首先读取“审计规则”表中的“审计规则”字段。接着,按照“,”或“。”或“则”分为条件与结论。再将分完的结果按照相应的字段名更新到“新审计规则表中”。这里定义了一个update_new_table函数封装此过程,需传入database数据库数据,使用try、except捕获异常操作。#更新数据表defupdate_new_table(database):

globalresult

#读取原始数据表

try:

cursor=database.cursor()

mysqlQuery='SELECT审计规则FROM审计规则;'

cursor.execute(mysqlQuery)

result=cursor.fetchall()

result=np.array(result)

exceptpymysql.Errorase:

print("数据库查询失败:"+str(e))

#存储数据

res,condition,conclusion=[],[],[]

#按”,“分条件和结论

foriinrange(len(result)):

res.append(re.split(r'[,,。则]',result[i][0]))

#储存条件和结果

foriinrange(len(res)):

conclusion.append(res[i][-2])

condition.append(res[i][0:len(res[i])-2])

#插入新数据

try:

cursor=database.cursor()

#mysqlQuery='UPDATE审计规则newSET结论=%sWHEREID=%s;'

mysqlQuery='REPLACEINTO新审计规则(ID,条件1,条件2,条件3,条件4,结论)VALUES(%s,%s,%s,%s,%s,%s);'

foriinrange(len(conclusion)):

iflen(condition[i])==4:

Value=(i,condition[i][0],condition[i][1],condition[i][2],condition[i][3],conclusion[i])

cursor.execute(mysqlQuery,Value)

elif

len(condition[i])==3:

Value=(i,condition[i][0],condition[i][1],condition[i][2],"",conclusion[i])

cursor.execute(mysqlQuery,Value)

elif

len(condition[i])==2:

Value=(i,condition[i][0],condition[i][1],"","",conclusion[i])

cursor.execute(mysqlQuery,Value)

elif

len(condition[i])==1:

Value=(i,condition[i][0],"","","",conclusio

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论