赞
踩
目前粗糙的多行文本已经构建好,现在要做的事情是如何将这些非结构的文本,转换成命名体识别模型可以读取的结构化标签文本。为此非结构化文本形式是图一所示(这是之前两步的所得结果),目标数据集为图二所示。那么在这一步怎么整合成数据集将成为关键。
图一:非结构化文本
图二:目标结构化数据
首先我我会将每一篇文章所得出的Txt(图一)放到一个文件夹中统一操作,标签分为三类B,I,O。B代表所需关键词开始,I所需关键词中间,O代表非关键词,而且默认为只能B开头加上I结尾,或者单个就一个B无I,但不能出现O后面出现I这种现象。为此,只要知道了这样规定的规定,按照一定的格式,写入表格就好。这里我是写入XLS当全部完成时转成CSV,另一个原因是XLS包,用法比CSV多,我更熟悉一点。为此这里将每一篇图一内容,全部转换后对应的图二内容。这里我也是偷懒用来standfordcorenlp的包来写词性,那这里又有一个疑问,为什么整体步骤第二步用的是NLTK新闻的包来写词性,为什么这就换了呢,其实只是很简单的原因,想做的复杂一点,也可以用NLTK来代替,我当时想着也是,如果都是一个标准,都错就是没错,那就是没错的,为此我才心安理得用了standfordcorenlp,代码如下:
import re import xlwt from stanfordcorenlp import StanfordCoreNLP import os osfile = [] dir = r"F:\pythonbert\demo\untitled1\extract\extracttxt" for root, dirs, files in os.walk(dir): for file in files: if file != 'extract.py' and file != '__init__.py' and file !='split.py' and file !='Label.py' and file !='CSV.py': osfile.append(file) for index in range(len(osfile)): nlp = StanfordCoreNLP('E:\stanford\stanford-corenlp-latest\stanford-corenlp-full-2021-01-09', lang='en') sentence = [] key = [] substance = [] time = [] location =[] Dict = [] k = 0 num = 0 # 分字典存储 with open(osfile[index], "r", encoding="utf-8") as f: lines = f.readlines() # 去除换行符 result = ([x.strip
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。