\n\n### 最新文章\n\n\n /\n\n- 使用 Scikit-LLM 进行命名实体识别 AI 代理技能的 5 个最佳 GitHub 仓库 2026 年成为 AI 产品经理的路线图 开发者必备的 5 个 Docker 容器 Claude Haiku 5.5:新功能及如何用于快速、低成本的 AI 工作流 LangChain 与 LlamaIndex 对比:从零构建的建议\n\n## 热门文章\n\n- 7 个可替代付费订阅的开源 AI 工具\n\n- AI 软件克隆的兴起:为什么 REA 和 ArtCraft 正在病毒式传播\n\n- 开发者必备的 5 个 Docker 容器\n\n- LLM 推理工程的 5 个趣味项目\n\n- 2026 年掌握智能体 AI 系统的路线图\n\n- 2026 年值得了解的 10 个 Hugging Face 模型\n\n- Claude Haiku 5.5:新功能及如何用于快速、低成本的 AI 工作流\n\n- 2026 年可使用的 5 个免费 LLM API 提供商\n\n- 使用 Scikit-LLM 进行少样本文本分类\n\n- 信任 AI 生成代码前需要执行的 7 项检查\n\n#content_wrapper end\n\n© 2026\n\nGuiding Tech Media\n\n|\n\n关于\n\n联系我们\n\n广告合作\n\n隐私政策\n\n服务条款\n\n2026 年 10 月 21 日由 Iván Palomares Carrascosa 发布\n\nblank\n\n不,谢谢!\n\n/.main_wrapper\n\n\n\nnoptimize\n\n/noptimize","speakable":{"@type":"SpeakableSpecification","cssSelector":["[data-speakable='summary']","[data-speakable='takeaways']"]},"author":{"@type":"Organization","name":"KDnuggets","url":"https://www.kdnuggets.com"},"publisher":{"@type":"Organization","name":"traeai","url":"https://www.traeai.com","logo":{"@type":"ImageObject","url":"https://www.traeai.com/icon.svg"},"sameAs":["https://github.com/cq0206/traeai"]},"mainEntityOfPage":"https://www.traeai.com/articles/4e6b9af6-c681-4978-84be-4704efef5385"},{"@type":"WebSite","@id":"https://www.traeai.com/#website","url":"https://www.traeai.com","name":"traeai","description":"traeai 为开发者、研究员和内容团队筛选高质量 AI 技术内容,提供摘要、评分、趋势雷达与知识库产出。","inLanguage":["zh-CN","en"],"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.traeai.com/?q={search_term_string}"},"query-input":"required name=search_term_string"}},{"@type":"BreadcrumbList","@id":"https://www.traeai.com/articles/4e6b9af6-c681-4978-84be-4704efef5385#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"首页","item":"https://www.traeai.com/"},{"@type":"ListItem","position":2,"name":"文章","item":"https://www.traeai.com/brief"},{"@type":"ListItem","position":3,"name":"KDnuggets","item":"https://www.traeai.com/sources"},{"@type":"ListItem","position":4,"name":"Named Entity Recognition Using Scikit-LLM","item":"https://www.traeai.com/articles/4e6b9af6-c681-4978-84be-4704efef5385"}]}]}
KDnuggets

Named Entity Recognition Using Scikit-LLM

6.9内容质量

TL;DR · AI 摘要

Named Entity Recognition Using Scikit-LLM - KDnuggets publ: 21-Oct, 2026 - Blog Top Posts About - Topics AI Career Advic...

核心要点

  • 主题聚焦:Named Entity Recognition Using Scikit-LLM
  • 来源:KDnuggets,建议结合原文判断细节。
  • AI 分析暂不可用,本条为保底评分与摘要。
#AI#编程#前端#后端#云计算
打开原文

使用 Scikit-LLM 进行命名实体识别 - KDnuggets

publ: 2026年10月21日

  • 博客热门文章
  • 主题 AI 职业建议 计算机视觉 数据工程 数据科学 语言模型 机器学习 MLOps NLP 编程 Python SQL
  • 数据集
  • 活动
  • 资源 快速参考指南 推荐 技术简报
  • 广告

订阅电子报

#header end

/ad_wrapper

使用 Scikit-LLM 进行命名实体识别

通过大语言模型(LLM)的推理能力,只需简单几步即可构建标准化的自定义命名实体识别(NER)流水线。

作者:

Iván Palomares Carrascosa

,KDnuggets 技术内容专家,2026年10月21日发布于

语言模型

<div class="addthis_native_toolbox"></div>

介绍

从文本中提取结构化数据在数据分析和众多应用中都有广泛用途,包括构建预测性机器学习模型。命名实体识别(NER)就是典型示例:它通过识别、提取和分类相关信息,将无结构、杂乱的文本转化为结构化数据。

传统上,NER 一直使用传统自然语言处理(NLP)库来实现,但这些模型通常需要大量训练数据集和繁琐的微调才能学会识别自定义实体。幸运的是,Scikit-LLM 的出现将大语言模型(LLM)的推理能力引入该领域,帮助用户通过简单几步构建标准化机器学习流水线,适用于文本分类以外的多种任务,包括自定义 NER。

使用 Scikit-LLM 进行命名实体识别

该示例可在 Google Colab 笔记本中完整运行。它使用 Groq 的 LLM API 以完全依赖免费模型。前提条件是访问 Groq 网站,注册并生成自己的 API 密钥。生成后,仔细复制你的 API 密钥(只能执行一次),将其粘贴为 Google Colab 中的新 "Secret" 变量——位于 Colab 左侧的密钥图标处。在此处粘贴你复制的 API 密钥,并将该秘密变量命名为 GROQ_API_KEY。

完成这些步骤后,我们通过安装 Scikit-LLM 开始笔记本:

code
!pip install scikit-llm -q

现在是时候进入 Python 代码,第一步是初始化 Scikit-LLM 配置。该库采用 OpenAI API 标准设计,但允许我们使用 SKLLMConfig.set_gpt_url() 方法覆盖基础 URL,从而指向其他兼容提供商,例如 Groq:

code
from google.colab import userdata
from skllm.config import SKLLMConfig

# 从 Colab Secrets 安全检索 Groq API 密钥
groq_key = userdata.get('GROQ_API_KEY')

# 将 scikit-LLM 重定向到 Groq 的高速免费层级兼容端点
SKLLMConfig.set_gpt_url("https://api.groq.com/openai/v1")
SKLLMConfig.set_openai_key(groq_key)

接下来,我们为示例用例定义数据。与传统文本分类中每个文本示例都有关联的类别标签不同,LLM 驱动的 NER 的核心数据是实体字典:一组键值对列表,其中键代表要提取的类别,值是实体描述,这些描述将作为提示或指令,引导我们的 LLM 进行推理过程。

除了实体字典,我们还定义了一组与科技商业领域紧密相关的示例文本:

code
# 定义要提取的领域特定实体集,包括作为LLM指令的清晰描述
entities = {
    "EXECUTIVE": "公司的领导者或个人的全名。",
    "CORPORATION": "科技公司或企业的名称。",
    "PRODUCT": "特定的硬件设备、软件或技术特性。",
    "CITY": "地理地点或市镇。"
}

# 需要解析的非结构化文本数据
X_unstructured = [
    "Satya Nadella 在西雅图的峰会上宣布了 Microsoft 的 Copilot 集成。",
    "Elon Musk 监督了 Cybertruck 在德克萨斯州工厂的发布。",
    "Jensen Huang 在圣何塞展示了 Nvidia 的新 Blackwell 架构。"
]

这里是最关键的步骤:初始化并运行一个 Scikit-LLM 估计器,该估计器将包装我们选定提供商(Groq)的兼容预训练模型。对于命名实体识别(NER),需要使用的具体类称为 GPTExplainableNER。截至撰写本文时,与该对象兼容的免费层级模型是 openai/gpt-oss-20b。一旦模型初始化并封装到特定任务的 Scikit-LLM 对象中,并结合自定义实体,fit_transform() 将触发从原始文本中提取结构化实体的推理过程。

code
from skllm.models.gpt.tagging.ner import GPTExplainableNER

# 使用兼容工具的模型初始化NER估计器
ner = GPTExplainableNER(
    entities=entities, 
    model="custom_url::openai/gpt-oss-20b" 
)

# fit_transform 处理文本并提取结构化实体
extracted_data = ner.fit_transform(X_unstructured)

为了展示结果,我们按如下方式遍历原始文本和LLM返回的提取输出:

code
import ast

# 显示提取的实体并处理字符串序列化的输出
for text, data in zip(X_unstructured, extracted_data):
    print(f"原始文本: '{text}'")
    
    # 如果模型返回了字典的字符串表示形式,进行求值
    if isinstance(data, str):
        try:
            data = ast.literal_eval(data)
        except (ValueError, SyntaxError):
            # 如果LLM格式错误,作为后备方案
            print(f"  原始非结构化输出: {data}\n" + "-" * 50)
            continue
            
    # 数据是Python字典,允许通过 .items() 迭代
    for entity_type, extractions in data.items():
        print(f"  {entity_type}: {extractions}")
    print("-" * 50)

结果:

code
Original: 'Satya Nadella announced Copilot integrations for Microsoft at the summit in Seattle.'
  Raw unstructured output:
Satya Nadella 是一位知名公司的高管,具体是微软公司的首席执行官,符合 EXECUTIVE 的定义。
EXECUTIVE
Satya Nadella
宣布
Copilot 是微软开发的一项特定软件功能,符合 PRODUCT 的定义。
PRODUCT
Copilot
集成到
Microsoft 是一家科技公司的名称,符合 CORPORATION 的定义。
CORPORATION
Microsoft
在西雅图的峰会上
Seattle 是美国一个被认可的城市,符合 CITY 的定义。
CITY
Seattle
.
--------------------------------------------------
Original: 'Elon Musk supervised the rollout of the Cybertruck at the Texas facility.'
  Raw unstructured output:
"Elon Musk" 指的是特斯拉公司的首席执行官,一位知名公司的高管。根据定义,EXECUTIVE 是公司高管或个人的全名,因此 "Elon Musk" 符合该类别。
EXECUTIVE
Elon Musk
监督了
"Cybertruck" 是特斯拉开发的一款特定硬件产品,符合 PRODUCT 的定义,即特定的硬件设备、软件或技术功能。
PRODUCT
Cybertruck
在德克萨斯州的设施中
--------------------------------------------------
Original: 'Jensen Huang showcased the new Blackwell architecture for Nvidia in San Jose.'
  Raw unstructured output:
"Jensen Huang" 指的是英伟达公司的首席执行官,一位知名公司高管。根据定义,EXECUTIVE 是公司高管或个人的全名。
EXECUTIVE
Jensen Huang
展示了新的
"Blackwell architecture" 指的是英伟达发布的一种特定 GPU 架构,属于硬件技术功能,符合 PRODUCT 的定义。
PRODUCT
Blackwell architecture
用于
"Nvidia" 是一家科技公司的名称,符合 CORPORATION 的定义,即科技公司或企业的名称。
CORPORATION
Nvidia
在
"San Jose" 是加利福尼亚州的一座城市,符合 CITY 的定义,即地理区域或市镇。
CITY
San Jose
.
--------------------------------------------------

The raw outputs are not especially clean. To view a more thoroughly parsed result, the following helper code uses regular expressions to parse and post-process the outputs into a neatly structured format:

code
import re

def parse_extracted_data(raw_data):
    parsed_entities = {}
    # Find all entity blocks
    entity_blocks = re.findall(r"
(.*?)
", raw_data, re.DOTALL)
    for block in entity_blocks:
        tag_match = re.search(r"
(.*?)
", block)
        value_match = re.search(r"
(.*?)
", block)
        if tag_match and value_match:
            entity_type = tag_match.group(1)
            entity_value = value_match.group(1)
            if entity_type not in parsed_entities:
                parsed_entities[entity_type] = []
            parsed_entities[entity_type].append(entity_value)
    return parsed_entities

# Displaying the extracted entities in a cleaner format
print("\n--- Cleaned Extracted Entities ---")
for i, (text, raw_output) in enumerate(zip(X_unstructured, extracted_data)):
    print(f"Original Text {i+1}: '{text}'")
    cleaned_data = parse_extracted_data(raw_output)
    if cleaned_data:
        for entity_type, extractions in cleaned_data.items():
            print(f"  {entity_type}: {', '.join(extractions)}")
    else:
        print("  No entities found.")
    print("-" * 50)

结果:

code
--- Cleaned Extracted Entities ---
Original Text 1: 'Satya Nadella announced Copilot integrations for Microsoft at the summit in Seattle.'
  EXECUTIVE: Satya Nadella
  PRODUCT: Copilot
  CORPORATION: Microsoft
  CITY: Seattle
--------------------------------------------------
Original Text 2: 'Elon Musk supervised the rollout of the Cybertruck at the Texas facility.'
  EXECUTIVE: Elon Musk
  PRODUCT: Cybertruck
--------------------------------------------------
Original Text 3: 'Jensen Huang showcased the new Blackwell architecture for Nvidia in San Jose.'
  EXECUTIVE: Jensen Huang
  PRODUCT: Blackwell architecture
  CORPORATION: Nvidia
  CITY: San Jose

尽管设置简单,我们的NER流水线表现相当不错。

总结

本文演示了如何使用Scikit-LLM利用预训练的开源大语言模型(LLMs)进行命名实体识别(NER),这是自然语言处理中的一项任务,通过分析原始杂乱文本,根据领域特定实体提取结构化数据。只需极少的配置工作和几个简单的代码步骤,我们就能在无需从头训练模型的情况下获得合理的结果。

Iván Palomares Carrascosa 是AI、机器学习、深度学习和大语言模型领域的领导者、作家、演讲者和顾问。他培训和指导他人如何在现实世界中利用AI。

更多相关内容

  • 如何使用Hugging Face Transformers实现命名实体识别
  • 3个SpaCy技巧实现高效文本处理与实体识别
  • 使用PyTorch与Hugging Face构建自动语音识别系统
  • 如何使用Wav2Vec 2.0训练语音识别模型...
  • 5个需求量大但认可度不足的IT职位
  • 我如何使用Google Opal实现更多AI自动化

<hr class="grey-line"><br> <div><h3>我们推荐的5门免费课程</h3><br> </div>

Mailchimp for WordPress v4.14.1 - https://wordpress.org/plugins/mailchimp-for-wp/

/ Mailchimp for WordPress插件

您可以从这里开始编辑。

如果评论已关闭。

<= 上一篇

#content end

<script type="text/javascript">kda_sid_write(kda_sid_n);</script>

最新文章

/

  • 使用 Scikit-LLM 进行命名实体识别 AI 代理技能的 5 个最佳 GitHub 仓库 2026 年成为 AI 产品经理的路线图 开发者必备的 5 个 Docker 容器 Claude Haiku 5.5:新功能及如何用于快速、低成本的 AI 工作流 LangChain 与 LlamaIndex 对比:从零构建的建议

热门文章

  • 7 个可替代付费订阅的开源 AI 工具
  • AI 软件克隆的兴起:为什么 REA 和 ArtCraft 正在病毒式传播
  • 开发者必备的 5 个 Docker 容器
  • LLM 推理工程的 5 个趣味项目
  • 2026 年掌握智能体 AI 系统的路线图
  • 2026 年值得了解的 10 个 Hugging Face 模型
  • Claude Haiku 5.5:新功能及如何用于快速、低成本的 AI 工作流
  • 2026 年可使用的 5 个免费 LLM API 提供商
  • 使用 Scikit-LLM 进行少样本文本分类
  • 信任 AI 生成代码前需要执行的 7 项检查

#content_wrapper end

© 2026

Guiding Tech Media

|

关于

联系我们

广告合作

隐私政策

服务条款

2026 年 10 月 21 日由 Iván Palomares Carrascosa 发布

blank

不,谢谢!

/.main_wrapper

<script defer type="text/javascript" src="https://s7.addthis.com/js/300/addthis_widget.js#pubid=gpsaddthis"></script>

noptimize

/noptimize