文本表示方法
文本表示是自然语言处理(NLP)中的基础任务,它将非结构化的文本数据转化为计算机可以处理的数值形式。
本文将系统介绍 NLP 中常用的文本表示方法,从传统方法到现代深度学习技术,帮助读者全面理解这一核心概念。
传统文本表示
词袋模型(Bag of Words)
词袋模型是最简单的文本表示方法之一,它将文本视为一个无序的词汇集合。
基本概念
- 忽略词语顺序和语法,只关注词语是否出现
- 构建词汇表,统计每个词在文档中出现的次数
- 最终表示为一个高维稀疏向量
代码示例
实例
from sklearn.feature_extraction.text import CountVectorizer
corpus = [
'This is the first document.',
'This document is the second document.',
'And this is the third one.',
'Is this the first document?'
]
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(corpus)
print(vectorizer.get_feature_names_out())
print(X.toarray())
优缺点分析
✅ 优点:
- 实现简单,计算效率高
- 适用于小规模数据集和简单任务
❌ 缺点:
- 忽略词序和语义信息
- 高维稀疏性问题
- 无法处理同义词和多义词
TF-IDF
TF-IDF(Term Frequency-Inverse Document Frequency)是对词袋模型的改进,考虑了词语在整个语料库中的重要性。
计算公式
- TF(词频):
词在文档中出现的次数 / 文档总词数 - IDF(逆文档频率):
log(文档总数 / 包含该词的文档数) - TF-IDF = TF × IDF
代码实现
实例
from sklearn.feature_extraction.text import TfidfVectorizer
tfidf_vectorizer = TfidfVectorizer()
X_tfidf = tfidf_vectorizer.fit_transform(corpus)
print(tfidf_vectorizer.get_feature_names_out())
print(X_tfidf.toarray())</


2308

被折叠的 条评论
为什么被折叠?



