NLP编年史(一):特朗普被切成"特/朗/普"那天,整个中文互联网都崩了

28 阅读6分钟

🤦 "南京市长江大桥"到底是市长过江,还是城市名加大桥名?一台机器看到这句话,大脑一片空白。 💡 你知道"苹果好吃"和"苹果发布会"里的苹果,在1980年代的机器眼里是同一个东西吗? 🔥 2003年一篇论文,用一句话改写了整个NLP的命运——那句话说"让机器自己学词的用法"。


一、第一道难关:机器根本不知道"词"在哪

你打开一本书,看到的是一个个完整的字词。但机器看到的是一堆二进制信号,它连"词"是什么都不知道。

1.1 英文有空格,中文只有一团浆糊

英文天然有空格分词:I / love / NLP。中文呢?「我爱自然语言处理」糊在一起,机器根本不知道从哪里下刀。

这成了所有中文NLP的第一道关卡——分词

📖 历史趣闻:1980年代,中国科学家开始研究中文分词时,一个最朴素的方法就是"词表匹配"——先编一本词典,然后对着文本逐字扫描,能匹配上的就切开。

听起来简单,但现实马上给了他们一记耳光。

1.2 分词翻车名场面

最著名的分词事故:「南京市长江大桥」。

  • 正向最大匹配法(从左边取最长匹配):"南京市"命中 → 剩下"长江大桥"命中 → 结果:南京市 / 长江大桥
  • 但如果词表里有"南京市长""江大桥":结果变成了 南京市长 / 江大桥

⚠️ 反常识:同一个句子,同一个算法,就因为词表里多了个"南京市长",意思完全变了。不是算法错了,是你没告诉它"南京市是一座城市,不是一个叫南京的人当了市长"。

另一个更离谱的事故:某新闻App上线分词功能后,**"特朗普"被切成了"特/朗/普"**三个单字。热搜榜直接崩了——因为词表里根本没有这位美国总统的名字。

1.3 今天谁还手写分词?

几乎没人了。工业界清一色用开源工具:

  • 🔧 结巴分词(jieba)——最流行,中文NLP入门必备
  • 🔧 HanLP —— 功能更全
  • 🔧 Pkuseg —— 北大出品

💡 工程实践:2018年以前,分词还是很多NLP项目的核心优化点。2018年BERT出现后,分词变成一个预处理步骤,不再是瓶颈。但理解分词,可以帮你理解整个NLP的底层逻辑


二、第二个问题:机器怎么猜"下一个词是什么"?

分词只是把词切出来。接下来是更核心的问题:机器怎么知道哪些词经常在一起出现?

2.1 N-Gram:最简单的猜词游戏

1950年代,香农提出一个想法:语言其实是一个概率游戏。给定前几个词,你能猜出下一个词是什么。

这就是N-Gram的核心思想。

  • Unigram(1-gram):只看词本身
  • Bigram(2-gram):看前1个词
  • Trigram(3-gram):看前2个词

举个例子,"我今天想吃____"。如果是bigram模型,它会统计语料库中"想吃"后面出现最多的词——大概率是"饭""苹果""面"。

📖 趣味故事:Google在2006年发布了一个"Google Books N-Gram Viewer",你可以搜索任意词组在数百年书籍中的出现频率。有人用它发现"病菌"这个词在1880年代突然暴增——正好对应巴斯德发现细菌的时代。你靠猜词,别人靠猜词做了历史研究。

2.2 N-Gram的致命弱点

N-Gram有一个天生缺陷:它只看固定窗口,看不到整体语境

  • "我今天在银行存了一笔钱" → 这里的"银行"是金融机构
  • "我今天在银行边上钓鱼" → 这里的"银行"是河岸

但在N-Gram眼里,这两个"银行"是同一个词。它没有能力区分一词多义。

⚠️ 反常识:最朴素的N-Gram模型在1980年代统治了NLP将近20年。不是因为它好,而是因为当时没有更好的选择。硬件的限制决定了算法的复杂度——现在的BERT跑一次训练的电费,够1980年代一个实验室用一年。


三、第三个飞跃:让机器知道"哪些词更重要"

分词分好了,N-Gram也能猜了,但你发现一个问题:在一篇文档里,所有词的权重是一样的

"的""了""是"这些词出现频率极高,但对理解文档内容毫无帮助。真正的关键词 —— "分词""算法""Transformer" —— 反而可能只出现一两次。

3.1 TF-IDF的诞生

1970年代,一个叫Karen Spärck Jones的英国女科学家提出了一个想法:

💡 核心洞见:一个词的重要性,由两个因素决定——它在当前文档中出现的频率(TF),以及它在所有文档中出现的稀有程度(IDF)。

翻译成人话就是:

  • 一个词在这篇文章里出现越多 → 越重要
  • 一个词在所有文章里都出现 → 越不重要

所以"的"虽然出现频率极高,但在所有文档里都出现,IDF几乎为0,被直接忽略了。

📖 科研八卦:Karen Spärck Jones提出TF-IDF时,学术界反应冷淡——"这么简单的公式也能算创新?" 结果这个公式在文本检索领域统治了整整30年,直到今天搜索引擎的底层还在用它。有时候最简单的想法,反而是最持久的。

3.2 TF-IDF怎么用?

一套完整的搜索系统流程:

  1. 用户输入关键词,机器分词
  2. 计算每个词的TF-IDF权重
  3. 搜索引擎召回相关文档
  4. 按相关性排序返回结果

这套逻辑至今仍然是搜索引擎的底层骨架。你今天在百度或Google搜东西,算法已经进化了不知道多少代,但根上的思路还是TF-IDF那一套——找出文档中最独特的词,匹配用户最关心的信息


四、计算成本决定了技术史

回顾NLP的早期发展,你会发现一个规律:每一代技术都是在上一代的痛点上生长出来的

  • 分词解决了"词在哪"的问题 → 但留下了"歧义切分"的坑
  • N-Gram解决了"词序预测"的问题 → 但"固定窗口看不到全局语境"
  • TF-IDF解决了"关键词权重"的问题 → 但"词和词之间的语义关系"完全空白

💡 核心结论:不是古人不想做得更好,是当时的硬件根本跑不动更复杂的模型。每10年计算能力翻100倍,NLP模型复杂度就翻100倍。你以为是算法的胜利,其实是算力的胜利


📚 拓展阅读

  1. 香农1951年论文《Prediction and Entropy of Printed English》——N-Gram的起点
  2. Karen Spärck Jones 1972年TF-IDF论文 —— NLP史上引用量最高的论文之一
  3. Manning & Schütze《Foundations of Statistical Natural Language Processing》—— 统计NLP圣经

🤔 互动:你还遇到过什么离谱的分词翻车事件?评论区说说,我统计一下"最惨翻车排行榜" 👇