本文目录导读:
这是一个很专业且有趣的问题,新词发现(New Word Detection)是自然语言处理(NLP)中的一项基础任务,主要用于从大规模未标注文本中自动识别出未登录词(即词典中没有的、具有稳定语义的词语片段)。
新词发现的方法主要可以分为三大类:基于规则的方法、基于统计的方法 和 基于深度学习(神经网络)的方法,在实际应用中,几乎所有的生产级系统都会采用混合方法来获得最佳效果。
以下是各类方法的核心原理和代表性技术:
基于规则的方法
这是最早期的方法,依赖于语言学知识和人工定义的模板。
- 核心原理:利用词性规则、构词规则(如前缀后缀)、标点符号、专名特征(如“李”+“某”)等。
- 优点:速度快,精确率极高,适合特定类型(如人名、地名、机构名)的抽取。
- 缺点:召回率低,需要大量人工维护规则,难以处理网络新词(如“yyds”、“破防了”)。
- 典型应用:
- 自动机匹配:如利用中国人名模式(姓+名)进行人名识别。
- 模板匹配:识别“XX之父”、“XX之都”等固定结构。
基于统计的方法(主流方法)
这是目前最成熟、应用最广泛的方法,其核心思想是:如果一个频繁出现的字符组合内部结合紧密,且与其他字符结合松散,那么它很可能是一个词。
主要分为两步:候选生成 和 候选过滤。
候选生成
通常使用N元语法(N-gram) 扫描文本,生成所有可能的连续字符串(2-gram, 3-gram...10-gram等等)。
候选过滤
这是统计方法的关键,需要多个指标进行综合评判:
-
互信息(PMI,Pointwise Mutual Information):
- 衡量内部凝聚度:判断两个或多个字是否经常在一起出现。“鸡肋”的PMI值很高,因为这两个字很少分开与别的字组合(“鸡”和“肋”不常分别和其他字搭配),而“的的”虽然出现频率高,但“的”字极活跃,PMI值会很低。
- 公式思想:P(xy) / (P(x)*P(y)),值越大,内部结合越紧密。
-
信息熵(Information Entropy):
- 衡量外部自由度:判断一个候选词前后可以搭配的字是否足够丰富,一个真正的词(如“自由”)前面可以跟“追求”、“热爱”、“获得”、“渴望”等多种字,后面也可以跟“地”、“的”、“精神”、“主义”等多种字,其左右邻字的信息熵都很高,而一个误切分的片段(如如果是“自由飞”),其左边邻居可能非常单一(只有“的”),熵值就低。
- 计算方式:分别计算候选词左邻字和右邻字的熵,然后取最小值或平均值。
-
频次(Frequency):
剔除低频噪声,只有出现次数超过一定阈值的候选词才会被考虑。
-
凝固度(内部聚合度):
对于长词(>2字),可以计算其内部所有子串的互信息,对于“人工智能”,它内部的“人工”和“智能”互信息也很高,但其整体内部结合能量更强于随机组合。
经典算法:
- SENSE 算法:由微软研究院提出,综合使用PMI、邻字熵和频次,这是目前最广泛使用的统计方法之一。
- N-gram + 统计指标:几乎所有开源工具(如Jieba分词的
analyse.textrank模式或analyse.tfidf模式中的__init__.py里自带的词频统计)都隐含了这种思想。
基于深度学习的方法
随着大模型和表示学习的兴起,神经网络方法也逐渐被应用。
- 核心原理:将字符序列输入神经网络(如BiLSTM、Transformer),学习字符之间的上下文关联和语义边界,预测每个字是词的开始、中间、BIO标注)。
- 优点:
- 能捕捉复杂的语言特征(如歧义、语义关系)。
- 准确率通常高于纯统计方法。
- 缺点:
- 需要大量标注数据(虽然可以弱监督或远监督)。
- 计算成本高。
- 解释性差(黑盒)。
- 典型模型:
- BERT + CRF:预训练模型(如BERT)抽取深层语义特征,CRF层对词边界进行约束,这是目前学术界效果最好的方法之一。
- 基于Transformers的序列标注:直接用预训练模型做BIO序列标注。
实践中的最佳策略
在实际工程项目中(如构建搜索引擎、分词系统、舆情监控),很少有人只用单一方法。标准的工业级流程通常是:
- 数据预处理:清洗文本(去噪、统一格式、识别特殊符号)。
- 候选生成:利用N-gram生成所有可能的连续候选词(通常限制最长不超过10个字)。
- 统计过滤:计算每个候选词的频次、互信息(内部凝聚度) 和邻字熵(外部自由度),设置阈值(如PMI > 5, 频次 > 100, 左右熵 > 0.5)进行初步筛选。
- 规则过滤:
- 去除纯标点、纯数字、纯无意义符号(如“aaaaaaaa”)。
- 去除过于长的候选(如长度超过10)。
- 加入白名单(如单位、后缀等)和黑名单(如常见停用字)。
- 词典校验:
- 剔除已有的“旧词”(如每日更新的通用词典)。
- 将结果与现有词典对比,为新词做标记。
- 人工或弱监督确认(可选):
- 对Top K候选词进行抽样人工标注。
- 或者利用搜索引擎、百科的点击量、搜索量等外部指标进行验证(远监督)。
- 增量更新:将发现的新词加入用户自定义词典,用于下一次分词、搜索或下游任务。
| 方法 | 核心指标 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 规则 | 词性、模板、前后缀 | 高精确率、可控 | 低召回、维护成本高 | 特定专名(人名、地名) |
| 统计 | 频次、互信息、邻字熵 | 无监督、通用性强、效果稳健 | 对长词、低频短语不敏感 | 大多数通用场景 |
| 深度学习 | 语义向量、上下文表示 | 准确率最高、处理歧义 | 需数据、计算成本高、模型重 | 学术研究、对准确性极致的场景 |
最后给出一个可直接落地的建议:
如果你是做工业级的文本处理(如新闻网站、社交平台内容分析),首选“统计为主、规则为辅”的混合方法,利用 N-gram + PMI + 熵值 算法,结合一些简单的规则过滤(如去除停用字、正则匹配),很快就能搭建一个高效的新词发现系统,如果数据量大(百亿级语料),可以考虑用Spark分布式计算或C++/Rust实现。
标签: 基于统计的方法