词编码与词嵌入:自然语言处理的基础技术
词编码与词嵌入:自然语言处理的基础技术
1. 词编码(Word Encoding)
1.1 基本概念
词编码是将文本数据转换为数值形式的过程,以便计算机能够处理。常见的词编码方法包括:
- One-Hot Encoding
- 整数编码(Integer Encoding)
1.2 One-Hot Encoding
将每个词表示为一个长度为词汇表大小的向量,其中只有一个元素为1,其余为0。
示例:
词汇表:[“cat”, “dog”, “mouse”]
- “cat” -> [1, 0, 0]
- “dog” -> [0, 1, 0]
- “mouse” -> [0, 0, 1]
优点:
- 简单直观
- 易于实现
缺点:
- 高维稀疏
- 无法捕捉词与词之间的关系
1.3 整数编码(Integer Encoding)
将每个词映射为一个唯一的整数。
示例:
词汇表:[“cat”, “dog”, “mouse”]
- “cat” -> 1
- “dog” -> 2
- “mouse” -> 3
优点:
- 紧凑表示
- 节省存储空间
缺点:
- 无法捕捉词与词之间的关系
- 整数之间的大小关系可能引入误导
2. 词嵌入(Word Embedding)
2.1 基本概念
词嵌入是将词映射到低维连续向量空间的技术,能够捕捉词与词之间的语义关系。
2.2 常见方法
-
Word2Vec
- 通过预测上下文(CBOW)或预测目标词(Skip-Gram)学习词向量。
- CBOW:
目标函数:max∑t=1Tlogp(wt∣wt−c,...,wt+c) \text{目标函数:} \max \sum_{t=1}^T \log p(w_t | w_{t-c}, ..., w_{t+c}) 目标函数:maxt=1∑Tlogp(wt∣wt−c,...,wt+c) - Skip-Gram:
目标函数:max∑t=1T∑−c≤j≤c,j≠0logp(wt+j∣wt) \text{目标函数:} \max \sum_{t=1}^T \sum_{-c \leq j \leq c, j \neq 0} \log p(w_{t+j} | w_t) 目标函数:maxt=1∑T−c≤j≤c,j=0∑logp(wt+j∣wt)
-
GloVe
- 基于全局词共现矩阵,优化以下目标函数:
J=∑i,j=1Vf(Xij)(wi⊤w~j+bi+b~j−logXij)2 J = \sum_{i,j=1}^V f(X_{ij}) (w_i^\top \tilde{w}_j + b_i + \tilde{b}_j - \log X_{ij})^2 J=i,j=1∑Vf(Xij)(wi⊤w~j+bi+b~j−logXij)2
其中XijX_{ij}Xij为词iii和词jjj的共现次数。
- 基于全局词共现矩阵,优化以下目标函数:
-
FastText
- 将词表示为n-gram字符的集合,能够处理未登录词。
2.3 示例
假设我们有以下句子:
- “I love natural language processing”
经过Word2Vec训练后,可能得到以下词向量:
- “love” -> [0.25, -0.12, 0.78, …]
- “language” -> [0.34, 0.56, -0.45, …]
这些向量能够捕捉语义关系,例如:
vec("king")−vec("man")+vec("woman")≈vec("queen") \text{vec("king")} - \text{vec("man")} + \text{vec("woman")} \approx \text{vec("queen")} vec("king")−vec("man")+vec("woman")≈vec("queen")
3. 词袋模型(Bag of Words, BoW)
3.1 基本概念
词袋模型将文本表示为词频向量,忽略词序和语法信息。
3.2 数学表示
对于文档DDD,词袋模型表示为:
BoW(D)=[f(w1),f(w2),...,f(wV)] \text{BoW}(D) = [f(w_1), f(w_2), ..., f(w_V)] BoW(D)=[f(w1),f(w2),...,f(wV)]
其中f(wi)f(w_i)f(wi)为词wiw_iwi在文档DDD中的频率,VVV为词汇表大小。
3.3 示例
假设有以下文档:
- 文档1:“I love natural language processing”
- 文档2:“I love deep learning”
词汇表:[“I”, “love”, “natural”, “language”, “processing”, “deep”, “learning”]
词袋表示:
- 文档1:[1, 1, 1, 1, 1, 0, 0]
- 文档2:[1, 1, 0, 0, 0, 1, 1]
3.4 优缺点
优点:
- 简单高效
- 易于实现
缺点:
- 忽略词序和语法
- 高维稀疏
4. 其他处理方法
4.1 TF-IDF
- 词频-逆文档频率(Term Frequency-Inverse Document Frequency)
- 衡量词在文档中的重要性:
TF-IDF(t,d)=TF(t,d)×IDF(t) \text{TF-IDF}(t, d) = \text{TF}(t, d) \times \text{IDF}(t) TF-IDF(t,d)=TF(t,d)×IDF(t)
其中:
IDF(t)=logN1+DF(t) \text{IDF}(t) = \log \frac{N}{1 + \text{DF}(t)} IDF(t)=log1+DF(t)N- NNN为文档总数
- DF(t)\text{DF}(t)DF(t)为包含词ttt的文档数
4.2 N-gram
- 将连续的nnn个词作为一个单元,捕捉局部词序信息。
- 示例(Bigram):
- 句子:“I love natural language processing”
- Bigram:[“I love”, “love natural”, “natural language”, “language processing”]
5. 总结
- 词编码将文本转换为数值形式,是自然语言处理的基础步骤。
- 词嵌入通过低维连续向量表示词,能够捕捉语义关系。
- 词袋模型简单高效,但忽略了词序和语法信息。
- TF-IDF和N-gram是常用的文本表示方法,能够提升模型性能。
更多推荐
所有评论(0)