文本表示

预计学习时间:25分钟

文本表示(Text Representation)是将自然语言文本转换为计算机可处理的数值形式的方法,是自然语言处理的基础环节。

文本表示的演进

文本表示技术经历了从简单到复杂的发展历程:

  1. One-Hot编码:最早期的稀疏表示方法
  2. 词袋模型(Bag of Words):基于词频的统计表示
  3. TF-IDF:考虑词频与文档频率的加权表示
  4. 分布式表示:基于分布假说的密集向量表示
    • Word2Vec, GloVe, FastText
  5. 上下文化表示:根据上下文动态生成的表示
    • ELMo, BERT, GPT等模型生成的表示

向量化表示的重要性

将文本转换为向量有几个关键优势:

  • 数学运算:支持相似度计算、聚类、分类等操作
  • 语义捕捉:可以捕捉词汇间的语义关系
  • 维度降低:将高维稀疏表示压缩为低维密集表示
  • 泛化能力:有助于处理未见过的词汇和表达
# 简单的One-Hot编码示例
def one_hot_encode(word, vocabulary):
    """
    为单词创建one-hot编码
    
    参数:
    - word: 需要编码的单词
    - vocabulary: 词汇表,包含所有可能的单词
    
    返回:
    - one_hot_vector: 词的one-hot编码
    """
    # 初始化全零向量
    one_hot_vector = [0] * len(vocabulary)
    
    # 设置对应位置为1
    if word in vocabulary:
        word_index = vocabulary.index(word)
        one_hot_vector[word_index] = 1
    
    return one_hot_vector

# 示例使用
vocabulary = ["自然", "语言", "处理", "模型", "学习"]
encoded_word = one_hot_encode("语言", vocabulary)
print(encoded_word)  # [0, 1, 0, 0, 0]

"好的文本表示是有效NLP模型的基础,它决定了模型能够捕捉多少语义信息。"

表示方法的比较

不同文本表示方法各有特点:

One-Hot编码

  • 优点:简单直观
  • 缺点:维度灾难、无法表达语义关系

词袋模型与TF-IDF

  • 优点:考虑词频信息
  • 缺点:忽略词序、语义捕捉有限

分布式表示(Word2Vec等)

  • 优点:低维密集向量、保留语义关系
  • 缺点:静态表示、多义词问题

上下文化表示(BERT等)

  • 优点:动态表示,根据上下文变化
  • 缺点:计算复杂,需要大量资源
表示方法维度语义捕捉计算复杂度应用场景
One-Hot词表大小极低简单任务
TF-IDF词表大小文档检索
Word2Vec通常50-300一般NLP任务
BERT嵌入768+高级NLP任务