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

大学网站的设计方案营销型企业网站 网络服务

大学网站的设计方案,营销型企业网站 网络服务,海安公司网站建设,建网站义乌命名实体识别 (NER) 是自然语言处理 (NLP) 中的一项重要任务#xff0c;用于自动识别和分类文本中的实体#xff0c;例如人物、位置、组织等。尽管它很重要#xff0c;但手动注释大型数据集以进行 NER 既耗时又费钱。受本文 ( https://huggingface.co/blog/synthetic-data-s…命名实体识别 (NER) 是自然语言处理 (NLP) 中的一项重要任务用于自动识别和分类文本中的实体例如人物、位置、组织等。尽管它很重要但手动注释大型数据集以进行 NER 既耗时又费钱。受本文 ( https://huggingface.co/blog/synthetic-data-save-costs#31-prompt-an-llm-to-annotate-your-data ) 的启发我们讨论了一种创新方法使用 qwen2.5:7b 生成的合成数据来有效应对这些挑战。通过使用合成数据我们可以有效地训练 NER 模型以从大量文本语料库例如金融新闻文章中提取有意义的信息。 在本教程中我们将演示如何使用 SpaCy 构建 NER 管道SpaCy 是一个流行的开源 NLP 库以其速度和效率而闻名。SpaCy 广泛用于标记化、词性标记和命名实体识别等任务尤其擅长在 CPU 上快速处理文本。其强大的架构使其无需专门的硬件即可处理大量数据使其成为许多实际应用的理想选择。 我们将使用 SmoothNLP金融新闻数据集 进行案例研究展示合成数据如何显著提高 NER 模型的性能并降低与传统数据注释方法相关的成本。通过将合成数据与 SpaCy 集成我们旨在创建可扩展且准确的 NER 解决方案来处理大规模新闻数据集。 我们的方法 为了克服传统方法的局限性我们利用合成数据生成在新闻文章中进行 NER。以下是我们流程的分步概述 步骤 1数据收集 数据下载地址 步骤 2使用ollama加载 qwen2.5-7b 1、下载ollama ollama下载地址以windows版为例 2、下载qwen2.5-7b模型 ollama pull qwen2.5 如下图所示为下载完成 我们使用langchain_ollama来启用语言模型 qwen2.5-7b 来注释收集的数据。以下是如何加载模型 from langchain_ollama import OllamaLLMmodel OllamaLLM(modelqwen2.5:7b) model.invoke(你是谁) 这里发生了什么事 qwen2.5-7b模型我们加载一个大型预先训练的 Qwen模型 步骤 3准备数据集 1.设置模型后我们加载样本数据并准备数据集以供处理 import torch from transformers import AutoTokenizer, AutoModelForCausalLM import pandas as pd from tqdm import tqdm from pydantic import BaseModel, Field, ValidationError from typing import List from datasets import Dataset import spacy from spacy.tokens import DocBin, Span import re import jsonnlp spacy.load(zh_core_web_sm)financial_news_sample pd.read_excel(./SmoothNLP金融新闻数据集样本20k.xlsx) financial_news_sample.head() 数据如图所示  2.合并标题和内容 financial_news_sample[text] financial_news_sample[title].str.cat(financial_news_sample[content], sep\n) financial_news_sample.head() news_texts [text for text in list(financial_news_sample[text]) if type(text)str][-100:] dataset Dataset.from_dict({text: news_texts}) 步骤 4使用 SpaCy 对文本进行标记 我们使用 SpaCy 对文本数据进行标记。标记化是将文本拆分为单个单词或子单词的过程。 def tokenize_with_spacy(texts):tokenized_texts []token_offsets_list []for text in texts:if isinstance(text, str):doc nlp(text)tokens [token.text for token in doc]token_offsets [(token.idx, token.idx len(token.text)) for token in doc]tokenized_texts.append(tokens)token_offsets_list.append(token_offsets)else:raise ValueError(fExpected a string but got {type(text)})return tokenized_texts, token_offsets_list 第 5 步准备 Qwen 的输入 def prepare_qwen_input(tokenized_texts):return [ .join(tokens) for tokens in tokenized_texts] 步骤 6查询我们的 Qwen 的提示 接下来我们创建一个查询 LLM 的系统提示。由于我们想从新闻文章中提取结构化信息因此我们要求 LLM 以 JSON 格式响应。我们还包含示例输入和输出以指导模型正确构建其响应。 system_prompt 你是一个在自然语言处理和信息提取方面受过训练的高级人工智能。你的任务是阅读以下新闻文章并提取文中提到的所有人名。对于识别的每个人名提供具有以下结构的JSON输出[ {entity_type:人名,entity_value:内容中的人名} ] 确保提取人名的确切字符串而不进行任何更正或转换。不要提供任何解释。仅使用JSON结构化数据进行响应。###示例1 输入 李明远当选陕西省西安市市长 新华社西安2月19日电 西安市第十六届人民代表大会第四次会议2月18日选举李明远为西安市人民政府市长。输出 [ {entity_type:人名,entity_value:李明远}, ]###示例2 输入 原央行征信中心主任王煜调任中国金融培训中心主任 中国金融培训中心官网显示原中国人民银行征信中心主任王煜已出任该中心主任。 王煜毕业于五道口央行研究生部在央行体系工作多年先后出任过央行货币政策司副司长、央行货币政策委员会秘书长随后王煜进入征信领域先后出任央行征信管理局局长、中国人民银行征信中心主任。(澎湃)输出 [ {entity_type:人名,entity_value:王煜} ]###示例3 输入 人民大学教授叶林完善法制体系 提高我国期货市场核心竞争力本报见习记者 王宁中国期货市场经过二十多年的探索发展已经成为金融体系的重要组成部分为宏观决策部门预研预判经济形势、微观企业进行风险管理提供了有力支持。随着期货市场各项创新以及国际化业务的深入推进需要的法律支持也越来越多“尽快出台《期货法》”的呼声越来越高。法治强则市场兴。如今中国期货市场已经开启了多元、开放的新时代这对中国期货市场的法律制度体系提出了更高要求。近日记者采访了中国人民大学教授叶林深入解读我国期货市场立法的探索、困境及出台《期货法》的重要意义。记者目前我国期货市场的有关法律法规都有哪些相较国际期货市场的主要差距是什么叶林二十多年来我国期货市场法制建设取得了显著的进步逐渐摸索出了一条适应期货市场发展需要、符合期货市场规律、有中国特色的期货市场法制建设道路。2007年3月国务院颁布了《期货交易管理条例》2012年10月、2013年7月、2016年2月和2017年3月进行了四次修订。目前初步形成了以《期货交易管理条例》、最高人民法院司法解释为支撑以部门规章和规范性文件为配套以期货交易所、期货业协会自律规则为补充的期货市场法规体系。这一制度体系对于规范期货市场的稳定运行起到了积极作用但是相较域外期货市场法制而言存在法律位阶较低、民事规范不完整、跨境监管与协作规范缺失等问题法律制度并不完备。输出[ {entity_type:人名,entity_value:叶林}, {entity_type:人名,entity_value:王宁} ]请使用相同的格式继续执行任务。JSON 是一种轻量级的结构化数据格式易于通过编程进行解析因此非常适合自动化和一致性至关重要的机器学习流程。使用 JSON 可以明确定义提取的实体确保每个识别的实体都遵循标准结构具有“entity_type”和“entity_value”等字段。此结构简化了下游任务例如验证和存储并确保输出可以轻松集成到其他处理工具或库中。 在提示中提供示例是有益的因为它有助于指导语言模型理解所需的输出格式和结构。示例充当“指令调整”的一种形式向模型展示如何以特定方式响应从而降低生成的输出中出现错误和不一致的可能性。在我们的案例中使用多个输入文本示例与相应的 JSON 输出配对向模型展示如何一致地识别和格式化城市名称。这提高了模型响应的可靠性尤其是在应用于多样化和复杂的现实世界数据时。 步骤 7从模型响应中提取实体 系统提示准备好后我们定义一个函数来从模型的输出中提取实体 def extract_json_from_response(response):try:if isinstance(response, list):return responsematch re.search(r(\[.*), response, re.DOTALL)if match:json_content match.group(0).strip()if not json_content.endswith(]):json_content ]return json.loads(json_content)except json.JSONDecodeError as e:print(fFailed to decode JSON: {e})return [] 此函数在响应中查找 JSON 格式的数据并提取它确保即使响应结构不正确我们的管道仍然保持稳健。 步骤 8实体提取的批处理 然后我们设置批处理来有效地处理大型数据集 rom loguru import loggerdef predict_entities_in_batches(test_dataset, model, system_prompt, batch_size1):extracted_entities []for i in tqdm(range(0, len(test_dataset), batch_size), descProcessing batches):batch_texts test_dataset[i:i batch_size][text]batch_prompts [system_prompttext for text in batch_texts]logger.info(batch_prompts)results [model.invoke(batch_prompt) for batch_prompt in batch_prompts]for result in results:generated_text resultlogger.info(fresult::{result})assistant_response generated_textif assistant_response:entities extract_json_from_response(assistant_response)logger.info(fentities::{entities})extracted_entities.append(entities)else:extracted_entities.append(None)return extracted_entitiesprocessed_data predict_entities_in_batches(dataset, model, system_prompt) 当处理 Qwen2.5 等大型模型和大量数据集时高效的内存管理至关重要。批处理是一种策略它通过将数据集划分为较小的块或批次并按顺序处理每个批次来帮助管理内存使用量。这种方法可以防止系统内存耗尽因为整个数据集不需要一次加载到内存中。它还允许通过根据可用硬件调整批处理大小来更好地控制计算资源例如 GPU 内存。 使用批处理还可以优化并行性其中模型可以在一个批次内同时生成多个数据点的输出。这可以加快处理速度而不会使系统内存过载从而可以处理数据集如 SmoothNLP金融新闻数据集。此外在批次之间清除内存缓存有助于防止内存碎片化在处理非常大的数据集时可能会发生这种情况从而保持性能稳定性。总体而言批处理可确保计算效率和资源管理之间的平衡从而实现机器学习管道中大型数据集的可扩展处理。 步骤 9验证和错误处理 我们使用 Pydantic 模型验证提取的实体确保数据符合预期格式 from validators import validatorclass EntityList(BaseModel):def validate_entity_type(entities):entities_last []try:for entitie in entities:if entitie[entity_type] ! 人名:raise ValueError(f{v} is not a valid entity type)else:entities_last.append(entitie)except:passreturn entities_lastvalidated_data [] for i, entities in enumerate(processed_data):try:validated_output EntityList.validate_entity_type(entitiesentities)validated_data.append({text: dataset[i], entities: validated_output})except ValidationError as e:print(Validation error:, e)validated_data.append({text: dataset[i], entities: None}) 这可确保仅接受有效的实体类型例如city_names。如果实体类型与预期格式不匹配则会引发错误。 步骤 10准备 SpaCy 模型训练的数据 最后我们使用 SpaCy 的DocBin来存储处理后的数据包括实体跨度 def create_spans(doc, entities):Creates spaCy spans for detected entities in the text.spans []warnings []for entity in entities:entity_value entity.get(entity_value, ).strip()entity_type entity.get(entity_type, )if not entity_value:warnings.append(fSkipping empty entity for type: {entity_type})continuestart 0while True:start doc.text.find(entity_value, start)if start -1:breakend start len(entity_value)span doc.char_span(start, end, labelentity_type, alignment_modecontract)if span:spans.append(span)else:warnings.append(fCould not create span for entity: {entity_value} at position {start}-{end})start endreturn spans, warningsdef filter_overlapping_spans(spans):Filters out overlapping spans, keeping non-overlapping spans.filtered_spans []for span in sorted(spans, keylambda x: (x.start, -x.end)):if all(span.start s.end or span.end s.start for s in filtered_spans):filtered_spans.append(span)return filtered_spans def process_data(data_list):doc_bin DocBin(store_user_dataTrue)for item in tqdm(data_list, descProcessing Data, unitdoc):try:text item.get(text, )if not text.strip():continueentities item.get(entities, {}).get(entities, [])doc nlp(text)spans, warnings create_spans(doc, entities)doc.ents filter_overlapping_spans(spans)if warnings:doc._.warnings warningsdoc_bin.add(doc)except:passreturn doc_bindoc_bin process_data(validated_data) 拆分训练测试集并保存到spacy文件 split_ratio 0.8 split_idx int(len(validated_data) * split_ratio) doc_bin process_data(validated_data[:split_idx]) test_doc_bin process_data(validated_data[split_idx:])doc_bin.to_disk(./train.spacy) test_doc_bin.to_disk(./test.spacy) 结论 合成数据与 Qwen 等高级语言模型的集成对降低命名实体识别 (NER) 任务的成本和提高可扩展性具有重大影响。生成合成数据可以创建大型注释数据集而无需耗时且昂贵的手动标记过程从而可以快速训练用于各种 NER 应用程序的模型。大型语言模型 (LLM) 通过利用上下文理解从文本中提取有意义的信息提供了一种注释这些数据集的有效方法。合成数据生成和 LLM 相结合为开发高性能 NER 系统提供了一种可扩展的解决方案能够处理来自 SmoothNLP金融新闻数据集 的大规模文本语料库例如新闻文章。这种方法不仅可以降低注释成本还可以确保即使在数据需求很大的情况下也可以大规模训练和部署模型。
http://www.hkea.cn/news/14454982/

相关文章:

  • 快三竞猜网站建设wordpress更换域名还是之前链接
  • 天津做流产五洲网站wordpress文章名字相同的不发布
  • iis7搭建asp网站建设卡开通网银网站
  • 政务网站建设目标孝感网站建设孝感
  • 网站建设都需要定制小程序多少钱
  • 广州购物商城网站湘潭知名网站建设
  • 网站开发模板下载wordpress怎么增加语言包
  • 在线学习建设网站教育网站制作运营
  • 2018年的网站制作嵌入式项目外包平台
  • 开发区招聘信息湛江关键词优化平台
  • 怎么维护好网站godaddy网站建设教程
  • 案例查询网站网站建设合同附加协议
  • 房地产集团网站建设wordpress 自定义文章
  • 视频涉台互联网网站怎么做wordpress充值密码没有链接
  • 接做网站需要问什么条件wordpress加入mip
  • 成都装修网站制作多少钱wordpress登陆后台很慢
  • 企业网站货物查询怎么做建筑公司是干什么的
  • 制作网站系统网站建设推广书籍
  • 网站根目录文件夹有谁知道知乎网站是谁做的
  • 义乌哪里做网站好软件工程师考试报名
  • 做网做网站建设推书网
  • 四川网站建设方案个人做医疗类网站违法
  • 网站开发环境lmnp河北网站推广优化
  • 深圳市深圳市住房和建设局网站杭州市建设局网站
  • 郑州网站优化推广培训网站建设费计入什么费用
  • 深圳哪家网站设计比较好在线呼叫网页版
  • 网站建设公司类型360搜索引擎的特点
  • 房屋租赁网站开发背景微信辅助做任务网站
  • 朔州市网站建设做摄影网站的目的是什么
  • 广州 网站设计极致cms模板