当前位置: 首页 > news >正文

政务网站集约化建设桂林网站开发建设

政务网站集约化建设,桂林网站开发建设,制作游戏编辑器app,企业标准信息公共服务平台官网大家好#xff0c;我是微学AI#xff0c;今天给大家介绍一下自然语言处理实战项目13-基于GRU模型与NER的关键词抽取模型训练全流程。本文主要介绍关键词抽取样例数据、GRU模型模型构建与训练、命名实体识别(NER)、模型评估与应用#xff0c;项目的目标是通过训练一个GRU模型…大家好我是微学AI今天给大家介绍一下自然语言处理实战项目13-基于GRU模型与NER的关键词抽取模型训练全流程。本文主要介绍关键词抽取样例数据、GRU模型模型构建与训练、命名实体识别(NER)、模型评估与应用项目的目标是通过训练一个GRU模型来实现准确和鲁棒的关键词抽取并通过集成NER模型提高关键词抽取的效果。这个项目提供了一个完整的流程可以根据实际需求进行调整和扩展。 目录 1.GRU模型介绍 2.NER方式提取关键词 3.NER方式的代码实现 4.总结 1.GRU模型介绍 GRU是一种递归神经网络的变种用于处理序列数据的建模任务。与传统的RNN结构相比GRU引入了门控机制以解决长期依赖问题并减轻了梯度消失和爆炸问题。 GRU模型的主要组成部分包括 1.输入门Input Gate决定了输入信息中有哪些部分需要被更新到隐藏状态。它通过一个sigmoid函数将输入数据与先前的隐藏状态进行组合输出一个介于0和1之间的值表示更新的权重。 2.更新门Update Gate控制是否更新隐藏状态的值。它通过一个sigmoid函数评估当前输入和先前隐藏状态以确定是否将新信息与之前的隐藏状态进行组合。 3.重置门Reset Gate评估当前输入和先前隐藏状态决定隐藏状态中要保留的信息和要忽略的信息。该门可以通过一个sigmoid函数和一个tanh函数获得两个不同的输出然后将它们相乘得到最终的重置门结果。 4.隐藏状态Hidden State用于存储序列中的信息并在每个时间步传递和更新。隐藏状态根据输入和先前的隐藏状态进行更新。通过使用输入门和重置门对先前隐藏状态进行加权组合然后使用tanh函数得到新的候选隐藏状态。最后更新门确定如何将新的候选隐藏状态与先前的隐藏状态进行组合来获得最终的隐藏状态。 GRU模型在序列建模任务中具有以下优势 处理长期依赖GRU模型通过使用门控机制可以选择性地更新和保留序列中的信息从而更好地处理长期依赖关系。 减轻梯度问题由于门控机制的存在GRU模型能够有效地减轻梯度消失和梯度爆炸等问题提高模型的训练效果和稳定性。 参数较少相比长短时记忆网络LSTMGRU模型的参数更少更容易训练和调整。 2.NER方式提取关键词 NER可以用于关键词抽取通过识别文本中的命名实体从中提取出关键词。与传统的关键词抽取方法相比NER具有以下优势 1.精确性NER可以准确定位文本中的具体实体提供更精确的关键词抽取结果。 2.上下文理解NER不仅仅是简单地提取词语还能够根据上下文理解实体的含义提高关键词抽取的准确性。 3.适应多领域由于NER对上下文的理解能力它可以用于不同领域的关键词抽取如新闻、医学、法律等。 NER的工作流程通常包括以下步骤 1.数据准备收集并准备标注好的训练数据其中标注好的数据应包含实体的起始位置和对应的标签。 2.特征提取从文本中选择适当的特征来表示实体如词性、上下文等。这些特征通常用于训练模型。 3.模型训练使用标注好的训练数据训练一个机器学习模型如条件随机场Conditional Random Field, CRF、循环神经网络Recurrent Neural Networks, RNN等。 4.标注预测使用训练好的模型对新的文本进行预测并标注出实体的位置和类别。 5.后处理根据任务需求对NER的结果进行后处理如过滤掉不相关的实体、合并相邻的实体等。 6.关键词抽取从提取出的实体中选择具有关键意义的实体作为关键词。 3.NER方式的代码实现 import torch import torch.nn as nn from torch.optim import Adam# 定义模型 class KeywordExtractor(nn.Module):def __init__(self, input_size, hidden_size, output_size):super(KeywordExtractor, self).__init__()self.hidden_size hidden_sizeself.embedding nn.Embedding(input_size, hidden_size)self.gru nn.GRU(hidden_size, hidden_size)self.linear nn.Linear(hidden_size, output_size)def forward(self, input):embedded self.embedding(input)output, hidden self.gru(embedded)output self.linear(output.view(-1, self.hidden_size))return output.view(len(input), -1, output.size(1))# 准备训练数据 train_data [(我 爱 北京, [O, O, B-LOC]),(张三 是 中国 人, [B-PER, O, B-LOC, O]),(李四 是 美国 人, [B-PER, O, B-LOC, O]),(我 来自 北京, [O, O, B-LOC]),(我 来自 广州, [O, O, B-LOC]),(王五 去 英国 玩, [B-PER, O, B-LOC, O]),(我 喜欢 上海, [O, O, B-LOC]),(刘东 是 北京 人, [B-PER, O, B-LOC, O]),(李明 来自 深圳, [B-PER, O, B-LOC]),(我 计划 去 香港 旅行, [O, O,O, B-LOC, O]),(你 想去 法国 吗, [O, O, B-LOC, O]),(福州 是 你的 家乡 吗, [B-LOC, O, O, O, O]),(张伟 和 王芳 一起 去 新加坡, [B-PER, O, B-PER, O, O, B-LOC]),# 其他训练样本... ]# 构建词汇表 word2idx {PAD: 0, UNK: 1} tag2idx {O: 0, B-LOC: 1, B-PER:2} for sentence, tags in train_data:for word in sentence.split():if word not in word2idx:word2idx[word] len(word2idx)for tag in tags:if tag not in tag2idx:tag2idx[tag] len(tag2idx) idx2word {idx: word for word, idx in word2idx.items()} idx2tag {idx: tag for tag, idx in tag2idx.items()}# 超参数 input_size len(word2idx) output_size len(tag2idx) hidden_size 128 num_epochs 100 batch_size 2 learning_rate 0.001# 实例化模型和损失函数 model KeywordExtractor(input_size, hidden_size, output_size) criterion nn.CrossEntropyLoss()# 定义优化器 optimizer Adam(model.parameters(), lrlearning_rate)# 准备训练数据的序列张量和标签张量 def prepare_sequence(seq, to_idx):idxs [to_idx.get(token, to_idx[UNK]) for token in seq.split()]return torch.tensor(idxs, dtypetorch.long)# 填充数据 def pad_sequences(data):# 计算最长句子的长度max_length max(len(item[0].split()) for item in data)aligned_data []for sentence, tags in data:words sentence.split()word_s words [O] * (max_length - len(tags))sentence .join(word_s)aligned_tags tags [O] * (max_length - len(tags))aligned_data.append((sentence, aligned_tags))return aligned_data# 训练模型 for epoch in range(num_epochs):for i in range(0, len(train_data), batch_size):batch_data train_data[i:i batch_size]batch_data pad_sequences(batch_data)inputs torch.stack([prepare_sequence(sentence, word2idx) for sentence, _ in batch_data])targets torch.LongTensor([tag2idx[tag] for _, tags in batch_data for tag in tags])# 前向传播outputs model(inputs)loss criterion(outputs.view(-1, output_size), targets)# 反向传播和优化optimizer.zero_grad()loss.backward()optimizer.step()print(Epoch [{}/{}], Step [{}/{}], Loss: {:.4f}.format(epoch 1, num_epochs, i 1, len(train_data) // batch_size, loss.item()))# 测试模型 test_sentence 李明 想去 北京 游玩 with torch.no_grad():inputs prepare_sequence(test_sentence, word2idx).unsqueeze(0)outputs model(inputs)_, predicted torch.max(outputs.data, 2)tags [idx2tag[idx.item()] for idx in predicted.squeeze()]print(输入句子:, test_sentence)print(关键词标签:, tags) 运行结果: Epoch [99/100], Step [3/6], Loss: 0.0006 Epoch [99/100], Step [5/6], Loss: 0.0002 Epoch [99/100], Step [7/6], Loss: 0.0002 Epoch [99/100], Step [9/6], Loss: 0.0006 Epoch [99/100], Step [11/6], Loss: 0.0006 Epoch [99/100], Step [13/6], Loss: 0.0009 Epoch [100/100], Step [1/6], Loss: 0.0003 Epoch [100/100], Step [3/6], Loss: 0.0006 Epoch [100/100], Step [5/6], Loss: 0.0002 Epoch [100/100], Step [7/6], Loss: 0.0002 Epoch [100/100], Step [9/6], Loss: 0.0005 Epoch [100/100], Step [11/6], Loss: 0.0006 Epoch [100/100], Step [13/6], Loss: 0.0009输入句子: 李明 想去 北京 游玩 关键词标签: [B-PER, O, B-LOC, O]4.总结 命名实体识别NER是自然语言处理中的一项技术目的是从文本中识别和提取出具有特定意义的命名实体。这些命名实体可以是人名、地名、组织机构名、时间、日期等具有特定含义的词汇。 NER的任务是将文本中的每个词标注为预定义的命名实体类别常见的类别有人名PERSON、地名LOCATION、组织机构名ORGANIZATION等。通过NER技术可以提取出文本中的关键信息帮助理解文本的含义和上下文。 NER的核心思想是结合机器学习和自然语言处理技术利用训练好的模型对文本进行分析和处理。通常使用的方法包括基于规则的方法、统计方法和基于机器学习的方法。其中基于机器学习的方法在大规模标注好的数据集上进行训练通过学习识别命名实体的模式和规律从而提高识别的准确性。 NER在实际应用中有广泛的应用场景包括信息抽取、智能搜索、问答系统等。通过NER技术提取出的关键词可以被用于进一步的信息处理和分析有助于提高对文本的理解和处理效果。 总之命名实体识别NER是一项重要的自然语言处理技术能够从文本中提取出具有特定含义的命名实体。它在各种应用场景中发挥着重要作用为文本分析和信息提取提供了有力的支持。
http://www.hkea.cn/news/14454379/

相关文章:

  • 兼职做问卷调查的网站好怎样在工商网站做遗失
  • 株洲专业网站建设宁德市住房和城乡建设局新网站
  • 网站被降权会发生什么影响吗爱网度假
  • 怎样自己做公司网站哈尔滨网建公司有哪些
  • 网站架设流程网站建设的重要性意义与价值
  • 回收做哪个网站好些做网站用的一些素材
  • 个人网站 推荐网站建设主结构
  • 河间市做网站价格电子商务网站建设的案例分析题
  • 维护网站需要什么技术哪些网站可以做兼职设计师
  • 科普网站栏目建设方案搜素引擎排名优化计费方式
  • 互联网企业网站设计关键词搜索排名推广
  • 用flash做的网站网站建设网站排名
  • 织梦网站如何做伪静态网站建设实训记录
  • 中国免费网站服务器下载内蒙古建设厅门户网站
  • 教人做辐射4mod的网站wordpress 菜单 间距
  • 不是网站开发语言的是营业推广策略有哪些
  • 普陀网站建设比较实惠怎样建设网络游戏网站
  • 注册安全工程师报名条件和要求电脑优化软件推荐
  • 做网站单位北京网站备案速度
  • 如何建立自己的企业网站榆林网站制作
  • php p2p网站建设济南网络推广公司哪家好
  • 小型网站开发费用做公益网站需要什么资质
  • 淘宝联盟 网站怎么做网络推广外包业务销售
  • 自己怎么创建一个网站商标购买网站
  • 陕西省建设造价协会网站云尚网络建站
  • wordpress怎样做单页网站开网店被运营公司骗了怎么办
  • 网站前台的实现wordpress切换至就编辑器
  • 关于网页设计的教育网站设计赣州网络问政
  • 个人网站意义设计图网站
  • 国内高清视频素材网站网站网络营销方式