基于互信息的中文新词发现算法详解
字数 2078 2025-12-09 06:47:02

基于互信息的中文新词发现算法详解

1. 算法背景与问题定义

  • 新词发现问题:中文文本由连续字符序列组成,缺少天然空格分隔。新词指未收录在现有词典中的词汇(如网络用语、专业术语)。传统基于词典的分词方法无法识别新词,需要从大规模语料中自动发现潜在词汇。
  • 核心思想:利用信息论中的互信息(Mutual Information, MI) 衡量字符串内部结合紧密程度。若一个候选字符串的互信息显著高于随机组合,则可能为有效词汇。

2. 关键概念:互信息与边界熵

  • 互信息(MI):度量两个随机变量的相互依赖程度。对于字符串 \(S = c_1 c_2 ... c_n\)\(c_i\) 为字符),其互信息定义为:

\[ MI(S) = \log_2 \frac{P(S)}{\prod_{i=1}^{n} P(c_i)} \]

其中 \(P(S)\) 是字符串出现概率,\(P(c_i)\) 是字符出现概率。MI值越高,说明字符间结合越紧密,越可能成词。

  • 边界熵(Boundary Entropy):仅用互信息可能误将高频短语(如“的一”)判为新词。引入左边界熵 \(H_l\)右边界熵 \(H_r\),度量字符串两侧上下文的多样性:

\[ H_l(S) = -\sum_{c \in C} P(c|S) \log_2 P(c|S) \]

其中 \(P(c|S)\) 是字符 \(c\) 出现在 \(S\) 左侧的概率。右边界熵定义类似。高边界熵表明该字符串可灵活与多种上下文结合,是独立词汇的特征。

3. 算法步骤详解
步骤1:语料预处理与候选生成

  • 输入大规模原始文本(如社交媒体语料),进行基础清洗(去除标点、数字等)。
  • 滑动窗口扫描文本,生成所有长度在 \(L_{min}\)\(L_{max}\) 之间的子串作为候选(通常 \(L_{min}=2, L_{max}=5\))。
  • 过滤低频候选(如频次<5),减少计算量。

步骤2:统计量与概率计算

  • 统计每个候选串 \(S\) 的出现频次 \(F(S)\),以及每个字符的频次 \(F(c_i)\)
  • 基于频次估计概率:

\[ P(S) = \frac{F(S)}{N}, \quad P(c_i) = \frac{F(c_i)}{N} \]

其中 \(N\) 为语料总字符数。

  • 统计每个候选的左右邻接字符集合,计算条件概率 \(P(c|S)\)

步骤3:互信息与边界熵计算

  • 计算每个候选串的互信息:

\[ MI(S) = \log_2 \frac{P(S)}{\prod_{i=1}^{n} P(c_i)} \]

  • 计算左边界熵 \(H_l(S)\) 和右边界熵 \(H_r(S)\)
    • 左边界熵:收集所有出现在 \(S\) 左侧的字符 \(c\),计算 \(P(c|S) = \frac{F(cS)}{F(S)}\),代入熵公式。
    • 右边界熵同理。

步骤4:过滤与排序

  • 设置阈值过滤:
    • \(MI(S) \geq \theta_{MI}\)(如≥3),确保内部结合紧密。
    • \(H_l(S) \geq \theta_H\)\(H_r(S) \geq \theta_H\)(如≥1.5),确保边界上下文多样。
  • \(MI(S) \times H_l(S) \times H_r(S)\) 乘积降序排序,得分高者更可能为新词。

步骤5:后处理与验证

  • 去除子串冲突:若长串包含已发现的高分短串,且长串频次接近短串,则保留长串(如“跨境电商”优先于“跨境”)。
  • 人工评估或与现有词典比对,输出最终新词列表。

4. 示例说明

  • 语料片段:“元宇宙概念火爆”
  • 候选“元宇宙”统计:
    • 频次 \(F(\text{元宇宙})=50\),总字符数 \(N=10^6\)
    • 字符概率:\(P(\text{元})=0.01, P(\text{宇})=0.005, P(\text{宙})=0.003\)
    • 互信息:

\[ MI = \log_2 \frac{50/10^6}{0.01 \times 0.005 \times 0.003} \approx 12.3 \]

  • 左邻接字符:{“入”、“探”…},右邻接字符:{“概”、“的”…},边界熵均较高。
  • 得分显著高于阈值,判定为新词。

5. 优缺点分析

  • 优点
    • 无监督,无需标注数据。
    • 理论基础扎实,能发现紧密结合的字符串。
  • 缺点
    • 依赖频次统计,对低频新词不敏感。
    • 阈值需调优,可能漏检语义相关但结合度不高的词(如“躺平”)。
  • 改进方向:结合上下文嵌入(如BERT)计算语义紧密度,或引入点互信息(PMI) 变体处理稀疏问题。

6. 应用场景

  • 社交媒体新词挖掘(如“yyds”)。
  • 专业领域术语提取(如生物医学文献)。
  • 词典扩充,提升分词系统覆盖率。
基于互信息的中文新词发现算法详解 1. 算法背景与问题定义 新词发现问题 :中文文本由连续字符序列组成,缺少天然空格分隔。新词指未收录在现有词典中的词汇(如网络用语、专业术语)。传统基于词典的分词方法无法识别新词,需要从大规模语料中自动发现潜在词汇。 核心思想 :利用信息论中的 互信息(Mutual Information, MI) 衡量字符串内部结合紧密程度。若一个候选字符串的互信息显著高于随机组合,则可能为有效词汇。 2. 关键概念:互信息与边界熵 互信息(MI) :度量两个随机变量的相互依赖程度。对于字符串 \( S = c_ 1 c_ 2 ... c_ n \)(\( c_ i \) 为字符),其互信息定义为: \[ MI(S) = \log_ 2 \frac{P(S)}{\prod_ {i=1}^{n} P(c_ i)} \] 其中 \( P(S) \) 是字符串出现概率,\( P(c_ i) \) 是字符出现概率。MI值越高,说明字符间结合越紧密,越可能成词。 边界熵(Boundary Entropy) :仅用互信息可能误将高频短语(如“的一”)判为新词。引入 左边界熵 \( H_ l \) 和 右边界熵 \( H_ r \) ,度量字符串两侧上下文的多样性: \[ H_ l(S) = -\sum_ {c \in C} P(c|S) \log_ 2 P(c|S) \] 其中 \( P(c|S) \) 是字符 \( c \) 出现在 \( S \) 左侧的概率。右边界熵定义类似。高边界熵表明该字符串可灵活与多种上下文结合,是独立词汇的特征。 3. 算法步骤详解 步骤1:语料预处理与候选生成 输入大规模原始文本(如社交媒体语料),进行基础清洗(去除标点、数字等)。 滑动窗口扫描文本,生成所有长度在 \( L_ {min} \) 到 \( L_ {max} \) 之间的子串作为候选(通常 \( L_ {min}=2, L_ {max}=5 \))。 过滤低频候选(如频次 <5),减少计算量。 步骤2:统计量与概率计算 统计每个候选串 \( S \) 的出现频次 \( F(S) \),以及每个字符的频次 \( F(c_ i) \)。 基于频次估计概率: \[ P(S) = \frac{F(S)}{N}, \quad P(c_ i) = \frac{F(c_ i)}{N} \] 其中 \( N \) 为语料总字符数。 统计每个候选的左右邻接字符集合,计算条件概率 \( P(c|S) \)。 步骤3:互信息与边界熵计算 计算每个候选串的互信息: \[ MI(S) = \log_ 2 \frac{P(S)}{\prod_ {i=1}^{n} P(c_ i)} \] 计算左边界熵 \( H_ l(S) \) 和右边界熵 \( H_ r(S) \): 左边界熵:收集所有出现在 \( S \) 左侧的字符 \( c \),计算 \( P(c|S) = \frac{F(cS)}{F(S)} \),代入熵公式。 右边界熵同理。 步骤4:过滤与排序 设置阈值过滤: \( MI(S) \geq \theta_ {MI} \)(如≥3),确保内部结合紧密。 \( H_ l(S) \geq \theta_ H \) 且 \( H_ r(S) \geq \theta_ H \)(如≥1.5),确保边界上下文多样。 按 \( MI(S) \times H_ l(S) \times H_ r(S) \) 乘积降序排序,得分高者更可能为新词。 步骤5:后处理与验证 去除子串冲突:若长串包含已发现的高分短串,且长串频次接近短串,则保留长串(如“跨境电商”优先于“跨境”)。 人工评估或与现有词典比对,输出最终新词列表。 4. 示例说明 语料片段:“元宇宙概念火爆” 候选“元宇宙”统计: 频次 \( F(\text{元宇宙})=50 \),总字符数 \( N=10^6 \)。 字符概率:\( P(\text{元})=0.01, P(\text{宇})=0.005, P(\text{宙})=0.003 \)。 互信息: \[ MI = \log_ 2 \frac{50/10^6}{0.01 \times 0.005 \times 0.003} \approx 12.3 \] 左邻接字符:{“入”、“探”…},右邻接字符:{“概”、“的”…},边界熵均较高。 得分显著高于阈值,判定为新词。 5. 优缺点分析 优点 : 无监督,无需标注数据。 理论基础扎实,能发现紧密结合的字符串。 缺点 : 依赖频次统计,对低频新词不敏感。 阈值需调优,可能漏检语义相关但结合度不高的词(如“躺平”)。 改进方向 :结合上下文嵌入(如BERT)计算语义紧密度,或引入 点互信息(PMI) 变体处理稀疏问题。 6. 应用场景 社交媒体新词挖掘(如“yyds”)。 专业领域术语提取(如生物医学文献)。 词典扩充,提升分词系统覆盖率。