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

武汉网站建设电话多少钱做网站建网站公司

武汉网站建设电话多少钱,做网站建网站公司,上蔡专业网站建设,网络营销的经济gdp是什么一:文本匹配与文本相似度介绍 1.1 什么是文本匹配任务 文本匹配(Text Match)是一个较为宽泛的概念,基本上只要涉及到两段文本之间关系的,都可以被看作是一种文本匹配的任务,只是在具体的场景下&#xff0…

一:文本匹配与文本相似度介绍

1.1 什么是文本匹配任务

  • 文本匹配(Text Match)是一个较为宽泛的概念,基本上只要涉及到两段文本之间关系的,都可以被看作是一种文本匹配的任务,只是在具体的场景下,不同的任务对匹配二字的定义可能是存在差异的,具体的任务场景包括文本相似度计算、问答匹配、对话匹配、文本推理等等,另外,如之前介绍的抽取式机器阅读理解和多项选择,本质上也都是文本匹配。
  • 本文章重点关注文本相似度任务,即判断两段文本是不是表达了同样的语义。

1.2 文本相似度举例


二:基于Transformers的解决方案

2.1 解决方案1

  • 数据处理格式 
    • 输入数据由两个句子组成,分别为 Sentence A 和 Sentence B,并用特殊标记 [CLS] 和 [SEP] 进行分隔。
    • [CLS] 是一个特殊的标记,通常用于表示整个输入序列的聚合信息,适用于分类任务。
    • [SEP] 是分隔符,用于区分不同的句子或文本段。

  • 模型训练方式
    • 在模型训练过程中,输入的句子对将被送入 Transformer 模型(如 BERT)。
    • 模型的输出将用于计算句子对之间的相似度,输出的相似度值范围为 0 或 1,表示两个句子是否相似。

 


三:代码实战演练(交互模式)

  • 数据集
    • simCLUE/train_pair_1w.json
    • 数据集下载:https://github.com/CLUEbenchmark/SimCLUE/tree/main
    • 数据集样式:
  • 预训练模型
    • hfl/chinese-macbert-base

    • 训练方式:模型输出维度为2,softmax后取最大下标

3.1  Step1 导入相关包

from transformers import AutoTokenizer, AutoModelForSequenceClassification, Trainer, TrainingArguments
from datasets import load_dataset

3.2 Step2 加载数据集

dataset = load_dataset("json", data_files="./train_pair_1w.json", split="train")

3.3 Step3 划分数据集

datasets = dataset.train_test_split(test_size=0.2)

3.4 Step4 数据集预处理

import torchtokenizer = AutoTokenizer.from_pretrained("hfl/chinese-macbert-base")def process_function(examples):tokenized_examples = tokenizer(examples["sentence1"], examples["sentence2"], max_length=128, truncation=True)tokenized_examples["labels"] = [int(label) for label in examples["label"]]return tokenized_examplestokenized_datasets = datasets.map(process_function, batched=True, remove_columns=datasets["train"].column_names)

3.5 Step5 创建模型

from transformers import BertForSequenceClassification 
model = AutoModelForSequenceClassification.from_pretrained("hfl/chinese-macbert-base")

3.6 Step6 创建评估函数

import evaluateacc_metric = evaluate.load("accuracy")
f1_metirc = evaluate.load("f1")
def eval_metric(eval_predict):predictions, labels = eval_predictpredictions = predictions.argmax(axis=-1)acc = acc_metric.compute(predictions=predictions, references=labels)f1 = f1_metirc.compute(predictions=predictions, references=labels)acc.update(f1)return acc

3.7 Step7 创建TrainingArguments

train_args = TrainingArguments(output_dir="./cross_model",      # 输出文件夹per_device_train_batch_size=32,  # 训练时的batch_sizeper_device_eval_batch_size=32,   # 验证时的batch_sizelogging_steps=10,                # log 打印的频率eval_strategy="epoch",           # 评估策略save_strategy="epoch",           # 保存策略save_total_limit=3,              # 最大保存数learning_rate=2e-5,              # 学习率weight_decay=0.01,               # weight_decaymetric_for_best_model="f1",      # 设定评估指标load_best_model_at_end=True)     # 训练完成后加载最优模型

3.8 Step8 创建Trainer

from transformers import DataCollatorWithPadding
trainer = Trainer(model=model, args=train_args, tokenizer=tokenizer,train_dataset=tokenized_datasets["train"], eval_dataset=tokenized_datasets["test"], data_collator=DataCollatorWithPadding(tokenizer=tokenizer),compute_metrics=eval_metric)

3.9 Step9 模型训练

trainer.train()

3.10 Step10 模型评估

trainer.evaluate(tokenized_datasets["test"])

3.11 Step11 模型预测

model.config.id2label = {0: "不相似", 1: "相似"}
pipe = pipeline("text-classification", model=model, tokenizer=tokenizer, device=0)
result = pipe({"text": "我喜欢北京", "text_pair": "天气怎样"})

四:代码实战演练(交互模式优化)

  • 问题:如果我们需要从很多个候选项中匹配出最相似的选项。那么上面的方法就失效了,因为你不知道具体有多少个选项,所以就无法确定模型输出多少维。
  • 解决方法:
    • 让模型只输出一个数值。根据数值(score)的大小来对预测值进行分类。使用均方误差来计算损失。
    • 举例:假设需要在句子B和C中找出最相似的句子。那么就可以分别计算A和B、A和C的相似度值(score),然后对这两个值进行softmax后,取最大值作为匹配结果。 例图如下:

4.1 Step4 数据集预处理优化

因为我们需要使用均方误差损失,所以需要将label的值从int类型转换为float类型,方便后续计算。

import torchtokenizer = AutoTokenizer.from_pretrained("hfl/chinese-macbert-base")def process_function(examples):tokenized_examples = tokenizer(examples["sentence1"], examples["sentence2"], max_length=128, truncation=True)tokenized_examples["labels"] = [float(label) for label in examples["label"]] # 优化部分return tokenized_examplestokenized_datasets = datasets.map(process_function, batched=True, remove_columns=datasets["train"].column_names)

4.2 Step5 创建模型优化

因为我们现在的模型只需要输出一个结果,所以模型的num_labels要设为1。当不指定这个参数值时,默认为2。

model = AutoModelForSequenceClassification.from_pretrained("hfl/chinese-macbert-base", num_labels=1)

4.3 Step6 创建评估函数优化

因为输出只有一个结果,所以我们规定,当输出的值大于0.5时,我们认为预测试为1(相似)。反之,预测值为0(不相似)。还有,上面将label转换成了float,现在需要转回int。

def eval_metric(eval_predict):predictions, labels = eval_predictpredictions = [int(p > 0.5) for p in predictions] # 优化部分labels = [int(l) for l in labels]# predictions = predictions.argmax(axis=-1)acc = acc_metric.compute(predictions=predictions, references=labels)f1 = f1_metirc.compute(predictions=predictions, references=labels)acc.update(f1)return acc

4.4 Step11 模型预测优化

因为pipeline中没有对softmax后的结果进行处理,所以我们只需要获取模型的原始输出,不需要进行任何后处理,所以设置参数function_to_apply="none"。然后自己处理原始数据:当模型返回的score大于0.5时,预测标签为“相似”。反之,则为“不相似”。

result = pipe({"text": "我喜欢北京", "text_pair": "天气怎样"}, function_to_apply="none")
result["label"] = "相似" if result["score"] > 0.5 else "不相似"

http://www.cadmedia.cn/news/13617.html

相关文章:

  • 疫情防控最新动态优就业seo课程学多久
  • 重庆高端网站建设公司百度新闻搜索
  • 医院工程建设网站头条搜索站长平台
  • 西安做营销型网站建设今日国内新闻摘抄十条
  • 固镇网站建设哪家好?网络营销具有哪些优势和吸引力
  • 站长推荐黄色万能软文范例800字
  • 如何建立网站的英文版app注册推广平台
  • 网站title重复的后果今日头条新闻下载安装
  • 西安分销商城网站建设网络销售推广是做什么的具体
  • 河南建设工程招标网站活动营销的方式有哪些
  • 网站建设代码好难啊太原整站优化排名外包
  • 山东省优质高职院校建设网站微营销推广软件
  • wordpress弹窗登录注册插件优化大师app下载
  • 河源市住房建设局网站沈阳网站建设公司
  • 上海免费网站建设模板宁波网站推广公司价格
  • 普陀区网站建设公司数据营销
  • 台州市建设厅网站网站域名解析ip查询
  • 一个网站需要多少钱长沙的seo网络公司
  • 成都户外网站建设深圳发布最新通告
  • 太原做网站的公司软文是什么文章
  • 域名阿里云浙江专业网站seo
  • 免费网站建设翻译广州代运营公司有哪些
  • 建筑设计人才招聘优化seo报价
  • 模板网站制作多少钱韩国日本比分
  • 惠济区城乡建设局网站宁波网站排名优化seo
  • 视频号的网站链接如何进行搜索引擎优化
  • 平面设计网站模板网站推广怎么做有效果
  • 万全县城乡建设网站外汇交易平台
  • 网站的设计与制作阅读第2版设计网站排行
  • 济南网站建设 力选聚搜网络软文的概念是什么