【人工智能项目】Bert实现问答预测系统

BERT 模型微调实战:使用Transformers微调BERT模型实现问答和文本分类任务 BERT(Bidirectional Encoder Representations from Transformers)是一种预训练的自然语言处理模型,由Google于2018年发布。BERT模型的核心是Transformer编码器,它可以在大规模语料库上进行无监督预训练,然后通过微调在各种NLP任务上进行微调。BERT模型是一种双向的深度学习模型,它可以同时考虑上下文中的所有单词,从而更好地理解句子的含义。BERT模型已被证明在多项NLP任务上取得了最佳结果,包括问答、文本分类、命名实体识别等。 阅读详情

【人工智能项目】Bert实现问答预测系统

在这里插入图片描述

DrQA 是一个开放域的问答系统。向 DrQA 系统输入一段文本,然后提一个答案能在该文本中找到的问题,那么 DrQA 就能给出这个问题的答案。

本次任务就是用Bert实现一个问答系统,输入Q1问题,Q2文本,标签为是否能在Q2中找到Q1的答案。

那么话不多说,走起!!!
在这里插入图片描述

环境

本次环境是在google colab进行的,所用的gpu情况具体如下所示:

!nvidia-smi

在这里插入图片描述

导入所需的模块

#! -*- coding:utf-8 -*-
import re, os, json, codecs, gc
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import os
import time
import datetime

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.utils import class_weight as cw

from keras import Sequential

from keras.models import Model

from keras.layers import LSTM,Activation,Dense,Dropout,Input,Embedding,BatchNormalization,Add,concatenate,Flatten
from keras.layers import Conv1D,Conv2D,Convolution1D,MaxPool1D,SeparableConv1D,SpatialDropout1D,GlobalAvgPool1D,GlobalMaxPool1D,GlobalMaxPooling1D
from keras.layers.pooling import _GlobalPooling1D
from keras.layers import MaxPooling2D,GlobalMaxPooling2D,GlobalAveragePooling2D

from keras.optimizers import RMSprop,Adam

from keras.preprocessing.text import Tokenizer
from keras.preprocessing import sequence

from keras.utils import to_categorical

from keras.callbacks import EarlyStopping
from keras.callbacks import ModelCheckpoint
from keras.callbacks import ReduceLROnPlateau

%matplotlib inline

import warnings
warnings.filterwarnings("ignore")

读取文件

train_dataset_path = "./train.tsv"
test_dataset_path = "./test.tsv"

train_df = pd.read_csv(train_dataset_path, sep='\t',names=["Q","Q1","Q2","label"])
test_df = pd.read_csv(test_dataset_path, sep='\t',names=["Q","Q1","Q2","label"])

train_df

在这里插入图片描述

test_df

在这里插入图片描述

去除无标签的数据

train_df.dropna(axis=0, how='any', inplace=True)
train_df

在这里插入图片描述

清洗文本数据

对文本中的一些特殊符号进行数据清洗工作。

import re
def filter(text):
    text = re.sub("[A-Za-z0-9\!\=\?\%\[\]\,\(\)\>\<:&lt;\/#\. -----\_]", "", text)
    text = text.replace('图片', '')
    text = text.replace('\xa0', '') # 删除nbsp
    # new
    r1 =  "\\【.*?】+|\\《.*?》+|\\#.*?#+|[.!/_,$&%^*()<>+""'?@|:~{}#]+|[——!\\\,。=?、:“”‘’¥……()《》【】]"
    cleanr = re.compile('<.*?>')
    text = re.sub(cleanr, ' ', text)        #去除html标签
    text = re.sub(r1,'',text)
    text = text.strip()
    return text

def clean_text(data):
    data['text'] = data['Q1'].apply(lambda x: filter(x))
    data['text'] = data['Q2'].apply(lambda x: filter(x))

    return data

train = clean_text(train_df)
test = clean_text(test_df)

在这里插入图片描述

在这里插入图片描述

数据预处理

对Q1和Q2这两列数据进行合并,以方便后续处理工作。

train_df["ocr"] = train_df["Q1"] + "  " + train_df["Q2"]
test_df["ocr"] = test_df["Q1"] + "  " + test_df["Q2"]

在这里插入图片描述
在这里插入图片描述

标签统计

sns.countplot(train_df["label"])
plt.xlabel("Label")
plt.title("News sentiment analysis")

在这里插入图片描述

sns.countplot(test_df["label"])
plt.xlabel("Label")
plt.title("News sentiment analysis")

在这里插入图片描述

最终训练集

train_df.shape

(21527, 6)

在这里插入图片描述

test_df

在这里插入图片描述

安装bert

!pip install keras_bert

Looking in indexes: http://mirrors.aliyun.com/pypi/simple/
Requirement already satisfied: keras_bert in /root/miniconda3/envs/myconda/lib/python3.7/site-packages (0.81.0)
Requirement already satisfied: numpy in /root/miniconda3/envs/myconda/lib/python3.7/site-packages (from keras_bert) (1.18.1)
Requirement already satisfied: Keras in /root/miniconda3/envs/myconda/lib/python3.7/site-packages (from keras_bert) (2.3.1)
Requirement already satisfied: keras-transformer>=0.30.0 in /root/miniconda3/envs/myconda/lib/python3.7/site-packages (from keras_bert) (0.33.0)
Requirement already satisfied: keras-preprocessing>=1.0.5 in /root/miniconda3/envs/myconda/lib/python3.7/site-packages (from Keras->keras_bert) (1.1.0)
Requirement already satisfied: scipy>=0.14 in /root/miniconda3/envs/myconda/lib/python3.7/site-packages (from Keras->keras_bert) (1.4.1)
Requirement already satisfied: h5py in /root/miniconda3/envs/myconda/lib/python3.7/site-packages (from Keras->keras_bert) (2.8.0)
Requirement already satisfied: keras-applications>=1.0.6 in /root/miniconda3/envs/myconda/lib/python3.7/site-packages (from Keras->keras_bert) (1.0.8)
Requirement already satisfied: pyyaml in /root/miniconda3/envs/myconda/lib/python3.7/site-packages (from Keras->keras_bert) (5.3)
Requirement already satisfied: six>=1.9.0 in /root/miniconda3/envs/myconda/lib/python3.7/site-packages (from Keras->keras_bert) (1.14.0)
Requirement already satisfied: keras-multi-head>=0.22.0 in /root/miniconda3/envs/myconda/lib/python3.7/site-packages (from keras-transformer>=0.30.0->keras_bert) (0.22.0)
Requirement already satisfied: keras-layer-normalization>=0.12.0 in /root/miniconda3/envs/myconda/lib/python3.7/site-packages (from keras-transformer>=0.30.0->keras_bert) (0.14.0)
Requirement already satisfied: keras-embed-sim>=0.7.0 in /root/miniconda3/envs/myconda/lib/python3.7/site-packages (from keras-transformer>=0.30.0->keras_bert) (0.7.0)
Requirement already satisfied: keras-pos-embd>=0.10.0 in /root/miniconda3/envs/myconda/lib/python3.7/site-packages (from keras-transformer>=0.30.0->keras_bert) (0.11.0)
Requirement already satisfied: keras-position-wise-feed-forward>=0.5.0 in /root/miniconda3/envs/myconda/lib/python3.7/site-packages (from keras-transformer>=0.30.0->keras_bert) (0.6.0)
Requirement already satisfied: keras-self-attention==0.41.0 in /root/miniconda3/envs/myconda/lib/python3.7/site-packages (from keras-multi-head>=0.22.0->keras-transformer>=0.30.0->keras_bert) (0.41.0)

下载本次所需的bert预训练好的模型

!wget -c https://storage.googleapis.com/chineseglue/pretrain_models/roeberta_zh_L-24_H-1024_A-16.zip

–2020-05-06 13:01:24-- https://storage.googleapis.com/chineseglue/pretrain_models/roeberta_zh_L-24_H-1024_A-16.zip
Resolving storage.googleapis.com (storage.googleapis.com)… 172.253.120.128, 2a00:1450:400c:c00::80
Connecting to storage.googleapis.com (storage.googleapis.com)|172.253.120.128|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 1208484809 (1.1G) [application/zip]
Saving to: ‘roeberta_zh_L-24_H-1024_A-16.zip’
roeberta_zh_L-24_H- 100%[===================>] 1.12G 82.3MB/s in 15s
2020-05-06 13:01:40 (76.2 MB/s) - ‘roeberta_zh_L-24_H-1024_A-16.zip’ saved [1208484809/1208484809]

!unzip roeberta_zh_L-24_H-1024_A-16.zip

Archive: roeberta_zh_L-24_H-1024_A-16.zip
inflating: bert_config_large.json
inflating: checkpoint
inflating: roberta_zh_large_model.ckpt.data-00000-of-00001
inflating: roberta_zh_large_model.ckpt.index
inflating: roberta_zh_large_model.ckpt.meta
inflating: vocab.txt

训练

#! -*- coding:utf-8 -*-
import re, os, json, codecs, gc
import numpy as np
import pandas as pd
from random import choice
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import KFold
from keras_bert import load_trained_model_from_checkpoint, Tokenizer


from keras.layers import *
from keras.callbacks import *
from keras.models import Model
import keras.backend as K
from keras.optimizers import Adam

maxlen = 128
config_path = './bert_config_large.json'
# checkpoint_path = '/export/home/liuyuzhong/kaggle/bert/chinese_L-12_H-768_A-12/bert_model.ckpt'
checkpoint_path = './roberta_zh_large_model.ckpt'
dict_path = './vocab.txt'

token_dict = {}
with codecs.open(dict_path, 'r', 'utf8') as reader:
    for line in reader:
        token = line.strip()
        token_dict[token] = len(token_dict)

class OurTokenizer(Tokenizer):
    def _tokenize(self, text):
        R = []
        for c in text:
            if c in self._token_dict:
                R.append(c)
            elif self._is_space(c):
                R.append('[unused1]') # space类用未经训练的[unused1]表示
            else:
                R.append('[UNK]') # 剩余的字符是[UNK]
        return R

tokenizer = OurTokenizer(token_dict)

def seq_padding(X, padding=0):
    L = [len(x) for x in X]
    ML = max(L)
    return np.array([
        np.concatenate([x, [padding] * (ML - len(x))]) if len(x) < ML else x for x in X
    ])

class data_generator:
    def __init__(self, data, batch_size=4, shuffle=True):
        self.data = data
        self.batch_size = batch_size
        self.shuffle = shuffle
        self.steps = len(self.data) // self.batch_size
        if len(self.data) % self.batch_size != 0:
            self.steps += 1
    def __len__(self):
        return self.steps
    def __iter__(self):
        while True:
            idxs = list(range(len(self.data)))
            
            if self.shuffle:
                np.random.shuffle(idxs)
            
            X1, X2, Y = [], [], []
            for i in idxs:
                d = self.data[i]
                text = d[0][:maxlen]
                x1, x2 = tokenizer.encode(first=text)
                y = d[1]
                X1.append(x1)
                X2.append(x2)
                Y.append([y])
                if len(X1) == self.batch_size or i == idxs[-1]:
                    X1 = seq_padding(X1)
                    X2 = seq_padding(X2)
                    Y = seq_padding(Y)
                    yield [X1, X2], Y[:, 0, :]
                    [X1, X2, Y] = [], [], []

from keras.metrics import top_k_categorical_accuracy
def acc_top5(y_true, y_pred):
    return top_k_categorical_accuracy(y_true, y_pred, k=5)
                    
def build_bert(nclass):
    bert_model = load_trained_model_from_checkpoint(config_path, checkpoint_path, seq_len=None)

    for l in bert_model.layers:
        l.trainable = True

    x1_in = Input(shape=(None,))
    x2_in = Input(shape=(None,))

    x = bert_model([x1_in, x2_in])
    x = Lambda(lambda x: x[:, 0])(x)
    p = Dense(nclass, activation='softmax')(x)

    model = Model([x1_in, x2_in], p)
    model.compile(loss='categorical_crossentropy', 
                  optimizer=Adam(1e-5),
                  metrics=['accuracy', acc_top5])
    print(model.summary())
    return model
    
def run_cv(nfold, data, data_label, data_test):
    kf = KFold(n_splits=nfold, shuffle=True, random_state=520).split(data)
    # 改
    train_model_pred = np.zeros((len(data), 2))
    test_model_pred = np.zeros((len(data_test), 2))
        
    k = 0
    for i, (train_fold, test_fold) in enumerate(kf):
        X_train, X_valid, = data[train_fold, :], data[test_fold, :]
        # 改
        model = build_bert(2)
        early_stopping = EarlyStopping(monitor='val_acc', patience=3)
        plateau = ReduceLROnPlateau(monitor="val_acc", verbose=1, mode='max', factor=0.5, patience=2)
        checkpoint = ModelCheckpoint('./bert_dump/' + str(i) + '.hdf5', monitor='val_acc', 
                                         verbose=2, save_best_only=True, mode='max',save_weights_only=True)
        
        train_D = data_generator(X_train, shuffle=True)
        valid_D = data_generator(X_valid, shuffle=True)
        test_D = data_generator(data_test, shuffle=False)
        
        history = model.fit_generator(
            train_D.__iter__(),
            steps_per_epoch=len(train_D),
            epochs=3,
            validation_data=valid_D.__iter__(),
            validation_steps=len(valid_D),
            callbacks=[early_stopping, plateau, checkpoint],
        )
        
        # return model
        train_model_pred[test_fold, :] =  model.predict_generator(valid_D.__iter__(), steps=len(valid_D),verbose=1)
        test_model_pred += model.predict_generator(test_D.__iter__(), steps=len(test_D),verbose=1)
        
        del model; gc.collect()
        K.clear_session()
        
        # break
        if k == 0:
            break
        
    return train_model_pred, test_model_pred,history
train_model_pred, test_model_pred,history = run_cv(2, DATA_LIST, None, DATA_LIST_TEST)

在这里插入图片描述

绘制loss和acc曲线

# 绘制训练过程中的 loss 和 acc 变化曲线
import matplotlib.pyplot as plt
%matplotlib inline

def history_plot(history_fit):
    plt.figure(figsize=(12,6))
    
    # summarize history for accuracy
    plt.subplot(121)
    plt.plot(history_fit.history["accuracy"])
    plt.plot(history_fit.history["val_accuracy"])
    plt.title("model accuracy")
    plt.ylabel("accuracy")
    plt.xlabel("epoch")
    plt.legend(["train", "valid"], loc="upper left")
    
    # summarize history for loss
    plt.subplot(122)
    plt.plot(history_fit.history["loss"])
    plt.plot(history_fit.history["val_loss"])
    plt.title("model loss")
    plt.ylabel("loss")
    plt.xlabel("epoch")
    plt.legend(["train", "test"], loc="upper left")
    
    plt.show()
history_plot(history)

预测代码

test_pred = [np.argmax(x) for x in test_model_pred]
test_df['labels'] = test_pred
test_df['labels']
from sklearn.metrics import classification_report
print(classification_report(test_df["label"], test_df["labels"]))

小节

那么本次分享就到此结束了。我们下回见!!!
在这里插入图片描述

手把手教利用Bert实现知识库问答(详细注释) 跟着DataFountain学的,加了一些代码注释,DataFountain有数据集,链接:个人工作平台https://work.datafountain.cn/forum?id=121&type=2&source=1 一、数据处理 1、数据分析 数据格式如下:这个题目的意思就是判断Question和Sentence是否匹配,如果匹配label就是1 # 统一导入工具包 import csv import transformers import torch import warni 阅读详情

相关推荐

BERT问答模型回答问题

我们从TensorFlow Hub加载了一个预训练的BERT模型,并在其基础上添加了一个简单的问答头部,该头部由两个线性层组成,用于预测答案的起始和结束位置。您可以在BERT模型之上添加一个问答头部,通常是两个线性层,一个用于预测答案的起始位置,另一个用于预测答案的结束位置。这个例子假设您已经有了一个适当格式的训练数据集,其中包含了编码后的输入ids、注意力掩码、以及答案的起始和结束位置。问答(QA)模型通常使用的数据集包含了一系列的问题、上下文(问题的答案所在的文本段落)以及答案在上下文中的确切位置。

qq_35827483的博客 1442

【使用 BERT 的问答系统】第 5 章 :BERT模型应用:问答系统

如果您的系统没有足够的可用资源,它提供了一个快速且免费的环境来运行您的 Python 代码。它是信息检索和 NLP 领域计算机科学学科的一部分,专注于构建系统,自动提取人类或机器以自然语言提出的问题的答案。此类系统的一个示例是 DeepPavlov ODQA 系统,它是 MIPT 开发的一种 ODQA,它使用来自维基百科的大量文章数据集作为其知识来源。接下来,我们看看如何使用 DeepPavlov 来实现基于上下文的问答系统,其中问题的答案存在于上下文中。例如,请考虑维基百科文章中的以下上下文和问题。

sikh_0529的博客 6283

BERT中文任务实战(文本分类、预测下一句)踩坑记录

文章目录一、概述二、Bert简介2.1 简要说明2.2 fine-tune原理三、在项目数据集上fine-tune教程3.1整体流程3.2 自定义DataProcessor3.3 参数设置3.4 预测函数四、踩坑记录五、参考文献 一、概述 最近参与了两个项目开发,主要内容是基于NLP和深度学习的文本处理任务。其中有两个子模块用到文本分类和预测下一句模型,刚好前段时间自己折腾学习了一点BERT,就打...

whuty1304的博客 2万+

使用 BERT 完成文本问答的答案预测任务

本文主要介绍了文本问答的实现过程,简单来说就是输入“文本+问题”,返回“答案在文本的起始索引和终止索引”。

王大呀呀的博客 2337

基于知识图谱的问答系统(下)

基于知识图谱的问答系统(下) 本项目是基于知识图谱的问答系统,BERT+BILSTM+CRF做命名实体识别和句子相似度比较,最后实现线上的部署。 项目的分以下步骤进行描述: 1-项目介绍 - 1.1-数据集介绍 - 1.2-技术方案流程 - 1.3-评价标准 2-命名实体识别模型训练代码理解 - 2.1-数据集准备 - 2.2-数据预处理 - 2.3-定义主模型 - 2.4-开始训练 3-BE...

weixin_46133588的博客 1万+

人工智能100问☞第36问:什么是BERT?

BERT是基于Transformer Encoder的双向语言预训练模型,具备强大的语义理解能力,是现代自然语言处理的重要基石。它是一套让机器像人一样“前后一起看”的语言理解技术,它让AI不光“读得快”,还“读得懂”。现在很多搜索引擎、客服系统、智能问答,背后都用了BERT技术。

bjdx_001的博客 1135

问答QA(二)基于BERT的知识库问答实战

GitHub:https://github.com/jkszw2014/bert-kbqa-NLPCC2017 一、问题描述 本篇知识问答实战来源NLPCC2017的Task5:Open Domain Question Answering;其包含 14,609 个问答对的训练集和包含 9870 个问答对的测试集。并提供一个知识库,包含 6,502,738 个实体、 587,875 个属性以及...

ai_1046067944的专栏 2万+

31、使用BERT进行问答任务的详细指南

本文详细介绍了如何使用BERT进行问答任务,涵盖了BERT的预训练任务原理、数据集的准备、分词器的实现、模型的定义与训练流程,以及最终的模型评估与预测方法。通过结合Hugging Face的transformers库和SQUAD数据集,展示了从数据处理到模型微调的完整实现过程,适用于希望了解BERT在问答领域应用的开发者和研究人员。

ppp33的博客 146

bert 中文基于文本的问答系统

bert 中文基于文本的问答系统 # -!- coding: utf-8 -!- import torch if torch.cuda.is_available(): device = torch.device("cuda") print('there are %d GPU(s) available.'% torch.cuda.device_count()) print('we will use the GPU: ', torch.cuda.get_device_name(0)) e

frank_zhaojianbo的博客 9284

利用BERT优化知识图谱问答系统的深度学习应用

命名实体识别(Named Entity Recognition,NER)是自然语言处理(NLP)领域的一项基础任务,旨在从文本中识别出具有特定意义的实体,如人名、地名、组织名、时间表达式等。这些实体通常被认为是语言中的“名词短语”,它们为理解和解析文本提供了关键信息。在问答系统中,NER能够帮助系统准确理解用户提问的上下文和关键信息,从而提高检索和回答问题的准确度。句子相似度计算是自然语言处理(NLP)中的一个基本任务,它的目的是衡量两个句子在语义上的相似程度。

weixin_30598047的博客 1048

投资知道 基于BERT的中文问答匹配检测

投资知道 问题答案匹配 本项目基于BERT中文预训练模型,使用huggingface transformers开源工具库实现中文关于投资知道的问题答案匹配检测系统的模型实现。 问题适用场景:投资问答/论坛等,自动检测问题答案是否匹配,代替人工审核。 模型、代码及数据下载地址 所有数据、模型及代码下载链接:百度网盘地址,提取码: doh9 原始BERT预训练模型为chinese_wwm_pytorch,下载地址哈工大崔一鸣开源的中文预训练模型,网盘上也有,主要需3个文件,按huggingface库要求改名,具体见file_utils.py,模型bin文件,配置json文件和词表txt文件。 数

使用BERT进行情感分类预测及代码实例

1. BERT配置 1.1. clone BERT 代码 1.2. 数据处理 2. 修改代码 因为这次是分类问题, 所以我们需要修改run_classify.py 2.1 加入新的任务类 因为我们是做一个分类的任务, 但是 2.2 任务类注册 3. 运行代码 运行代码需要提供参数, 这里我建议直接在pycharm编译器里加参数, 而不用按照官方教材 run xxx.sh 4. 运行问题 ...

阿里武的技术博客 2万+

开源onlyoffice编译完整过坑版

onlyoffice 编译过坑完整版;

sHImart 4551

一小时搞定智能问答系统:BERT实战全攻略

还在为海量文档检索发愁?想给产品添加智能问答功能却不懂深度学习?今天我就带你用BERT模型快速搭建一个专业的智能问答系统,无需复杂编程,只需跟着步骤操作即可完成。读完本文,你将掌握从环境部署到模型优化的完整流程,轻松实现零代码AI应用。 ## 🤔 为什么选择BERT构建问答系统? 你知道吗?BERT模型在问答任务上的表现已经超越了人类水平!这得益于它的双向编码能力和强大的预训练机制。相比传统

gitblog_00943的博客 883

Linux运维踩坑实录:手把手教你修复LVM中PV显示[unknown]的诡异问题

本文详细解析了Linux运维中LVM物理卷(PV)显示[unknown]的故障现象及修复方法。通过分析问题根源、提供标准修复流程和特殊场景处理方案,帮助运维人员快速解决VG容量异常、PV状态丢失等问题,并分享预防措施与最佳实践,确保LVM存储系统的稳定运行。

weixin_26869081的博客 351

RK3588平台MIPI DSI屏幕调试记录

本文是基于RK3588平台,MIPI屏调试总结。调试过程中遇到的问题:一开始很久没亮,测量了电源电压和波形都正常。后来换了一组板子和屏幕做对比。最后是因为屏幕的座子没焊接好,二是接MIPI屏幕的排线太长会影响数据传输。换了一根短的线之后屏幕亮起。vp2vp3。

bingdund的博客 1392

【AI + TensorFlow 项目实战】智能问答系统(BERT + QA)

给定一段文本内容(文章/段落)与一个问题,模型自动从文中找出准确的答案片段。问题 + 文本。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 739

NVIDIA Isaac ROS - 入门教程(一)

欢迎访问 Isaac ROS,这是一套硬件加速、高性能、低延迟的 ROS 2 软件包,用于制造自主机器人,充分利用 Jetson 和其他英伟达平台的强大功能。英伟达 Jetson 平台运行在基于 Ubuntu Linux 的 JetPack 操作系统上。JetPack 5.x 是在 Ubuntu 20.04 Focal 的基础上构建的,这意味着由 ROS 2 Buildfarm 为 Ubuntu 22.04 Jammy 构建的 ROS 2 Humble 的 Debian 包不受支持。由于官方 ROS 2 B

机器人控制与仿真应用 5723

一文读懂BERT模型

语言表示模型 BERT 详解 摘要:在自然语言处理(NLP)领域,BERT(Bidirectional Encoder Representations from Transformers)是近几年出现的、影响深远的创新模型之一。自 2018 年由谷歌团队发布以来,BERT 为众多 NLP 任务设定了新的基准。BERT旨在通过在所有层中对左右上下文进行联合条件反射,从未标记的文本中预训练深度双向表示。因此,预训练的BERT模型可以通过一个额外的输出层进行微调,从而为广泛的任务(如问答和语言推理)创建最先进的

yihong23的博客 1万+

YOLO创新点改进点的消融实验设计规范

YOLO改进的消融实验是一种重要的方法,用于评估和验证模型中不同组件的影响。在进行YOLO改进的消融实验时,我们可以选择一些可能的改进点,比如Backbone网络、Anchor框设计和损失函数设计,然后通过实验来分析它们对模型性能的影响。首先,我们需要确定实验设计。对于每个改进点,我们将设计多个实验组,并针对每个实验组训练模型并进行性能评估。这里以三个改进点为例进行说明:改进点1:Backbone网络 (改进点2:Anchor框设计 (改进点3:损失函数设计 (

crasher123的博客 2913

Python爬虫教程:抓取Android或iOS应用中的数据

随着智能手机的普及,移动应用程序已经成为我们生活中不可或缺的一部分。从社交媒体、在线购物到金融服务和健康管理,几乎所有领域都有相应的手机应用程序(App)服务用户。而这些应用程序通常会存储大量的数据,例如用户行为、产品信息、订单记录等。如果我们能有效地抓取这些数据,可以为数据分析、商业智能、用户行为分析等提供有力支持。本文将重点介绍如何使用Python爬虫技术抓取Android或iOS应用中的数据,尤其是如何从这些应用的后端接口、存储、或网页中提取数据。我们将探讨如何通过反向工程技术访问移动应用中的API接

2201_76125261的博客 803

[文本语义相似] 基于bert的余弦距离(bert4keras实现)

文本相似在问答系统中有很重要的应用,如基于知识的问答系统(Knowledge-based QA),基于文档的问答系统(Documen-based QA),以及基于FAQ的问答系统(Community-QA)等。像对于问题的内容,需要进行相似度匹配,从而选择出与问题最接近,同时最合理的答案。本节介绍基于bert的余弦距离计算相似度。 ...

MachineLP的专栏 4114

加密算法:深度解析Ed25519原理

在 Solana 开发过程中,我一直对 Ed25519 加密算法 如何生成公钥、签名以及验证签名的机制感到困惑。为了弄清这一点,我查阅了大量相关资料,终于对其流程有了更清晰的理解。在此记录实现过程,方便日后查阅。

盹猫的博客 1万+

【AI 高效问答系统】机器阅读理解实战内容

问答系统(Question Answering, QA)是一类能够自动回答用户提出的问题的系统。它们在自然语言处理(NLP)领域中发挥着重要作用,从简单的问答对到复杂的对话系统,广泛应用于搜索引擎、虚拟助手、客服系统等场景。本文将基于 Kaggle 上的“Question Answering Tutorial”笔记,详细介绍如何构建一个自动化问答系统。

忆_恒心的博客 1605

【存储原理】IO超时处理 块层block-scsi层之间

【存储原理】IO超时处理 块层block-scsi层之间

sinat_37817094的博客 1025

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

NLP: 基于文本语义的智能问答系统

向AI转型的程序员都关注了这个号????????????人工智能大数据与深度学习 公众号:datayx问答系统是自然语言处理领域一个很经典的问题,它用于回答人们以自然语言形式提出的问题,...

datayx的文章 2万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: 【人工智能项目】使用AutoML进行数据预测实战
下一篇: 【人工智能项目】ImageNet数据集介绍以及数字图像处理技术
mind_programmonkey
mind_programmonkey 领域专家: 算法与数据结构技术领域 领域专家: 算法与数据结构技术领域
博客等级 码龄9年 4435粉丝 1111原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mind_programmonkey

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值