自然语言处理(NLP)-1.4 机器翻译与文件搜索(Machine Translation and Document Search)

1.词向量转换(Transforming word vectors)

1.1 基本原理

    概述:先得到源语言和目标语言的词向量,再通过变换矩阵R将源语言的词向量转换成目标语言的词向量,距离转换后词向量最近的词向量即为最可能的翻译结果

        

1.2 整体流程

    利用梯度下降法计算转换矩阵R:

        (1)通过弗罗贝尼乌斯范数计算损失值

        (2)计算损失值的梯度

        (3)用梯度更新R

       

1.2.1 弗罗贝尼乌斯范数(Frobenus norm)

    (1)弗罗贝尼乌斯范数

        定义:衡量矩阵的大小;是针对于矩阵的范数,类比于对向量的L2范数

        计算公式:

           

        例:即矩阵内各元素平方和再开根号

           

    (2)平方弗罗贝尼乌斯范数(Frobenus norm squared)

        定义:即弗罗贝尼乌斯范数的平方

        例:

           

    python实现

          

1.2.2 计算梯度

    使用平方弗罗贝尼乌斯范数作为损失函数,其导数计算如下:

       


2.K-近邻算法(K-nearest neighbors)

2.1 基本概念

    功能:在翻译时,使用变换矩阵R对源词向量X进行变换,但变换后的词向量XR并不能完全对应目标语言的词向量,因此需要算法搜索最相近的词向量选为最终结果

    例:"hello"经过R矩阵变换后,得到目标词向量XR,需要选择距离目标词向量最近的词向量作为结果,即从"salut"和"bonjour"中选择距离最近的

        

    常用方法:

        局部敏感哈希:基于哈希表的方法,通过一种精巧的哈希函数,使得相邻元素能被最大概率分到同一桶中,在同一桶中进行搜索,以减少搜索空间

        KD树:基于分层划分与二叉树的方法,通过使用一种特殊的数据结构,来减少搜索空间,从而加快搜索速度

2.2 近似最近邻搜索(Approximate nearest neighbors,ANN)

    定义:一类通过牺牲一定准确度来换取更快的搜索速度的方法,能够在较短时间内找出任何查询点的最近点

    原因:搜索整个空间十分缓慢,而通过ANN方法,能够在确保一定准确度的情况下,极大加快搜索速度

    功能:更高效计算K近邻问题

    原理:将空间用多组随机平面划分,如果两个点相距很近,则其有很大概率被划分在同一子空间,因此不用搜索全部空间,而是在每个子空间内进行搜索

        

    实现:

        

2.3 局部敏感哈希(Locality sensitive hashing)

    定义:一种ANN方法,通过一种精妙的哈希函数,将高维空间中的相近点映射到同一桶中,而后在相同桶中进行搜索已减少搜索空间

2.3.1 哈希函数与哈希表

    定义:将向量映射为一个哈希值,加快计算速度

    原理:高维空间中相邻的数据经过哈希函数映射到低维空间后,落入同一桶的概率很大,而不相邻的数据映射到同一桶的概率很小

       

    例子:

            

    实现:

        

2.3.2 具体方法

(1)超平面划分

    定义:通过划分超平面,将原数据空间分割为多个子空间

        

    方法:对于每个向量v,在超平面上与法线向量进行点乘运算,点乘结果的符号,说明其所在的方向

    例:点乘结果为正,表明两向量同向;结果为负,表明两向量反向

          

    实现:

        

(2)哈希值计算

    公式:

       

    例:通过点乘结果的符号来计算哈希值,为正h=1,为负h=0

       

    实现:

        


3.应用

3.1 机器翻译

    概述:通过词向量变换与k近邻搜索,将源语言词向量转换为目标语言词向量,再使用k近邻算法找出最接近的一项,即为翻译结果

       

3.2 文档搜索

    文档表示:一个文档可由其包含单词的词向量的和来表示;通过搜索与源文档词向量最近的目标文档词向量,即可找到与其含义最相似的文档

        

    实现:

        


课后作业代码:https://github.com/Ogmx/Natural-Language-Processing-Specialization

可将代码与数据下载至本地,使用jupyter notebook打开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ogmx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值