Word2Vec通过上下文学习将词映射为低维稠密向量,使语义相似词向量相近、支持线性类比,并可直接用于机器学习;中文需高质量分词、统一格式,小数据宜用预训练向量,领域任务可增量训练。
Word2Vec 是将词语转化为稠密向量(即词向量)的经典方法,它
让语义相近的词在向量空间中距离更近,从而支撑下游任务如文本分类、相似度计算、推荐等。核心不在于“训练模型”,而在于理解词向量如何承载语义,以及怎样用对工具、选对参数、避开常见坑。
传统 one-hot 表示下,“猫”和“狗”是完全正交的向量,无法体现它们都是宠物、都会叫、都长毛等共性。Word2Vec 通过大量文本上下文学习,把每个词映射到一个低维实数向量(如100维),使得:
Gensim 是最常用、最稳定的 Python 实现。安装后只需几行代码即可训练:
from gensim.models import Word2Vec from gensim.utils import simple_preprocess假设 sentences 是分好词的列表,例如 [['我', '喜欢', '猫'], ['她', '养', '狗']]
sentences = [simple_preprocess(line) for line in open('corpus.txt', encoding='utf-8')]
model = Word2Vec( sentences=sentences, vector_size=100, # 向量维度 window=5, # 上下文窗口大小 min_count=1, # 忽略出现少于该次数的词 workers=4, # 并行线程数 sg=1 # 1=Skip-gram, 0=CBOW(通常 Skip-gram 对低频词更鲁棒) )
训练完成后可直接查词向量、找相似词:
model.wv['猫'] → 获取“猫”的100维向量model.wv.most_similar('人工智能', topn=5) → 返回语义最接近的5个词model.wv.similarity('北京', '上海') → 计算两词余弦相似度Word2Vec 本身不区分语言,但中文需额外注意分词质量——它直接影响语义建模效果:
jieba 或 pkuseg)小数据+短周期项目,直接加载预训练中文词向量往往更稳更快:
model = KeyedVectors.load_word2vec_format('sgns.weibo.bigram', binary=False, encoding='utf-8')
model.train(..., total_examples=..., epochs=...) )