news 2026/7/25 6:42:33

基于spaCy的中文命名实体识别实战:从新闻文本中提取人物、地点与事件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于spaCy的中文命名实体识别实战:从新闻文本中提取人物、地点与事件

在实际技术项目中,我们经常需要处理各种非结构化或半结构化的数据,例如来自社交媒体、新闻、活动报道的文本。这些数据通常包含丰富的实体信息,如人名、地点、事件、作品等。如何从一篇简短的新闻报道中,自动、准确地提取出这些关键信息,并将其结构化存储,是自然语言处理(NLP)领域的一个经典问题——命名实体识别(NER)。本文将以一则虚构的艺术展览开幕新闻“即兴生活家•Doris的环球感官艺术实验”为分析样本,带你从零开始,使用 Python 和主流的 NLP 库,构建一个能够自动识别并提取其中人物、地点、事件等实体的实战项目。适合对 NLP 感兴趣,希望将理论知识应用于具体文本分析场景的开发者。

我们将使用spaCy这个强大的工业级 NLP 库作为核心工具。它不仅提供了预训练的高精度模型,还拥有清晰的 API 和高效的流水线,非常适合快速构建原型并理解 NER 的完整流程。本文会详细解释从环境搭建、模型加载、文本处理到结果分析和优化的每一步,并重点说明如何解读模型输出、处理边界情况,以及将提取结果转换为结构化的 JSON 数据。最终,你将获得一个可以处理类似新闻稿的实体提取脚本,并理解其背后的技术细节。

1. 理解命名实体识别(NER)与我们的任务目标

命名实体识别是信息抽取的基础任务,旨在识别文本中具有特定意义的实体,并将其归类到预定义的类别中,如人物(PERSON)、组织机构(ORG)、地点(GPE/LOC)、日期(DATE)等。

对于“即兴生活家•Doris的环球感官艺术实验展览开幕”这则新闻,我们期望的提取结果可能包括:

  • 人物(PERSON): “Doris”(可能指代艺术家)。
  • 事件/作品(WORK_OF_ART): “即兴生活家•Doris的环球感官艺术实验”(整个展览名称可能被识别为作品或事件)。
  • 事件类型(EVENT): “展览开幕”。
  • 地点(FAC/LOC): 新闻中若提及举办地点,如“北京798艺术区”,则应被识别。
  • 日期(DATE): 开幕的具体日期,如“2023年10月27日”。

spaCy 的预训练模型内置了这些常见的实体类型。我们的技术主线是:加载模型 -> 处理文本 -> 解析实体 -> 结构化输出 -> 评估与优化

注意:预训练模型基于大量通用文本训练,对特定领域(如艺术、医疗、法律)的实体识别可能不够精准。本文主要展示通用流程,文末会讨论针对领域文本的优化方向。

2. 环境准备与依赖配置

首先需要建立一个干净的 Python 环境并安装必要的库。推荐使用condavenv创建虚拟环境。

2.1 创建并激活虚拟环境

# 使用 conda conda create -n nerdemo python=3.9 conda activate nerdemo # 或使用 venv python -m venv nerdemo # Windows nerdemo\Scripts\activate # Linux/Mac source nerdemo/bin/activate

2.2 安装核心库

我们将安装spaCy及其对应的中文预训练模型。spaCy 提供了不同大小和精度权衡的模型,zh_core_web_sm是一个较小的中文模型,适合快速实验。

pip install spacy

安装完成后,需要下载中文语言模型。spaCy 不将模型与库本身捆绑,需要单独下载。

python -m spacy download zh_core_web_sm

如果下载速度慢,可以考虑使用国内镜像源先安装pip包,但模型下载命令通常仍需从 spaCy 官方仓库获取。

2.3 验证安装

创建一个简单的 Python 脚本verify_env.py来测试环境和模型是否正常工作。

import spacy # 尝试加载中文模型 try: nlp = spacy.load("zh_core_web_sm") print("spaCy 中文模型加载成功!") # 打印当前流水线组件 print("流水线组件:", nlp.pipe_names) except Exception as e: print(f"模型加载失败: {e}")

运行该脚本:

python verify_env.py

预期看到“spaCy 中文模型加载成功!”以及流水线组件列表,其中应包含tok2vec,tagger,parser,ner,attribute_ruler,lemmatizerner的存在证明 NER 组件已就绪。

3. 构建实体提取的最小可运行案例

环境就绪后,我们开始编写核心代码。首先处理我们的示例文本。

3.1 编写基础提取脚本

创建一个新文件extract_entities.py

import spacy import json def extract_entities_from_text(text): """ 从给定文本中提取命名实体并结构化返回。 """ # 加载预训练的中文模型 nlp = spacy.load("zh_core_web_sm") # 使用模型处理文本 doc = nlp(text) # 提取实体信息 entities = [] for ent in doc.ents: entity_info = { "text": ent.text, # 实体在文本中的字符串 "label": ent.label_, # 实体类型(如PERSON, GPE) "label_desc": spacy.explain(ent.label_), # 类型描述 "start_char": ent.start_char, # 在原文中的起始位置 "end_char": ent.end_char # 在原文中的结束位置 } entities.append(entity_info) return entities if __name__ == "__main__": # 我们的示例新闻文本 sample_text = """ “即兴生活家•Doris的环球感官艺术实验”展览于2023年10月27日在北京798艺术区UCCA Lab正式开幕。 本次展览由知名策展人李华策划,集中展示了艺术家Doris近年来在全球范围内进行的感官艺术探索成果。 展览将持续至2023年12月31日。 """ print("原始文本:") print(sample_text) print("\n" + "="*50 + "\n") # 执行实体提取 extracted_entities = extract_entities_from_text(sample_text) # 打印结果 print("提取到的实体列表:") for idx, ent in enumerate(extracted_entities, 1): print(f"{idx}. 文本: 『{ent['text']}』") print(f" 类型: {ent['label']} ({ent['label_desc']})") print(f" 位置: [{ent['start_char']}:{ent['end_char']}]") print() # 将结果保存为JSON文件,便于后续使用 output_data = { "original_text": sample_text, "entities": extracted_entities } with open('extracted_entities.json', 'w', encoding='utf-8') as f: json.dump(output_data, f, ensure_ascii=False, indent=2) print("实体信息已保存至 'extracted_entities.json'")

3.2 运行并分析结果

在命令行中运行脚本:

python extract_entities.py

你将看到类似以下的输出(具体结果可能因模型版本有细微差异):

原始文本: “即兴生活家•Doris的环球感官艺术实验”展览于2023年10月27日在北京798艺术区UCCA Lab正式开幕。本次展览由知名策展人李华策划,集中展示了艺术家Doris近年来在全球范围内进行的感官艺术探索成果。展览将持续至2023年12月31日。 ================================================== 提取到的实体列表: 1. 文本: 『2023年10月27日』 类型: DATE (Absolute or relative dates or periods) 位置: [25:38] 2. 文本: 『北京』 类型: GPE (Countries, cities, states) 位置: [39:41] 3. 文本: 『李华』 类型: PERSON (People, including fictional) 位置: [68:70] 4. 文本: 『Doris』 类型: PERSON (People, including fictional) 位置: [75:80] 5. 文本: 『2023年12月31日』 类型: DATE (Absolute or relative dates or periods) 位置: [108:121]

3.3 结果解读与初步分析

从输出中,我们可以看到模型成功识别了:

  • 日期(DATE):开幕日期和结束日期。
  • 地理政治实体(GPE):“北京”被正确识别为城市。
  • 人物(PERSON):“李华”和“Doris”被识别为人名。

然而,也存在明显的漏识别潜在误识别

  1. 漏识别
    • “798艺术区”、“UCCA Lab” 作为具体地点设施(FAC)未被识别。
    • “即兴生活家•Doris的环球感官艺术实验” 作为作品/事件名称(WORK_OF_ART/EVENT)未被识别。
    • “展览开幕” 作为事件(EVENT)未被单独识别。
  2. 识别不完整
    • “北京798艺术区UCCA Lab” 是一个复合地点,模型只识别了“北京”。对于中文地址,模型有时难以处理嵌套或未登录词。

这是预训练模型的典型表现:对通用实体(如日期、人名、城市)识别较好,但对专业领域、复合实体或新词识别能力有限。

4. 深入解析 spaCy NER 流程与关键参数

要优化结果,必须理解 spaCy 的工作机制。

4.1 spaCy 文档(Doc)对象与实体(Span)

nlp(text)被调用时,spaCy 会依次执行流水线中的组件,最终生成一个Doc对象。Doc对象包含了文本的词汇化、句法分析和实体识别等所有信息。

doc = nlp(sample_text) # 访问句子(基于依存句法分析) for sent in doc.sents: print(f"句子: {sent.text}") # 访问词符(Token) for token in doc: print(f"{token.text:<10} {token.pos_:<8} {token.dep_:<12} {token.ent_type_}") # 词性、依存关系、实体类型

doc.ents返回的是一个Span对象的元组,每个Span代表一个识别出的实体。我们可以访问其各种属性。

4.2 实体类型标签说明

spaCy 的模型使用一套标准的实体标签集。了解这些标签对后续处理和规则补充至关重要。以下是常见的中文实体标签:

标签全称描述示例
PERSONPeople真实或虚构的人物李华、Doris、张三
NORPNationalities/Religious/Political Groups民族、宗教、政治团体汉族、佛教徒、民主党
FACFacilities建筑、机场、高速公路等设施798艺术区、鸟巢、首都机场
ORGOrganizations公司、机构、协会等组织UCCA Lab、阿里巴巴、清华大学
GPEGeo-Political Entities国家、城市、州省等行政区划中国、北京、加州
LOCLocations非GPE的地理位置,如山脉、水体喜马拉雅山、太平洋
PRODUCTProducts物体、车辆、食品等产品iPhone、Model S、普洱茶
EVENTEvents命名的事件,如战争、会议、赛事奥运会、第二次世界大战
WORK_OF_ARTWorks of Art书籍、歌曲、绘画等作品名称《红楼梦》、“即兴生活家...”
DATEDates绝对或相对的日期或时期2023年10月27日、明天、上世纪
TIMETimes一天内的时间下午三点、中午
PERCENTPercentages百分比50%、百分之百
MONEYMonetary Values货币价值100元、$50
QUANTITYQuantities度量衡、数量10公斤、200米
ORDINALOrdinal Numbers序数词第一、第三名
CARDINALCardinal Numbers基数词一、两个、100

在我们的例子中,“北京”被标记为GPE而非FAC,因为模型更倾向于将其识别为城市行政区划。对于“798艺术区”,通用模型可能未将其作为已知设施收录。

4.3 可视化实体

spaCy 提供了内置的displacy模块用于可视化依存关系和实体,非常适合调试和演示。

from spacy import displacy # 渲染实体识别结果,保存为HTML html = displacy.render(doc, style="ent", page=True) with open("entities_visualization.html", "w", encoding="utf-8") as f: f.write(html) print("实体可视化HTML文件已生成: entities_visualization.html") # 也可以在Jupyter Notebook中直接显示 # displacy.render(doc, style="ent", jupyter=True)

打开生成的 HTML 文件,你可以看到文本中高亮显示的实体及其类型,非常直观。

5. 优化实体识别结果:规则与后处理

单纯依赖预训练模型往往不够。我们可以通过规则匹配后处理逻辑来提升准确率。spaCy 的MatcherPhraseMatcher是强大的工具。

5.1 使用 PhraseMatcher 补充特定实体

假设我们知道“UCCA Lab”是一个重要的组织机构,但模型没有识别。我们可以用PhraseMatcher将其固定匹配为ORG

from spacy.matcher import PhraseMatcher def extract_entities_with_rules(text): nlp = spacy.load("zh_core_web_sm") doc = nlp(text) # 初始化短语匹配器 matcher = PhraseMatcher(nlp.vocab, attr="LOWER") # 忽略大小写匹配 # 定义我们要补充的短语列表及其对应实体标签 patterns = { "ORG": ["UCCA Lab", "尤伦斯当代艺术中心"], "FAC": ["798艺术区"], "EVENT": ["展览开幕"], "WORK_OF_ART": ["即兴生活家•Doris的环球感官艺术实验"] } for label, phrases in patterns.items(): # 为每个短语创建Doc模式对象 patterns_list = [nlp.make_doc(phrase) for phrase in phrases] matcher.add(label, patterns_list) # 在文档上运行匹配器 matches = matcher(doc) # 获取模型识别的原始实体列表(转换为可修改的列表) original_ents = list(doc.ents) # 处理匹配结果,避免与已有实体重叠 for match_id, start, end in matches: label = nlp.vocab.strings[match_id] span = doc[start:end] # 检查新实体是否与已有实体重叠 if not any(ent.start <= start < ent.end or ent.start < end <= ent.end for ent in original_ents): # 创建新的Span并添加到实体列表 new_ent = spacy.tokens.Span(doc, start, end, label=label) original_ents.append(new_ent) # 将更新后的实体列表赋值回doc.ents doc.ents = original_ents # 后续提取逻辑与之前相同 entities = [] for ent in doc.ents: entity_info = { "text": ent.text, "label": ent.label_, "label_desc": spacy.explain(ent.label_) or "自定义规则", "start_char": ent.start_char, "end_char": ent.end_char } entities.append(entity_info) return entities, doc if __name__ == "__main__": sample_text = """“即兴生活家•Doris的环球感官艺术实验”展览于2023年10月27日在北京798艺术区UCCA Lab正式开幕。""" entities, processed_doc = extract_entities_with_rules(sample_text) print("优化后提取到的实体:") for ent in entities: print(f"『{ent['text']}』 -> {ent['label']} ({ent['label_desc']})") # 可视化优化后的结果 html = displacy.render(processed_doc, style="ent", page=True) with open("entities_optimized.html", "w", encoding="utf-8") as f: f.write(html)

运行后,你会发现“UCCA Lab”、“798艺术区”、“展览开幕”和完整的展览名称都被成功识别并赋予了正确的标签。

5.2 后处理:合并与修正实体

有时模型会识别出碎片化的实体,例如将“北京798艺术区”识别为“北京”(GPE)和“艺术区”(可能识别为其他类型或未识别)。我们可以通过后处理逻辑来合并相邻的、语义相关的实体。

def merge_adjacent_entities(entities_list, doc_text): """ 一个简单的后处理示例:合并相邻的GPE和FAC实体。 例如将 ['北京', '798艺术区'] 合并为 '北京798艺术区' (FAC)。 这是一个启发式规则,实际应用需要更复杂的逻辑。 """ if not entities_list: return entities_list merged_entities = [] i = 0 while i < len(entities_list): current = entities_list[i] # 检查当前实体是否为GPE,且下一个实体是否为FAC并与之相邻 if (i + 1 < len(entities_list) and current['label'] == 'GPE' and entities_list[i+1]['label'] == 'FAC' and current['end_char'] == entities_list[i+1]['start_char']): # 合并 merged_text = doc_text[current['start_char']:entities_list[i+1]['end_char']] merged_ent = { 'text': merged_text, 'label': 'FAC', # 合并后通常以更具体的标签为准 'label_desc': 'Facility (Merged)', 'start_char': current['start_char'], 'end_char': entities_list[i+1]['end_char'] } merged_entities.append(merged_ent) i += 2 # 跳过下一个实体,因为它已被合并 else: merged_entities.append(current) i += 1 return merged_entities # 在提取函数中调用后处理 entities_raw, processed_doc = extract_entities_with_rules(sample_text) doc_text = sample_text entities_merged = merge_adjacent_entities(entities_raw, doc_text) print("后处理合并后的实体:") for ent in entities_merged: print(f"『{ent['text']}』 -> {ent['label']}")

6. 将结果结构化并输出为实用格式

识别出的实体需要被有效存储和利用。除了之前用到的 JSON,我们还可以将其转换为更适合数据库存储或下游任务(如知识图谱构建)的格式。

6.1 输出为结构化的 CSV 文件

CSV 格式便于用 Excel 打开或导入数据库。

import csv def save_entities_to_csv(entities, filename='entities.csv'): if not entities: print("没有实体可保存。") return # 定义CSV列 fieldnames = ['text', 'label', 'label_desc', 'start_char', 'end_char'] with open(filename, 'w', newline='', encoding='utf-8-sig') as csvfile: # utf-8-sig 解决Excel中文乱码 writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() for ent in entities: writer.writerow(ent) print(f"实体已保存至 {filename}") # 使用优化并合并后的实体 save_entities_to_csv(entities_merged)

6.2 输出为嵌套的 JSON 结构

对于更复杂的关系,可以按实体类型分组。

def group_entities_by_type(entities): grouped = {} for ent in entities: label = ent['label'] if label not in grouped: grouped[label] = [] # 移除分组中不需要的label_desc,避免冗余 grouped[label].append({ 'text': ent['text'], 'position': [ent['start_char'], ent['end_char']] }) return grouped grouped_data = group_entities_by_type(entities_merged) output_json = { "metadata": { "source_text_preview": sample_text[:100] + "...", "entity_count": len(entities_merged), "type_count": len(grouped_data) }, "entities_grouped": grouped_data } with open('entities_grouped.json', 'w', encoding='utf-8') as f: json.dump(output_json, f, ensure_ascii=False, indent=2) print("分组实体信息已保存至 'entities_grouped.json'")

7. 常见问题排查与优化方向

在实际应用过程中,你可能会遇到以下问题。

7.1 模型加载或运行报错

问题现象可能原因检查与解决
OSError: [E050] Can‘t find model ‘zh_core_web_sm’.模型未下载或下载不完整。1. 确认虚拟环境已激活。
2. 运行python -m spacy download zh_core_web_sm
3. 检查网络连接,或尝试下载模型文件后离线安装。
MemoryError或进程被杀死文本过长,超出内存。1. 将长文本分割成句子或段落分别处理。
2. 使用nlp.pipe流式处理大批量文本,它更节省内存。
识别结果完全不对或为空1. 加载了错误的语言模型(如用英文模型处理中文)。
2. 文本编码问题。
1. 确认spacy.load()中的模型名称正确。
2. 确保输入文本是 Unicode 字符串(Python 3 中默认)。

7.2 实体识别不准确

这是 NER 任务的核心挑战。

  • 漏识别(False Negative)

    • 原因:实体不在模型词汇表中(如新词、专业术语);实体边界模糊;上下文信息不足。
    • 解决
      1. 规则补充:如上文所示,使用MatcherPhraseMatcher添加领域词典。
      2. 模型微调:收集标注数据,在预训练模型基础上进行迁移学习。这是最有效但成本最高的方法。
      3. 尝试更大/更专的模型:spaCy 可能有zh_core_web_trf(基于 Transformer 的模型),精度更高但速度慢。
  • 误识别(False Positive)

    • 原因:模型将非实体词串误判为实体。
    • 解决
      1. 后处理过滤:根据实体长度、上下文词性等规则过滤掉不合理的实体。例如,一个单字且不是常见姓氏的词被识别为PERSON的可能性较低。
      2. 自定义模型:通过标注错误样本并重新训练来纠正。
  • 类型错误(Type Error)

    • 原因:模型对实体类型的判断有误。
    • 解决:同样可以通过规则后处理(如:如果文本以“公司”、“集团”结尾,且被识别为PERSON,则改为ORG)或模型微调来解决。

7.3 性能优化建议

  • 批量处理:使用nlp.pipe(texts)代替循环调用nlp(text),效率更高。
    texts = [“文本1”, “文本2”, ...] for doc in nlp.pipe(texts, batch_size=50): # batch_size可调整 process(doc)
  • 禁用不需要的流水线组件:如果只需要 NER,可以禁用parsertagger以提升速度。
    nlp = spacy.load(“zh_core_web_sm”, disable=[“parser”, “tagger”]) # 或者只启用ner # nlp = spacy.load(“zh_core_web_sm”, enable=[“ner”])
  • 考虑更快的模型zh_core_web_sm是速度最快的,zh_core_web_lg更准但更慢,zh_core_web_trf最准也最慢。

8. 生产环境最佳实践与扩展方向

将 NER 应用于实际项目时,需要考虑更多工程化因素。

8.1 生产环境检查清单

  1. 依赖与版本锁定:使用requirements.txtPipfile精确锁定spacy和模型版本,避免因版本升级导致结果不一致。
    spacy==3.7.2 https://github.com/explosion/spacy-models/releases/download/zh_core_web_sm-3.7.0/zh_core_web_sm-3.7.0-py3-none-any.whl
  2. 模型管理:不要依赖在线下载。将模型文件(.whl或解压后的目录)纳入项目仓库或通过内部文件服务器分发,确保部署一致性。
  3. 错误处理与日志:在实体提取函数中加入健壮的错误处理(如文本为空、模型加载失败、处理超时等),并记录详细的日志,便于排查。
  4. 配置化规则:将PhraseMatcher的规则(如领域词库)放在外部配置文件(如 JSON、YAML)中,便于非开发人员维护和更新。
  5. 服务化:考虑将 NER 功能封装为 RESTful API 或 gRPC 服务,供其他系统调用。注意线程安全和模型加载的生命周期管理。

8.2 扩展方向:从提取到应用

  1. 关系抽取:识别实体间的关系。例如,从“李华策划展览”中提取(李华,策划,展览)三元组。这需要更复杂的模型或规则。
  2. 链接到知识库:将识别出的实体(如“北京”)链接到知识库(如百度百科、Wikidata)中的特定条目,获取更多属性信息。
  3. 构建事件时间线:结合日期(DATE)和事件(EVENT)实体,可以尝试从多篇相关报道中构建事件的发展时间线。
  4. 情感/观点分析:分析文本中对特定实体(如“Doris”、“展览”)的情感倾向是正面、负面还是中性。
  5. 自定义模型训练:如果领域文本(如医疗报告、法律文书)的实体识别效果不佳,最终需要走标注数据 -> 训练/微调模型的路径。spaCy 提供了完善的训练流程和工具(spacy train)。

通过本文的实践,你已经掌握了使用 spaCy 进行中文命名实体识别的基础流程、结果分析方法和常见优化技巧。处理类似“展览开幕”这样的新闻文本,核心在于理解模型的局限性,并灵活运用规则和后处理来弥补。下一步,可以尝试用更复杂的文本(如长篇行业报告)测试你的提取脚本,并着手规划如何将其集成到一个完整的信息处理系统中。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/25 6:42:30

程序员必备:大模型技能入门与实战指南

1. 为什么每个程序员都需要掌握大模型技能&#xff1f; 十年前我刚入行时&#xff0c;程序员的核心竞争力是算法和数据结构。五年前&#xff0c;云计算和微服务架构成为必备技能。而现在&#xff0c;大模型正在重塑整个技术栈的生态位。作为经历过三次技术浪潮的老兵&#xff0…

作者头像 李华
网站建设 2026/7/25 6:41:22

Godot 4 ShaderMaterial实现动态交互水波纹:从原理到工程实践

1. 项目概述&#xff1a;从静态到动态的交互式水面在游戏和交互式应用中&#xff0c;水面的表现力直接关系到场景的沉浸感。一个静态的、毫无波澜的水面&#xff0c;即便贴图再精美&#xff0c;也显得死气沉沉。而一个能够响应角色脚步、雨滴、甚至玩家点击&#xff0c;泛起层层…

作者头像 李华
网站建设 2026/7/25 6:39:15

UABEAvalonia:跨平台Unity资源编辑器的架构解析与实战应用

1. 项目概述&#xff1a;为什么我们需要一个跨平台的Unity资源编辑器&#xff1f;如果你是一个Unity开发者&#xff0c;或者对游戏资源逆向、Mod制作、资产提取感兴趣&#xff0c;那你大概率听说过UABE&#xff08;Unity Assets Bundle Extractor&#xff09;这个老牌工具。它在…

作者头像 李华
网站建设 2026/7/25 6:37:21

Java后端开发实战:新冠物资管理系统设计与实现

大家好&#xff0c;我是专注于Java后端开发的技术博主。在疫情常态化管理的背景下&#xff0c;物资的精准、高效管理变得尤为重要。无论是社区、医院还是企业&#xff0c;都面临物资入库、出库、盘点、统计等一系列复杂流程。手动记录不仅效率低下&#xff0c;还容易出错&#…

作者头像 李华
网站建设 2026/7/25 6:36:59

LangChain框架解析:构建大语言模型应用的全套解决方案

1. LangChain 是什么&#xff1f;LangChain 是一个用于构建基于大语言模型&#xff08;LLM&#xff09;应用程序的开源框架。它就像给大语言模型装上了"手脚"和"工具箱"&#xff0c;让这些原本只能处理文本的模型具备了连接外部数据、调用工具、管理对话流…

作者头像 李华
网站建设 2026/7/25 6:34:46

Qwen3.5模型架构解析与生产部署实践

1. Qwen3.5系列模型技术解析1.1 模型架构设计理念Qwen3.5作为通义千问系列的最新迭代版本&#xff0c;在模型架构上延续了Transformer解码器的经典设计&#xff0c;但在多个关键维度进行了针对性优化。最显著的变化在于采用了动态稀疏注意力机制&#xff0c;这种设计允许模型在…

作者头像 李华