Python自然语言处理的未来(主题演讲,PyCon哥伦比亚 2020)
视频:https://www.youtube.com/watch?v=YDAgQO1DX0Q
Twitter 主题讨论:https://twitter.com/_inesmontani/status/1226501968832671744
核心技术组件
SPACY- 用于工业级自然语言处理的开源库,拥有超过 100,000 名用户。
PRODIGY- 为机器学习模型创建训练数据的注释工具,拥有超过 3000 名用户。
THINC- 用于通过函数式类型检查API组合模型的轻量级深度学习库(新版本)。
为什么选择Python?
Python 因其广泛的适用性而持续增长。
- C扩展
- 动态语言
- 通用目的
相较于专门的“AI语言”,Python更适合开发者扩展技能。它是一个通用目的的语言。
人才结构:通才与专才
通才与专才是互补的。
技能形状:从T型(广度与深度)到树型(多领域广度与深度)。
你的产出反映了你的组织结构:通才与专才互补,形成树型技能结构。
处理流水线
处理流水线包括:
- 词性标注器
- 命名实体识别器
- 句法依存关系解析器
输入:文本 -> 文档 -> 处理后的文档(例如,识别出“人物”实体)。
迁移学习
任务特定模型 + 文本 + 通用语言模型 = 迁移学习。
Transformer模型:准确且可重用的子网络,在不同的工作流程中(如在张量级别操作)都能发挥作用。
面临的技术问题
问题 #1:本地某中心初创公司的代码库“有点难读”
一位高级工程师面对代码array[:, ..., :4]发出疑问:“这到底是什么意思?”
核心挑战:维度混淆。
示例:判断张量是2维还是1维。
类型错误示例:Y: Floats3d不兼容的返回值类型(得到“Tuple[Floats3d, Callable[[Any], Any]]”,预期是“Tuple[Floats1d, Callable[…, Any]]”)。Relu: Relu层输出类型为 (thinc.types.Floats2d),但下一层期望输入为 (thinc.types.Ragged)。
问题 #2:配置管理
模型代码、超参数、权重和其他设置通常与机器学习库紧密耦合。
解决方案方向指向THINC.AI。
问题 #3:构建一个包含价格和股票代码的公司收购数据库
需求:预测包含价格和股票代码的公司收购。
流程步骤:
- 文本分类器:判断是否收购新闻。
- 实体识别器:识别收购方、被收购方。
- 实体链接器:链接到知识库。
- 属性查找:查找价格、股票代码。
- 货币标准化器:统一货币单位。
问题 #4:实践与理论的差距
理论:数据 -> 代码。
实践:代码 -> 数据。
标注不一致示例:“Pope Francis visits U.S.” 中,“Pope Francis”应该被标注为一个人物实体(PER)还是两个?
语义相似度挑战:“I love cats.” 和 “I hate cats.” 是相似还是不同?
迭代式数据开发方法
解决方案方向指向PRODIGY.AI。
典型的机器学习项目在投入(训练数据大小、时间、实验)与效果(准确性、质量)的关系中,常经历几个阶段:
- 希望之山:初期快速提升。
- 不确定性沼泽:进展缓慢,效果提升不明显。
- 沮丧高原:投入大量资源,但效果停滞。
未来的项目应采用迭代式开发,创造“不确定性稍减的湿地”,明确设置停止点,最终通向“成功的草地”。
未来展望
- 参与者(WHO):大量开发者,包括通才和专才。
- 技术内容(WHAT):迁移学习与组件化流水线。
- 方法论(HOW):迭代式的内部数据开发流程。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)或者 我的个人博客 https://blog.qife122.com/
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)