自然语言处理(一):基于统计的方法表示单词

1. 共现矩阵

将一句话的上下文大小窗口设置为1,用向量来表示单词频数,如:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将每个单词的频数向量求出,得到如下表格,即共现矩阵
在这里插入图片描述
我们可以用余弦相似度(cosine similarity)来计算单词向量的相似性:
similarity ⁡ ( x , y ) = x ⋅ y ∥ x ∥ ∥ y ∥ = x 1 y 1 + ⋯ + x n y n x 1 2 + ⋯ + x n 2 y 1 2 + ⋯ + y n 2 \operatorname{similarity}(\boldsymbol{x}, \boldsymbol{y})=\frac{\boldsymbol{x} \cdot \boldsymbol{y}}{\|\boldsymbol{x}\|\|\boldsymbol{y}\|}=\frac{x_{1} y_{1}+\cdots+x_{n} y_{n}}{\sqrt{x_{1}^{2}+\cdots+x_{n}^{2}} \sqrt{y_{1}^{2}+\cdots+y_{n}^{2}}} similarity(x,y)=x∥∥yxy=x12++xn2 y12++yn2 x1y1++xnyn

有时会出现分母为0的情况,在具体代码实现的时候,我们可以加上一个微小值,如1e-8

def cos_similarity(x, y, eps=1e-8):
	nx = x / (np.sqrt(np.sum(x ** 2)) + eps)
	ny = y / (np.sqrt(np.sum(y ** 2)) + eps)
 	return np.dot(nx, ny)

2. 点互信息

在语料库中可能会看到很多“…the car…”这样的短语。实际上,与 the相比,drive和 car 的相关性更强。为了避免这种情况,可以引入PMI

PMI ⁡ ( x , y ) = log ⁡ 2 P ( x , y ) P ( x ) P ( y ) = log ⁡ 2 C ( x , y ) N C ( x ) N C ( y ) N = log ⁡ 2 C ( x , y ) ⋅ N C ( x ) C ( y ) \operatorname{PMI}(x, y)=\log _{2} \frac{P(x, y)}{P(x) P(y)}=\log _{2} \frac{\frac{\boldsymbol{C}(x, y)}{N}}{\frac{\boldsymbol{C}(x)}{N} \frac{\boldsymbol{C}(y)}{N}}=\log _{2} \frac{\boldsymbol{C}(x, y) \cdot N}{\boldsymbol{C}(x) \boldsymbol{C}(y)} PMI(x,y)=log2P(x)P(y)P(x,y)=log2NC(x)NC(y)NC(x,y)=log2C(x)C(y)C(x,y)N

P(x) 表示 x 发生的概率,P(y) 表示 y 发生的概率,P(x, y) 表示 x
和 y 同时发生的概率。PMI 的值越高,表明相关性越强。

这里假设语料库的单词数量(N)为 10 000,the 出现 100 次,car 出现 20 次,drive 出现 10 次,the 和 car 共现 10 次,car 和 drive 共现 5 次。

P M I ( " t h e " , " c a r " ) = l o g 2 10 ⋅ 10000 1000 ⋅ 20 ≈ 2.32 PMI("the","car")=log_2\frac{10\cdot 10000}{1000 \cdot 20}\approx 2.32 PMI("the","car")=log210002010100002.32
P M I ( " c a r " , " d r i v e " ) = l o g 2 5 ⋅ 10000 20 ⋅ 10 ≈ 7.79 PMI("car","drive")=log_2\frac{5\cdot 10000}{20 \cdot 10}\approx 7.79 PMI("car","drive")=log220105100007.79

得出的PMI值,后者比前者要高,这是我们所需要的结果

3. 降维(奇异值分解)

奇异值分解(Singular Value Decomposition,SVD)。SVD 将任意矩阵分解为 3 个矩阵的乘积,如下式所示:

X = U S V T X=USV^T X=USVT

上面的例子只考虑了一句话中少量单词的共现矩阵,如果我们使用一个真正的语料库,那么这个矩阵将变得十分庞大,这是一个很大的稀疏矩阵,我们需要对其进行降维,这里用到奇异值分解。
在numpy中可以用

U, S, V = np.linalg.svg()

在这里插入图片描述
在这里插入图片描述
我们只需要取矩阵U的前两个元素即可将其降维到二维向量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于机器学习的自然语言处理(Natural Language Processing, NLP)技术研究是利用机器学习方法来处理和理解人类语言的技术领域。下面是一些见的基于机器学习的NLP技术研究方向: 1. 词嵌入(Word Embedding):词嵌入是将单词映射到低维向量空间的技术,它可以捕捉单词之间的语义和语法关系。常见的词嵌入模型包括Word2Vec、GloVe和FastText等。 2. 序列标注(Sequence Labeling):序列标注是指将输入的序列(如句子)中的每个元素(如单词)进行分类的任务。常见的序列标注任务包括命名实体识别(Named Entity Recognition, NER)、词性标注(Part-of-Speech Tagging)和语义角色标注(Semantic Role Labeling)等。 3. 语义角色标注(Semantic Role Labeling, SRL):SRL是指将句子中的每个单词与其在句子中扮演的语义角色进行关联的任务。例如,对于句子"John eats an apple",SRL可以将"John"标注为施事角色,"eats"标注为谓事角色,"an apple"标注为受事角色。 4. 机器翻译(Machine Translation):机器翻译是指将一种语言的文本自动翻译成另一种语言的任务。基于机器学习的机器翻译方法包括统计机器翻译(Statistical Machine Translation, SMT)和神经机器翻译(Neural Machine Translation, NMT)等。 5. 文本分类(Text Classification):文本分类是指将文本分为不同的类别或标签的任务。常见的文本分类任务包括情感分析(Sentiment Analysis)、垃圾邮件过滤(Spam Detection)和新闻分类等。 6. 问答系统(Question Answering):问答系统是指根据用户提出的问题,从大量的文本中找到相应的答案。基于机器学习的问答系统可以利用文本匹配、信息抽取和推理等技术来实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值