词嵌入及方法one-hot、词袋、TFIDF

词嵌入

1. 词嵌入的含义

机器学习和深度学习等统计算法处理数字。要对文本应用统计算法,你需要将文本转换为数字。例如,你不能将两个词 apples 和 oranges加起来。你需要将文本转换为数字才能对单词应用数学运算。

词嵌入实际上是一类技术,单个词在预定义的向量空间中被表示为实数向量,每个单词都映射到一个向量。举个例子,比如在一个文本中包含“猫”“狗”“爱情”等若干单词,而这若干单词映射到向量空间中,“猫”对应的向量为(0.1 0.2 0.3),“狗”对应的向量为(0.2 0.2 0.4),“爱情”对应的映射为(-0.4 -0.5 -0.2)(本数据仅为示意)。像这种将文本X{x1,x2,x3,x4,x5……xn}映射到多维向量空间Y{y1,y2,y3,y4,y5……yn },这个映射的过程就叫做词嵌入。
之所以希望把每个单词都变成一个向量,目的还是为了方便计算,比如“猫”,“狗”,“爱情”三个词。对于我们人而言,我们可以知道“猫”和“狗”表示的都是动物,而“爱情”是表示的一种情感,但是对于机器而言,这三个词都是用0,1表示成二进制的字符串而已,无法对其进行计算。而通过词嵌入这种方式将单词转变为词向量,机器便可对单词进行计算,通过计算不同词向量之间夹角余弦值cosine而得出单词之间的相似性。
在这里插入图片描述

2. 词嵌入的方法

SKlearn 库中可以构

### 自然语言处理中的表示方法 #### 一、基础概念 自然语言处理(NLP)涉及让计算机理解人类语言的任务。为了使计算机能有效处理文本,需将文本转换为数值型特征向量的形式,这一过程即称为表示[^1]。 #### 二、传统表示方法 ##### (一)One-Hot 编码 这是一种最简单的表示方式,它给每个单分配一个唯一的索引,在整个汇表大小维度的空间里只有该位置上的值为1其余均为0来代表这个单。这种方法简单直观但是存在明显的局限性——产生的向量非常稀疏,并且两个不同的即使意义相近也会被映射到完全不相关的空间中去[^2]。 ```python from sklearn.preprocessing import OneHotEncoder import numpy as np encoder = OneHotEncoder(sparse=False) X = [['red'], ['green']] one_hot_encoded_X = encoder.fit_transform(X) print(one_hot_encoded_X) ``` ##### (二)模型(Bag of Words, BoW) 此方法统计文档内各个汇出现次数构成特征向量,忽略了语顺序信息;对于长度较长的文章来说可能会丢失很多上下文关联的信息。 ```python from sklearn.feature_extraction.text import CountVectorizer corpus = [ 'This is the first document.', 'This document is the second document.' ] vectorizer = CountVectorizer() X = vectorizer.fit_transform(corpus).toarray() print(vectorizer.get_feature_names_out()) print(X) ``` ##### (三)TF-IDF (Term Frequency-Inverse Document Frequency) 通过计算某个项在整个语料库里的重要程度来进行加权调整后的BoW版本,一定程度缓解了单纯基于频率带来的偏差问题,但仍未能很好地反映汇间的语义相似度关系。 ```python from sklearn.feature_extraction.text import TfidfVectorizer tfidf_vectorizer = TfidfVectorizer() Tfidf_matrix = tfidf_vectorizer.fit_transform(corpus).toarray() print(tfidf_vectorizer.get_feature_names_out()) print(Tfidf_matrix) ``` #### 三、现代嵌入式(Embedding)技术 随着深度学习的发展,出现了更加先进的表示方案—Word Embeddings(词嵌入),这类方法试图把每一个都投影到低维连续实数空间内的稠密向量上来表示,使得几何距离能够反映出某些意义上的语义接近性。典型例子包括但不限于: - **Word2Vec**: 利用神经网络训练得到固定长度的分布式表示; - **GloVe**(Global Vectors): 基于矩阵分解的思想构建全局共现概率分布下的最优解; - **FastText**: Facebook提出的改进版CBOW/Skip-Gram架构,特别适合处理罕见字/未登录的情况。 上述三种都是预训练好的静态embedding框架,而近年来兴起的一些动态微调机制如ELMo(Efficient Language Model),BERT(Bidirectional Encoder Representations from Transformers)则进一步提升了下游任务的表现力,因为它们可以根据具体应用场景灵活改变内部参数从而获得更好的适应能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值