大采集处理技术 3_第1页
大采集处理技术 3_第2页
大采集处理技术 3_第3页
大采集处理技术 3_第4页
大采集处理技术 3_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

大数据采集及预处理技术*

*图书信息数据标注序号软件配置要求1Doccano/2LabelStudio/一、项目目标:1、完成文本标注工具的下载安装,掌握其使用方法。2、完成图书信息数据命名实体标注、语法标注、词性标注,熟悉其标注后的数据格式。3、掌握Doccano和LabelStudio的使用方法,并完成数据标注。二、环境要求:任务一图书信息数据标注一、任务目标1、了解常见的文本标注工具和标注理论;2、掌握常见的文本标注工具使用如Doccano、LabelStudio;二、操作任务1、使用Doccano完成文本的标注。2、导出标注的数据,并查看其基本格式。1、文本标注文本标注是指对文本进行标记或注释,以提供解释或指示。标注可以帮助计算机理解人类语言,并用于各种自然语言处理应用,如机器翻译、语音识别、文本摘要、文本分类等。常见的标注类型有以下14种:(1)文本分类标注TextClassificationAnnotation是将文本数据分配到预定义的类别中,这是最基础的标注类型,适用于情感分析、主题分类、垃圾邮件检测等任务。如将新闻文章分类为“体育”、“政治”或“科技”,将电影评论标注为“正面”或“负面”。(2)命名实体识别NamedEntityRecognition,是指从文本中标注特定类型的实体,如人名、地名、组织名、日期等。常用于信息提取、问答系统等任务。例如在句子“张三喜欢笛卡尔的著名著作《哲学原理》”中,标注“张三”和“笛卡尔”为人名,“哲学原理”为书名。(3)词性标注Part-of-SpeechTagging是对文本中的每个词进行词性分类,如名词、动词、形容词等。常用于语法分析、机器翻译等任务。例如在句子“张三喜欢著名的著作《哲学原理》”中,标注“著名”为形容词,“喜欢”为动词。(4)句法依存分析SyntacticParsing/DependencyParsing是标注句子中词与词之间的语法关系。常用于更复杂的自然语言理解任务,如句子生成和语法纠正。例如标注“主语-谓语”关系,例如在“张三喜欢笛卡尔的著名著作《哲学原理》”中,张三是喜欢的主语,著作《哲学原理》是喜欢的宾语。(5)关系抽取RelationExtraction是指从文本中识别出两个实体之间的特定关系,并进行标注。常用于知识图谱构建和信息提取。例如在句子“笛卡尔发表了著作《哲学原理》”中,标注“笛卡尔”和“《哲学原理》”之间的“创始人”关系。(6)情感标注SentimentAnnotation是指对文本中的情感倾向进行标注,包括正面、负面、中性等类别。常用于情感分析、客户反馈分析等场景。例如在句子“张三喜欢笛卡尔的著名著作《哲学原理》”中标注情感为“正面”,在句子“张三不喜欢其它哲学著作”中,标注情感为“负面”。(7)事件标注EventAnnotation是指从文本中识别出事件及其参数(如时间、地点、参与者等),并进行标注。常用于自动化新闻提取和时间线构建。例如在句子“笛卡尔1644年发表了《哲学原理》”中,标注“发表了《哲学原理》”为事件,“1644年”为时间。(8)核心指代消解CoreferenceResolution标注是标注文本中指代同一实体的不同词语。例如,将代词和其所指代的实体进行标注和对齐。例如在句子“笛卡尔1644年发表了《哲学原理》,他还发表了其它著作”中,标注“他”和“笛卡尔”指代同一人。(9)情景语义角色标注SemanticRoleLabeling是为句子中的谓词及其相关的角色(如施事、受事、工具等)进行标注。常用于语义理解和事件提取。例如在句子“张三用英语翻译了一部著作”中,张三是施事,一部著作是受事,英语是工具。(10)序列标注SequenceLabeling是指对文本中的每个词或字符进行标注。这种标注可以用于分词、命名实体识别、词性标注等。在中文句子“张三喜欢著作《哲学原理》”中进行分词标注,标注为“张三/喜欢/著作/《哲学原理》”。(11)情绪和意见标注

这类标注专注于识别和标注文本中的情绪和意见表达,如焦虑、愤怒、喜悦等。这在情绪分析和用户体验分析中应用广泛。例如在句子“张三非常喜欢著作《哲学原理》”中标注情绪为“喜欢”。(12)主观性标注SubjectivityAnnotation是指对文本中的客观和主观表达进行标注,可以帮助区分事实陈述与意见表达。例如在句子“哲学是最有价值的学科”中标注为“主观”,在句子“开水的温度是100°C”中标注为“客观”。(13)多模态标注

这种标注类型结合文本与其他类型的数据(如图像、视频等)进行联合标注,通常用于多模态信息提取或多模态学习任务中。例如给一篇新闻文章配上相关的图像,并标注图像与文本内容的关联。(14)对话标注DialogueAnnotation是针对对话系统或聊天数据的标注,涉及对话角色、语义意图、对话行为等的标注。例如在对话中标注用户的意图,如“询问天气”或“预定酒店”。3、

doccano文本标注1)简介:doccano是docummentanotation的缩写,是一个开源的文本标注工具,可以用它为NLP任务的语料库进行打标。它支持情感分析,命名实体识别,文本摘要等任务。2)安装:pipinstalldoccano然后,在终端里输入#初始化数据库doccanoinit#创建一个superuser。doccanocreateuser--usernameadmin--passwordSziit123即可完成初始化,并创建一个doccano的超级用户。3)启动doccano首先,在终端中运行下面的代码来启动WebServer#启动webserverdoccanowebserver--port8000然后,打开另一个终端,运行下面的代码启动任务队列:#启动任务队列doccanotask此时就完成了doccano的启动。4)打开doccano打开浏览器(最好是Chrome),在地址栏中输入http://localhost:8000/并回车。此时会看到成功的界面:5)开始快速点击中间的蓝色按钮“快速开始”。会跳转到登陆的界面。这里需要用之前创建的超级用户登陆。5)创建项目登陆后到“项目”的界面,可以点击左上角的“创建”按钮来创建新的项目;点击“删除”按钮来删除已经创建的项目。点击左上角的“创建”按钮,创建一个新的项目。6)项目信息如图所示,doccano总共支持三种NLP任务的文本标注,分别是文本分类、序列标注和序列到序列(本处选择序列标注)。7)项目信息在填写完要求的信息后,点击“创建”,就创建了一个新的NLP标注项目。在创建完成后,会自动跳转到项目的主页。主要设置信息如下:8)添加语料库在“数据集”页面,可以将准备好的文本添加到项目中,为将来的打标做准备。首先点击左上角的“操作”→“导入数据集”,如下图所示:9)上传数据选择文件格式,调整编码格式,将要文件拖动到指定位置,上传成功后,点击“导入”,如下图所示:10)添加标签点击左侧的“标签”按钮,打开添加标签的界面。继续点击“操作”按钮,并在下拉菜单中点击“创建标签”按钮。如右图:输入标签名等信息,点击保存或者保存增加另一个,如下图:请添加四个标签“人名”、“称谓”、“动作”、“高兴”。10)添加标签添加标签后可以点击标签查看。11)添加成员输入后台管理地址:8000/admin/,找到用户添加位置,点击“add”。输入用户名密码,点击“save”保存。在创建完新的用户以后,在所跳转到的页面,输入一些用户的其他信息并保存。11)添加成员回到前端,点击“成员”,选择“增加”。弹出“添加成员”页,选择指定用户,角色是“标注员”,然后保存。12)添加标注指南可以事前给标注员和审查员准备一些标注指南,便于项目成员理解我们标注的要求和注意点。例如,在判断文本正负面倾向的文本分类任务中,要具体说明判断正负面的标准,例如满足哪些要求,就可以认为一个本文是正面的。不同人对文本的理解和判断正负面的尺度是不一样的。只有把标准写具体、写明确了,让人不用动脑筋都能做出符合要求的判断,才能得到一个尺度统一的数据集。数据集上的打标尺度统一,是机器学习获得好的效果前提。13)打标用添加的标注员账号登录,直接点击左上角的“开始标注”进行打标。选择文本,然后弹出的标签中选择目标标签,依次标注完成所有文本。14)导出数据打完标签后,选择“数据集”,“操作”,“导出数据集”。然后选择指定格式,导出即可。{"id":38,"text":"百科名片你知道我要什么,是歌手高明骏演唱的一首歌曲,1989年发行,收录于个人专辑《丛林男孩》中","relations":[{"id":20,"from_id":51,"to_id":53,"type":"歌手"},{"id":21,"from_id":51,"to_id":55,"type":"发行时间"},{"id":22,"from_id":51,"to_id":54,"type":"所属专辑"}],"entities":[{"id":51,"start_offset":4,"end_offset":11,"label":"作品名"},{"id":53,"start_offset":15,"end_offset":18,"label":"人物名"},{"id":54,"start_offset":42,"end_offset":46,"label":"作品名"},{"id":55,"start_offset":26,"end_offset":31,"label":"时间"}]}id:样本在数据集中的唯一标识ID。text:原始文本数据。数据中包含的Span标签,每个Span标签包含四个字段:id:Span在数据集中的唯一标识ID。start_offset:Span的起始token在文本中的下标。end_offset:Span的结束token在文本中下标的下一个位置。label:Span类型。数据中包含的Relation标签,每个Relation标签包含四个字段:id:(Span1,Relation,Span2)三元组在数据集中的唯一标识ID,不同样本中的相同三元组对应同一个ID。from_id:Span1对应的标识ID。to_id:Span2对应的标识ID。type:Relation类型。拓展任务当标注完成后,在doccano平台上导出JSONL(relation)形式的文件,并将其重命名为doccano_ext.json后,放入./data目录下。通过doccano.py脚本进行数据形式转换,然后便可以开始进行相应模型训练。doccano_file:从doccano导出的数据标注文件。save_dir:训练数据的保存目录,默认存储在data目录下。splits:划分数据集时训练集、验证集所占的比例。默认为[0.8,0.1,0.1]表示按照8:1:1的比例将数据划分为训练集、验证集和测试集。task_type:选择任务类型,可选有抽取和分类两种类型的任务。options:指定分类任务的类别标签,该参数只对分类类型任务有效。默认为["正向","负向"]。is_shuffle:是否对数据集进行随机打散,默认为True。seed:随机种子,默认为1000。schema_lang:选择schema的语言,可选有ch和en。默认为ch,英文数据集请选择en。谢谢!大数据采集及预处理技术*

*图书信息数据标注序号软件配置要求1Doccano/2LabelStudio/一、项目目标:1、完成文本标注工具的下载安装,掌握其使用方法。2、完成图书信息数据命名实体标注、语法标注、词性标注,熟悉其标注后的数据格式。3、掌握Doccano和LabelStudio的使用方法,并完成数据标注。二、环境要求:任务一图书信息数据标注一、任务目标1、了解常见的文本标注工具和标注理论;2、掌握常见的文本标注工具使用如Doccano、LabelStudio;二、操作任务1、使用LabelStudio完成文本的标注。2、导出标注的数据,并查看其基本格式。1、

LabelStudio标注工具LabelStudio是一个开源的多功能标注工具,广泛应用于各类数据标注任务,如文本、图像、音频、视频等。它提供了灵活且易用的界面,支持多种数据类型的标注,非常适合用于训练机器学习模型的数据集标注。LabelStudio支持多种标注任务,包括但不限于文本分类、命名实体识别(NER)、序列标注、图像标注、音频标注、视频标注。1)安装:pipinstalllabel-studio启动命令:label-studiostart启动完成后访问链接http://localhost:8080即可打开首页,自行创建账号(点击“Signup”)并登录,如下图所示:2)创建项目①项目设置。LabelStudio刚启动时,项目列表是空的,需要创建一个项目用于标注任务,点击“CreateProject”输入项目名称,然后保存即可。②模板设置。点击“LabelingSetup”,选择“NaturalLanguageProcessing”自然语言处理,选择标注模板,比如“NamedEntityRecognition”命名实体识别。2)创建项目删除自带的标签,创建自己需要的标签,在“Labels”出点击标签右侧的“×”可以删除标签,在左侧“Addlabelnames”处可以添加标签,可以添加“人名”、“地名”、“日期”、“书名”。设置好标签后点击save完成项目创建。③数据导入。创建项目后,在项目项目右上方点击“Import”导入要标注的txt数据,跳转到文件选择页面,选择文件上传,然后选择页面右上方“Import”按钮,跳出“TreatCSV/TSVas”选择窗口,选择“Listoftasks”。④数据标注。点击LabelAllTasks按钮开始标注工作,选择标签后,在文本上面的划选,标记完成后,记得点击Submit(也可以按快捷键Ctrl+回车)。然后再进行下一段文字标注,直到所有的文字完成标注。⑤数据导出。标注完数据后,在项目页右上方选择“Export”导出标注好的数据,弹出导出数据类型选择,可以选择需要的格式,然后点击“Export”按钮,数据就完成导出。查看导出的标注数据格式,包括标注序号(annotation_id)、标注人(annotator)、标签(label)等等信息。谢谢!大数据采集及预处理技术*

*项目二图书信息数据采集与预处理序号软件配置要求1Doccano/2LabelStudio/一、项目目标:1、完成文本标注工具的下载安装,掌握其使用方法。2、完成图书信息数据命名实体标注、语法标注、词性标注,熟悉其标注后的数据格式。3、掌握Doccano和LabelStudio的使用方法,并完成数据标注。二、环境要求:任务三图书信息数据标注一、任务目标1、了解常见的文本标注工具和标注理论;2、掌握常见的文本标注工具使用如Doccano、LabelStudio;二、操作任务1、完成图书简介部分的命名实体标注、关系标注、文本分类标注。2、导出标注的数据,并查看其基本格式。1、图书简介文本分类标注假设要将图书简介分类为“小说”、“寓言”、“散文”、“诗歌”、“随笔”、“童话”,那么需要创建这几类标签,并依次导入图书简介数据,也可以把图书简介输入到一个txt文档,以换行隔开。这里以部分图书简介为例,使用LabelStudio工具进行标注。创建项目时选择“textclassification”,按照要求输入标签。进入项目导入数据,对每一段数据进行标注,建议将每本书简介合并为一段,也可以分段,每段具有完整意思表达。对每段选择标签,直到所有数据完成标注。完成数据标注后导出指定格式的标注数据即可。2、图书作者命名实体标注假设要将图书作者简介进行实体标注,要抽取的实体分别是“人名”、“书名”、“地名”、“时间”,那么需要创建这几类标签,并依次导入作者简介数据,这里以部分作者简介为例,使用LabelStudio工具进行标注。创建项目时选择“NamedEntityRecognition”,按照要求输入标签。进入项目导入数据,进行数据标注,每个作者简介合并为一段,如果分段需要每段具有完整意思表达。对每段文本进行实体标注,直到所有数据完成标注。完成数据标注后导出指定格式的标注数据即可。3、图书关系标注假设要将图书作者简介进行关系标注,需要先创建标签“人”、“书”、“时间”、“组织”、“创建”,创建方法和前述案例相似。导入作者简介数据,然后进行数据标注。这里以部分数据标注为例,先标注“人”,也即“亚历AlessandroCeschi(ale)”、再标注“书”,也即“《随笔ale》”,在右下方选择“人”标签,此时“亚历AlessandroCeschi(ale)”会显示在其上方的“info”栏。在上图中点击“+”号左边按钮“Createrelationbetweenregions”按钮,书标移到左侧选择“《随笔ale》”区域,此时会将两个实体通过带箭头的线联系到一起。在左下方选择“Relations”,找到“人”和“书”联系,点击“…”按钮,在弹出的选择栏“Selectlabels”选择“founded”,其它实体关系标注类似。谢谢!大数据采集及预处理技术*

*图书信息标注数据使用-图书分类序号软件配置要求1Pytorch/2sklearn/一、项目目标:1、了解简单自然语言模型构建方法。2、能够使用标注的图书信息数据训练模型。3、熟悉自然语言处理模型的测试方法。二、环境要求:#导入依赖importtorchimporttorch.nnasnnimporttorch.optimasoptimfromtorch.utils.dataimportDataset,DataLoaderfromsklearn.model_selectionimporttrain_test_splitfromsklearn.preprocessingimportLabelEncoderimportnumpyasnpimportpandasaspdfromcollectionsimportCounterclassTextDataset(Dataset):def__init__(self,texts,labels,vocab,max_len):"""

初始化数据集:paramtexts:文本数据列表,paramlabels:标签数据列表,paramvocab:词汇表(字典形式),parammax_len:文本的最大长度(超过部分截断,不足部分填充)

"""self.texts=texts.tolist()self.labels=labels.tolist()self.vocab=vocabself.max_len=max_len1、自定义数据集类def__len__(self):"""返回数据集的大小"""returnlen(self.texts)def__getitem__(self,idx):"""

获取单个样本,paramidx:样本索引return:文本的索引表示和对应的标签

"""text=self.texts[idx]label=self.labels[idx]

#将文本转换为索引序列,未知词用<UNK>表示

text_indices=[self.vocab[word]ifwordinself.vocabelseself.vocab['<UNK>']forwordintext.split()]#截断超过最大长度的部分text_indices=text_indices[:self.max_len]#如果文本长度不足,用<PAD>填充

padding_length=self.max_len-len(text_indices)text_indices+=[self.vocab['<PAD>']]*padding_lengthreturntorch.tensor(text_indices,dtype=torch.long),torch.tensor(label,dtype=torch.long)classTextClassifier(nn.Module):def__init__(self,vocab_size,embed_dim,num_classes,hidden_dim):"""

初始化文本分类模型

:paramvocab_size:词汇表大小,paramembed_dim:词嵌入维度,paramnum_classes:类别数量,paramhidden_dim:LSTM隐藏层维度

"""super(TextClassifier,self).__init__()self.embedding=nn.Embedding(vocab_size,embed_dim) #词嵌入层

self.rnn=nn.LSTM(embed_dim,hidden_dim,batch_first=True) #LSTM层

self.fc=nn.Linear(hidden_dim,num_classes) #全连接层

defforward(self,x):"""

前向传播

:paramx:输入文本的索引表示,return:模型的输出

"""embedded=self.embedding(x) #将索引转换为词向量

output,(hidden,cell)=self.rnn(embedded) #通过LSTM层

out=self.fc(hidden[-1]) #取最后一个隐藏状态并通过全连接层

returnout2、自定义模型#假设标注数据是CSV文件,包含两列:'text'和'label'data=pd.read_csv('custom_dataset.csv')#分割数据集为训练集和验证集train_texts,val_texts,train_labels,val_labels=train_test_split(data['text'].reset_index(drop=True),data['label'].reset_index(drop=True),test_size=0.2,random_state=42)#构建词汇表word_counts=Counter()fortextintrain_texts:word_counts.update(text.split()) #统计每个单词的出现次数vocab={'<PAD>':0,'<UNK>':1} #初始化词汇表,包含填充符和未知词forword,countinword_counts.items():ifcount>=2: #只保留出现次数大于等于2的单词

vocab[word]=len(vocab)label_encoder=LabelEncoder() #编码标签train_labels=label_encoder.fit_transform(train_labels) #将标签转换为数字val_labels=label_encoder.transform(val_labels)#创建数据集和数据加载器max_len=100#文本的最大长度train_dataset=TextDataset(train_texts,train_labels,vocab,max_len)val_dataset=TextDataset(val_texts,val_labels,vocab,max_len)train_loader=DataLoader(train_dataset,batch_size=32,shuffle=True) #训练集数据加载器val_loader=DataLoader(val_dataset,batch_size=32,shuffle=False) #验证集数据加载器3、数据预处理#超参数设置vocab_size=len(vocab) #词汇表大小embed_dim=100 #词嵌入维度hidden_dim=128 #LSTM隐藏层维度num_classes=len(label_encoder.classes_) #类别数量num_epochs=10 #训练轮数learning_rate=0.001 #学习率#初始化模型、损失函数和优化器model=TextClassifier(vocab_size,embed_dim,num_classes,hidden_dim)criterion=nn.CrossEntropyLoss()optimizer=optim.Adam(model.parameters(),lr=learning_rate)forepochinrange(num_epochs):model.train() #设置模型为训练模式

total_loss=0fortexts,labelsintrain_loader:optimizer.zero_grad() #清空梯度

outputs=model(texts) #前向传播

loss=criterion(outputs,labels) #计算损失

loss.backward() #反向传播4、训练模型optimizer.step() #更新参数

total_loss+=loss.item() #累加损失

print(f'Epo

温馨提示

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

评论

0/150

提交评论