引言:

在文献挖掘的过程中,由于文献中的语句信息量稀疏会导致自然语言处理(NLP)任务效果不好。在数据量小的情况下,不妨换一个思路,将抽取对象从信息量稀疏的文本改成信息量密集的教材,积累第一批可用的定义用于后续文本的抽取。基于此,本文将以中国石油大学的《沉积岩石学》讲义为范本,实现对教材中沉积结构和沉积相的抽取。
教材的特点:文本风格高度一致,很多概念都是在标题中,或者是一个特定的格式,它永远不会像*人的嘴那么会骗人。(无针对,无引站,只是感想)
这份教程的特点: 概念非常的鲜明,此外结构非常的好。大小标题都是概念,此外概念里面的子概念也非常的规整。
为此要做就要做大的,打算自己将全沉积学教材内的本体抽取,构建出一个完整的沉积相知识体系与知识图谱,用于结合目前工作做到完善的知识推理。
如图所示:


问题描述

当我们有了结构化清晰的文档库之后,如何将里面内容抽取出来并进一步做到结构化存储,最后做到应用化分析。这里我们第一步做抽取,并将内容画入到ER图中,


解决方案:

首先定义正则模块将文本中一些特殊的符合换成一串英文字符,以便正则的抽取,后续只要将这串英文符号再次替换成特殊符号就行reforsinglegainian.py

# -*- coding: utf-8 -*-
import csv
import re
str1=' 同相位爬生波痕纹理(Climbing ripple laminations in-phase):后一波痕直接 盖在前一波痕之上,前后波痕在水平方向上的位移很小,向流面和背流面纹层的厚度近于相等。   迁移型爬生波痕纹理(Climbing ripple laminations in-drift):后一波痕盖在前一波痕之上,但前后波痕在水平方向上有明显的位移,向流面和背流面纹层的厚度不相等。向流面和背流面纹层都发育,称为Ⅰ型;仅背流面纹层保留下来,向流面纹层没有保存下来,称为Ⅱ型。      c) 水平层理(Horizontal Bedding):由相互平行且近于水平的泥质纹层构成 ,纹层厚 1~2mm   d) 平行层理(Parallel Bedding):由相互平行且近于水平的沙质纹层构成 ,纹层厚 1~2mm'
str2='正砾岩(Orthoconglomerate):沙质基质<15%,砾石支撑,牵引流的滚动搬运或浊流搬运,国内一般将这种砾岩简称为砾岩,下面主要讨论这种砾岩。 副砾岩(Paraconglomerate):基质>15%,多为泥质,基质支撑,砾石漂浮在基质中,因此,这种砾岩也称为砾质泥岩或含砾泥岩(Pebbly mudstone, Conglomeratic mudstone)。这种砾岩多呈块体搬运,如冰川、泥石流等。 '
def regurlar(str1,ktext,ctext,jtext):print(str1)str1=str1.replace('-','hzc')findch = re.compile('(.[\u4E00-\u9FA5]+\s*[(|(]+\s*[\u9FA5_a-zA-Z ]+)')#findch = re.compile('(.[\u4E00-\u9FA5]+([\u9FA5_a-zA-Z]+)')cas_part_names = re.findall(findch,str1)with open('1.csv','a+',newline='',encoding='gbk') as f:w=csv.writer(f)for i in cas_part_names:print('概念',i.replace("hzc",'-'))i=i.replace("⇒", '')i=i.replace("hzc", '-')alist=i.split("(")try:w.writerow([ktext, ctext, jtext,alist[0],alist[1]])except IndexError:w.writerow([ktext, ctext, jtext, alist[0]])f.close()
if __name__ == '__main__':regurlar(str2)

对文本整体进行初步处理后,下一步便是将部分,章,节,按照特定正则筛选出来。judge2.py

import re
def judgesection(strtest):findch = re.compile('第([\u4E00-\u9FA5])部分')cas_part_names = re.findall(findch, strtest)if len(cas_part_names)!=0:return Truereturn False
def judgechpter(strtest):findch = re.compile('第([\u4E00-\u9FA5])章')cas_part_names = re.findall(findch, strtest)#print(i)if len(cas_part_names)!=0:return Truereturn False
def judgejie(strtest):findch = re.compile('第([\u4E00-\u9FA5])节')cas_part_names = re.findall(findch, strtest)if len(cas_part_names)!=0:return Truereturn Falseif __name__ == '__main__':str1='第一部分: 分析原理'judgesection(str1)

最后,老样子里面的docxtest.docx依旧是那份沉积岩石学,转docx所得到,我也会提供原版和docx版本,抽取 的结果用1.csv存储。最后如图所示。

import docx
from docx import Document
from  reforsinglegainian import  regurlar
from  judge2 import judgesection,judgechpter,judgejie
def run():doc = Document('docxtest.docx')sections = doc.paragraphsprint(len(sections))k=0c=0j=0ktext=''ctext=''jtext=''for i in sections:if judgesection(i.text)==True:k=k+1c=0ktext=i.textfor cc in ['一','二','三','四','五','六','七','八','第','部分',":"," "]:ktext= ktext.replace(cc, "")else:if judgechpter(i.text) == True:c = c+1j = 0print(i.text)jtext=i.textfor cc in ['一', '二', '三', '四', '五', '六', '七', '八', '第', '章', ":", " ","    "]:jtext = jtext.replace(cc, "")else:if judgejie(i.text) == True:j = j + 1ctext=i.textfor cc in ['一', '二', '三', '四', '五', '六', '七', '八', '第', '节', ":", " ", "    "]:ctext = ctext.replace(cc, "")else:strtext=i.text.split("。")for ccc in strtext:strtextlist = ccc.split(",")for jj in strtextlist:regurlar(jj,ktext,ctext,jtext)return
if __name__ == '__main__':run()



github地址:https://github.com/zhichen-roger/Construction-of-Sedimentary-facies-knowledge-system.git

基于沉积学教材的自顶向下的概念抽取(以沉积相为例为例)相关推荐

  1. 毕业设计之 - 基于深度学的图像修复 图像补全

    1 前言 Hi,大家好,这里是丹成学长,今天向大家介绍 基于深度学的图像修复 图像补全 大家可用于 毕业设计 2 什么是图像内容填充修复 内容识别填充(译注: Content-aware fill , ...

  2. 基于计量学角度对传感器的灵敏度的理解和举例

    基于计量学角度对传感器的灵敏度的理解和举例 灵敏度指标是考察传感器特性的主要指标之一,是对传感器设计.生产和选型过程中非常重要的参数.本文将基于计量学知识对灵敏度进行举例介绍. 一.灵敏度定义 灵敏度 ...

  3. 一点一点学ASP.NET之基础概念——委托

    委托的概念 委托实际上是类(一个貌似函数一样的类),我们已经使用函数指针很多年了--函数指针也被称为过程类型,但是它们的实现都不是类.它们是单独的函数指针的简单实例.委托是包含这些功能的类,委托类通过 ...

  4. 一点一点学ASP.NET之基础概念——HttpModule

    原文地址为: 一点一点学ASP.NET之基础概念--HttpModule HttpModule -- 一点一点学ASP.NET 文野: 2006 年 8 月 9 日 星期三 上一篇:一点一点学ASP. ...

  5. 一起学AI:核心基础概念

    一起学AI:核心基础概念 AI基础概念 什么是学习率? batchsize和epoch分别是什么? 梯度消失与梯度爆炸是什么? 什么是过拟合.欠拟合和泛化? 归一化.正则化.标准化是什么? 线性回归和 ...

  6. 基于监督学习和远程监督的神经关系抽取

    基于监督学习和远程监督的神经关系抽取 作者:王嘉宁  QQ:851019059  Email:lygwjn@126.com 最新:博主发表在华东师范大学学报(自然科学版)的<基于远程监督的关系抽 ...

  7. 直播预告 | 长文本知识抽取:基于语义分割的文档级三元组关系抽取

    「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...

  8. [论文阅读] (26) 基于Excel可视化分析的论文实验图表绘制总结——以电影市场为例

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

  9. 基于依存句法分析的开放式中文实体关系抽取

    参考: HanLP自然语言处理 基于依存分析的开放式中文实体关系抽取方法 命名实体三元组抽取参考自fact_triple_extraction 这一段时间一直在做知识图谱,卡在实体关系抽取这里几个月了 ...

最新文章

  1. 死锁产生原因-竞争不可剥夺资源
  2. zabbix-proxy分布式监控配置
  3. 手绘图解 | 机器学习最常见的30个基本概念
  4. linux 正则查找email_Linux 正则表达式详解
  5. XCode环境变量及路径设置
  6. Codeforces Round #587 C. White Sheet(思维+计算几何)
  7. Lock“锁定”语句(C# 参考)
  8. JDK / JRE zip
  9. dell增强保护套装还原失效_汕头长安欧尚汽车音响改装升级,还原真实音色
  10. leetcode 700. 二叉搜索树中的搜索 思考分析
  11. 提高设计档次的8个方法
  12. 【数据结构上机练习】考试题目 3
  13. PHP下ereg实现匹配ip的正则
  14. 申请CSDN博客专家的成功历程
  15. 手写字体生成器,这种软件居然被大佬做出来了!
  16. 硬件开发笔记(二):硬件开发基本流程,制作一个USB转RS232的模块(一):开发基本过程和元器件选型
  17. LQR控制基本原理(包括Riccati方程具体推导过程)
  18. java中.rtf文件变成文本文件
  19. 51/stm32单片机软件调试方法与技巧
  20. 计算机与音乐整合的教学设计,信息技术与学科教学整合音乐课教学设计  2010年10月  田赞禄...

热门文章

  1. ubuntu20.04 更新后蓝牙机械键盘不可用
  2. 计算机放音乐声音小在吗调,笔记本外放声音太小怎么办?-电脑教程
  3. 怎样修复小米服务器,小米手机删除的视频想要恢复?那你一定不能错过这些实用技巧...
  4. 为什么用vue,它解决了什么问题,如何使用它?
  5. 人类刚给火星送去Linux系统,以及一款安卓手机芯片
  6. Myeclipse中@auther
  7. 美团/饿了么外卖CPS联盟返利公众号小程序核心源码
  8. oracle ora-3136,[转]ORA-3136(WARNING Inbound Connection Timed Out)分析
  9. web结课作业的源码——HTML+CSS+JavaScript仿oppo官网手机商城(1页)
  10. MPEG4基础知识简介以及 判断MPEG4的I, P, B帧