词向量是稠密实数向量,使语义相近词在空间中距离更近;常用模型有Word2Vec、GloVe和FastText,各具优势;中文任务推荐Chinese-Word-Vectors并注意分词与归一化;句子表示需超越简单平均,可用TF-IDF加权、Doc2Vec或BERT微调;文本分类应注重数据清洗、特征工程、模型选择及合理评估,避免分词不一致、OOV处理不当等常见错误。
词向量:让机器真正“理解”词语含义词向量不是简单的编号或独热编码,而是把每个词映射成一个稠密的实数向量,使得语义相近的词在向量空间中距离更近。比如“国王”和“王后”向量夹角小,“苹果”和“香蕉”靠近,而“苹果”和“坦克”则远离。
常用预训练词向量包括Word2Vec(Google)、GloVe(Stanford)和FastText(Facebook)。它们各有侧重:Word2Vec擅长捕捉局部上下文关系;GloVe在全局共现统计上更稳定;FastText能处理未登录词(OOV),通过子词(sub word)拼接生成词向量。
实际使用建议:
小项目或中文场景可直接加载Chinese-Word-Vectors(如SGNS、w2v.baidu-news-zh)
用gensim加载.bin或.text格式模型,注意中文需提前分词(推荐jieba或pkuseg)
避免直接用原始向量做分类——应先做归一化,或取句中所有词向量的加权平均(如TF-IDF加权)
从词向量到句子表示:不止是简单平均把一句话变成一个向量,是文本分类前的关键一步。单纯对词向量取算术平均会丢失语序和结构信息,效果有限。
立即学习“Python免费学习笔记(深入)
”;
更实用的做法有:
Python 3.14.3微软官方的 Python 扩展,是 VS Code 安装量最高的扩展(209M+)。集成 IntelliSense(通过 Pylance)、调试(通过 Python Debugger)、代码检查、格式化、重构和单元测试等功能。支持 Jupyter Notebook、虚拟环境管理和多 Python 版本切换。
下载TF-IDF加权平均:高频但通用的词(如“的”“了”)权重低,专业或区分性强的词权重高Doc2Vec:直接学习段落/文档级向量,适合短文本(如评论、标题),训练时需标注段落ID预训练语言模型微调:用BERT、RoBERTa等提取[CLS]向量,或对最后一层隐状态做池化(推荐mean pooling而非max)
注意:若用BERT类模型,别忘了用对应分词器(如BertTokenizer)处理中文,且要截断补长到统一长度(如64或128)。
文本分类实战:三步搭建有效模型不依赖深度框架也能快速验证效果。以新闻分类(体育/财经/娱乐)为例:数据准备:清洗标点、去停用词(可用哈工大停用词表)、统一繁简(如opencc)、划分训练/验证/测试集(建议7:1.5:1.5)
特征构建:用TfidfVectorizer提取n-gram(1~2)特征,max_features设为10000~50000,避免维度爆炸模型选择:初筛推荐LinearSVC或LogisticRegression(速度快、可解释性强);若效果瓶颈,再上LightGBM或微调BERT评估时别只看准确率——类别不均衡时重点看宏平均F1(mac ro-F1),并画混淆矩阵定位误判类型(如“股市”常被错分为“体育”)。
进阶提示:避开常见坑点很多效果差不是模型问题,而是细节没控住:中文分词不一致:训练用jieba,预测时换hanlp → 向量对不上。务必固化分词器版本与参数向量未对齐:Word2Vec词表外的词直接丢弃,导致句子向量稀疏。应设默认向量(如全零或随机正态)并记录OOV率分类器输入未标准化:TF-IDF输出是稀疏矩阵,但某些模型(如MLP)需要dense array,记得调用toarray()验证方式错误:用train_test_split随机切分,却没按label分层(stratify=y)→ 验证集缺某类样本
