.vip域名做网站,梅州建站多少钱,定州网站建设兼职,物流网站的建设论文文章目录 0. 引言1. 什么是词向量2. Word2Vec2.1 介绍2.2 例子 3. 参考 0. 引言
前情提要#xff1a; 《NLP深入学习#xff08;一#xff09;#xff1a;jieba 工具包介绍》 《NLP深入学习#xff08;二#xff09;#xff1a;nltk 工具包介绍》 《NLP深入学习#x… 文章目录 0. 引言1. 什么是词向量2. Word2Vec2.1 介绍2.2 例子 3. 参考 0. 引言
前情提要 《NLP深入学习一jieba 工具包介绍》 《NLP深入学习二nltk 工具包介绍》 《NLP深入学习三TF-IDF 详解以及文本分类/聚类用法》 《NLP深入学习四贝叶斯算法详解及分类/拼写检查用法》 《NLP深入学习五HMM 详解及字母识别/天气预测用法》 《NLP深入学习六n-gram 语言模型》
1. 什么是词向量
在自然语言处理NLP领域中词向量是将单词映射为实数向量的一种方法使得具有相似含义的词在数学空间中的距离更近。通过词向量表示可以将原本无法直接进行数学运算的文本数据转化为数值形式从而能够应用于机器学习和深度学习模型。
早期的词向量表示方法如 One-hot 编码它是以稀疏向量的形式存在每个词对应一个很长的向量向量中只有一个位置上的值为1其余全为0。这种表示方式简单直观但无法表达词与词之间的语义关系。
随着技术的发展出现了分布式词向量Distributed Representation其中最具代表性的有 Word2Vec 包括CBOWContinuous Bag-of-Words和Skip-gram两种训练模式。Skip-gram模型通过预测给定词语周围上下文的词语来学习词向量。CBOW则是通过给定的上下文预测中心词。 GloVeGlobal Vectors for Word Representation GloVe结合了全局统计信息和局部上下文窗口的优势通过矩阵分解的方法学习词向量。 FastText FastText不仅考虑整个词汇表的统计信息还对词内部的子结构进行建模特别适用于捕捉形态学特征丰富的语言中的词义。
这些词向量模型训练完成后每个词都将有一个固定长度的稠密向量通过计算两个词向量之间的余弦相似度或欧氏距离可以衡量它们在语义上的接近程度。词向量技术极大地提升了诸如情感分析、文档分类、机器翻译等NLP任务的效果。
下面以 Word2Vec 为例介绍下词向量的具体使用方法
2. Word2Vec
2.1 介绍
Word2Vec 是 Google 在2013年提出的一种用于自然语言处理的词嵌入word embedding技术它将文本中的每个词映射为一个连续向量空间内的稠密向量。通过训练Word2Vec 能够捕捉词汇之间的语义和语法关系使得具有相似上下文环境或含义相近的词语在向量空间中的距离较近。
Word2Vec主要包含两种模型结构 Continuous Bag-of-Words (CBOW): CBOW 模型试图根据给定单词周围的上下文单词来预测中心词。训练过程中模型的目标是最大化正确预测目标词的概率即根据多个输入词预测出中间缺失的单个词。 Skip-gram: 与CBOW相反Skip-gram 模型利用中心词去预测其前后出现的上下文单词。在 Skip-gram 中模型的任务是对于给定的一个词尽可能准确地预测它前后窗口内的其他词。
这两种模型都采用神经网络架构进行训练不过重点不同CBOW 更关注于上下文信息的整体统计特征而 Skip-gram 则强调单个词与其上下文的关系通常能捕获到更丰富的词汇间关联性。
训练过程
初始化时所有的词都被随机赋予一个向量表示。神经网络通过迭代优化损失函数如负采样或 Hierarchical Softmax不断调整词向量使得模型可以更好地基于上下文预测目标词CBOW或者由目标词预测上下文Skip-gram。
最终得到的词向量可以在下游任务中直接使用无需进一步特征工程并且往往能提供优异的表现比如在词类比任务、文档分类、情感分析等领域中展现出了强大的能力。例如经过训练的Word2Vec模型中“国王”-“男人”“女人”≈“女王”这种操作展示了词向量在数学上的可加性和潜在的语义含义。
2.2 例子
使用 Word2Vec 进行训练和生成词向量的常见方法是使用 Gensim 库。以下是一个简单的 Word2Vec 的 Python 代码示例
from gensim.models import Word2Vec
from nltk.tokenize import word_tokenize
import nltk
nltk.download(punkt) # 下载分词所需的资源# 示例文本
corpus Word embeddings are dense vector representations of words.# 分词
tokenized_corpus word_tokenize(corpus.lower()) # 转为小写以便一致性
sentences [tokenized_corpus]# 设置 Word2Vec 参数
vector_size 100 # 词向量维度
window_size 5 # 上下文窗口大小
min_count 1 # 最小词频低于此频率的词将被忽略
workers 4 # 并行处理的线程数# 创建并训练 Word2Vec 模型
model Word2Vec(sentences, vector_sizevector_size, windowwindow_size, min_countmin_count, workersworkers)# 保存模型
model.save(word2vec_model.model)# 加载模型
loaded_model Word2Vec.load(word2vec_model.model)# 获取单词的词向量
word_vector loaded_model.wv[word]# 打印词向量
print(Vector for word:, word_vector)在这个例子中我们首先使用 NLTK 进行分词然后使用 Gensim 中的 Word2Vec 类创建和训练一个 Word2Vec 模型。模型可以保存到磁盘以后可以加载并用于获取单词的词向量。
请注意这只是一个简单的演示。在实际应用中你通常需要使用更大规模的文本数据集并调整模型的超参数以获得更好的性能。
在上述代码中
vector_size参数指定了生成词向量的维度。window_size参数定义了上下文窗口的大小即考虑当前词前后多少个词作为其上下文。min_count参数设置了词汇表中保留词的最小出现次数小于这个次数的词将被忽略。workers参数表示训练时使用的并发进程数。
通过训练好的 Word2Vec 模型我们可以获取每个词的向量表示并利用这些向量进行后续的自然语言处理任务。
3. 参考
《NLP深入学习一jieba 工具包介绍》 《NLP深入学习二nltk 工具包介绍》 《NLP深入学习三TF-IDF 详解以及文本分类/聚类用法》 《NLP深入学习四贝叶斯算法详解及分类/拼写检查用法》 《NLP深入学习五HMM 详解及字母识别/天气预测用法》 《NLP深入学习六n-gram 语言模型》