Python自然语言处理的未来:技术栈与开发范式

The Future of NLP in Python (PyCon Colombia 2020 主题演讲)

Ines Montani

视频链接: https://www.youtube.com/watch?v=YDAgQO1DX0Q
推特讨论: https://twitter.com/_inesmontani/status/1226501968832671744

概述

演讲探讨了Python作为自然语言处理(NLP)主要编程语言的优势及其未来发展,特别关注开发者工作流和工具栈的演进。

为什么选择Python?

  • Python的持续增长。
  • 优势:
    • C语言扩展能力。
    • 动态语言特性。
    • 通用编程语言(General-purpose)。
  • 它比专门的“人工智能语言”更好,因为它使开发者更容易扩展技能。

通用开发者 vs. 领域专家
这两者是互补关系。

技能树形态

  • T型技能:广博的知识加上一项精深技能。
  • 树型技能:在广博基础上有多项精深技能。
    组织结构影响产出
    你的组织架构决定了你的产出方式。

处理流水线

文本 -> 文档

文本 -> 文档 -> [词性标注器] -> [命名实体识别器] -> [句法依存关系解析器]

举例:识别文本中的人物实体。

迁移学习

特定任务模型 <- 文本

通用语言模型 <- 文本

Transformer模型

  • 准确且可复用。
  • 子网络可以应用于不同的工作流:在张量级别进行操作。

问题 #1:本地某机构的代码库“有点难以阅读”

一位资深工程师面对array[:, ..., :4]这样的代码感到困惑:这到底是什么意思?

有多少维度?

  • 场景1:2维。
  • 场景2:依然是2维。
  • 场景3:1维。

类型错误示例

  • 错误1:Y: Floats3d 返回值类型不兼容(得到 "Tuple[Floats3d, Callable[[Any], Any]]",预期是 "Tuple[Floats1d, Callable[..., Any]]")。
  • 错误2:Relu: Relu 层输出类型为 thinc.types.Floats2d,但下一层期望输入类型为 thinc.types.Ragged

问题 #2:模型配置管理

超参数 + 权重 + 其他设置 -> 模型代码 -> 机器学习库

解决方案:Thinc.AI

  1. 类型系统
  2. 配置驱动
  3. 可组合性

底层原理

  1. 类型检查 确保层与层之间的输入输出维度匹配。
  2. 配置管理 将模型超参数、架构定义等与代码分离。

即将推出更多功能。

问题 #3:我们需要一个包含价格和股票代码的公司收购数据库

一位工程师搜索:“pytorch predict company acquisitions with prices and stock tickers”,没有结果。于是他决定自己动手。

案例:某中心以75亿美元收购软件开发平台GitHub。

构建信息抽取流水线

  1. 文本分类器:识别是否为收购新闻。
  2. 实体识别器:识别收购方(某中心)、被收购方(GitHub)。
  3. 实体链接器:将实体链接到知识库(如维基百科)。
  4. 属性查找器:提取收购金额(75亿)。
  5. 货币标准化器:将“75亿”标准化为数字格式。

问题 #4:实践与理论的鸿沟

  • 理论上数据 -> 代码
  • 实践中代码 -> 数据

数据标注的挑战

  • 歧义性:“教皇方济各访问美国。”其中“教皇方济各”应该标注为人物实体吗?
  • 相似性判断:“我爱猫。”和“我讨厌猫。”是相似的还是不相似的?

解决方案:Prodigy.AI(交互式标注工具)

  • 允许开发者快速创建、迭代和评估训练数据。
  • 支持主动学习,优先标注模型不确定的样本。

典型的机器学习项目曲线

  • 努力程度(训练数据量、时间、实验) vs. 效果(准确率、质量)
  • 希望之丘:初期投入少量数据,效果快速提升。
  • 不确定性的沼泽:投入大量努力,但效果提升缓慢,充满不确定性。
  • 沮丧的高原:继续投入,效果几乎停滞,项目可能失败。

未来的项目模式

  • 努力程度 vs. 效果
  • 沉没成本的流沙:在不确定性沼泽中投入过多无法收回的成本。
  • 何时停止? 这是一个关键问题。
  • 迭代式ETL与略减不确定性的陆地:通过迭代的数据提取、转换、加载流程,逐步降低不确定性,明确项目的里程碑和停止点。
  • 成功的草原:找到正确的路径,项目走向成功。出发!

未来展望

  • 谁?:大量的开发者,包括通用开发者和领域专家。
  • 什么?:基于迁移学习和组件化流水线的技术。
  • 如何做?:采用迭代式的、内部开发的流程。
    更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)或者 我的个人博客 https://blog.qife122.com/
    对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

公众号二维码

公众号二维码

posted @ 2025-12-11 23:05  CodeShare  阅读(1)  评论(0)    收藏  举报