机器学习--如何将NLP应用到深度学习(3)

数据收集以后,我们下面接着要干的事情是如何将文本转换为神经网络能够识别的东西。

词向量

作为自然语言,只有被数学化才能够被计算机认识和计算。数学化的方法有很多,最简单的方法是为每个词分配一个编号,这种方法已经有多种应用,但是依然存在一个缺点:不能表示词与词的关系。

词向量是这样的一种向量[2.1, -3.31, 83.37, 93.0, -18.2, ……],每一个词对应一个向量,词义相近的词,他们的词向量距离也会越近(欧氏距离、夹角余弦)

词向量有一个优点,就是维度一般较低,一般是50维或100维,这样可以避免维度灾难,也更容易使用深度学习

词向量的原理?

词向量的训练是一种无监督学习,也就是没有标注数据,给我n篇文章,我就可以训练出词向量。

基于三层神经网络构建n-gram语言模型(词向量顺带着就算出来了)的基本思路:

最下面的w是词,其上面的C(w)是词向量,词向量一层也就是神经网络的输入层(第一层),这个输入层是一个(n-1)×m的矩阵,其中n-1是词向量数目,m是词向量维度

第二层(隐藏层)是就是普通的神经网络,以H为权重,以tanh为激活函数

第三层(输出层)有|V|个节点,|V|就是词表的大小,输出以U为权重,以softmax作为激活函数以实现归一化,最终就是输出可能是某个词的概率。

另外,神经网络中有一个技巧就是增加一个从输入层到输出层的直连边(线性变换),这样可以提升模型效果,这个变换矩阵设为W

假设C(w)就是输入的x,那么y的计算公式就是y = b + Wx + Utanh(d+Hx)

这个模型里面需要训练的有这么几个变量:C、H、U、W。利用梯度下降法训练之后得出的C就是生成词向量所用的矩阵,C(w)表示的就是我们需要的词向量

怎样得到我们需要的词向量?

感觉别个写的很复杂的样子呀,不会怎么办,有个简单有效的解决方案就是google的word2vec工具,我们可以把需要训练的样本数据通过word2vec转换为二进制集合。

环境准备:

1、centos7.0

2、gcc

3、python-jieba

4、locale zh_CN.UTF-8

第一步
准备工作

咱们要准备一个分好词的文本文件,用jieba分词即可。

命名为train.txt

接着下载word2vec工具,这个c写的,需要编译,我已经编译完成,可以直接使用。编译后:

第二步
训练词向量

训练命令:

./word2vec -train train.txt -output vectors.bin -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -thread 12 -binary 1

训练成功后会生成一个vectors.bin文件,这个就是训练好的词向量的二进制文件

第三步
测试,利用词向量寻找近义词

如上图,则说明我们的词向量训练成功。

时间: 2024-10-12 23:48:27

机器学习--如何将NLP应用到深度学习(3)的相关文章

机器学习--如何将NLP应用到深度学习

数据收集以后,我们下面接着要干的事情是如何将文本转换为神经网络能够识别的东西. 词向量 作为自然语言,只有被数学化才能够被计算机认识和计算.数学化的方法有很多,最简单的方法是为每个词分配一个编号,这种方法已经有多种应用,但是依然存在一个缺点:不能表示词与词的关系. 词向量是这样的一种向量[2.1, -3.31, 83.37, 93.0, -18.2, --],每一个词对应一个向量,词义相近的词,他们的词向量距离也会越近(欧氏距离.夹角余弦) 词向量有一个优点,就是维度一般较低,一般是50维或10

基于C#的机器学习--c# .NET中直观的深度学习

在本章中,将会学到: l  如何使用Kelp.Net来执行自己的测试 l  如何编写测试 l  如何对函数进行基准测试 Kelp.Net是一个用c#编写的深度学习库.由于能够将函数链到函数堆栈中,它在一个非常灵活和直观的平台中提供了惊人的功能.它还充分利用OpenCL语言平台,在支持cpu和gpu的设备上实现无缝操作.深度学习是一个非常强大的工具,对Caffe和Chainer模型加载的本机支持使这个平台更加强大.您将看到,只需几行代码就可以创建一个100万个隐藏层的深度学习网络. Kelp.Ne

[转]机器学习、深度学习、数据挖掘各种资源整理

Deep Learning(深度学习): ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习):一 ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习):二 Bengio团队的deep learning教程,用的theano库,主要是rbm系列,搞python的可以参考,很不错. deeplearning.net主页,里面包含的信息量非常多,有software, reading list, research lab, dataset, demo等,

5分钟内看懂机器学习和深度学习的区别

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由liuxuewen发表于云+社区专栏 在本文中,我们将研究深度学习和机器学习之间的差异.我们将逐一了解它们,然后讨论他们在各个方面的不同之处.除了深度学习和机器学习的比较外,我们还将研究他们未来的趋势和走向. 深度学习 VS 机器学习 深度学习与机器学习简介 一.什么是机器学习? 通常,为了实现人工智能,我们使用机器学习.我们有几种算法用于机器学习.例如: Find-S算法 决策树算法(Decision trees) 随机森林算法

聊天机器人(chatbot)终极指南:自然语言处理(NLP)和深度机器学习(Deep Machine Learning)

在过去的几个月中,我一直在收集自然语言处理(NLP)以及如何将NLP和深度学习(Deep Learning)应用到聊天机器人(Chatbots)方面的最好的资料. 时不时地我会发现一个出色的资源,因此我很快就开始把这些资源编制成列表. 不久,我就发现自己开始与bot开发人员和bot社区的其他人共享这份清单以及一些非常有用的文章了. 在这个过程中,我的名单变成了一个指南,经过一些好友的敦促和鼓励,我决定和大家分享这个指南,或许是一个精简的版本 - 由于长度的原因. 这个指南主要基于Denny Br

深度学习 vs 机器学习 vs 模式识别

整理:深度学习 vs 机器学习 vs 模式识别 发表于2015-03-24 22:58| 78882次阅读| 来源个人博客| 41 条评论| 作者Tomasz Malisiewicz 模式识别深度学习机器学习数据科学家 摘要:本文我们来关注下三个非常相关的概念(深度学习.机器学习和模式识别),以及他们与2015年最热门的科技主题(机器人和人工智能)的联系,让你更好的理解计算机视觉,同时直观认识机器学习的缓慢发展过程. [编者按]本文来自CMU的博士,MIT的博士后,vision.ai的联合创始人

专家观点碰撞:深度学习能否取代其他机器学习算法

专家观点碰撞:深度学习能否取代其他机器学习算法 摘要:深度学习在最近两年非常火爆,但深度学习能否取代其他机器学习算法?纽约大学研究生Ran Bi根据Quora上的一个讨论总结了不同的观点,CSDN编辑将其翻译如下,并加上一些国内人工智能专家的观点,供大家参考. [编者按]深度学习在最近两年非常火爆,但深度学习能否取代其他机器学习算法?纽约大学研究生Ran Bi根据Quora上的一个讨论总结了不同的观点,CSDN编辑将其翻译如下,并加上一些国内人工智能专家的观点,供大家参考. 深度学习迅速地成长起

深度学习能否取代其他机器学习算法

[编者按]深度学习在最近两年非常火爆,但深度学习能否取代其他机器学习算法?纽约大学研究生Ran Bi根据Quora上的一个讨论总结了不同的观点,CSDN编辑将其翻译如下,并加上一些国内人工智能专家的观点,供大家参考. 深度学习迅速地成长起来了,并且以其疯狂的实证结果着实令我们惊奇.Quora上有一个关于深度学习是否会让其他的机器学习算法过时的讨论.特别地,相关的算法,如反向传播.HMM会像感知机一样过时吗? 这很难回答.Google DeepMind研发工程师Jack Rae对此有一个有趣的回答

相比于深度学习,传统的机器学习算法难道就此没落了吗,还有必要去学习吗?

自从 MIT Technology Review(麻省理工科技评论) 将 深度学习 列为 2013 年十大科技突破之首.加上今年 Google 的 AlphaGo 与 李世石九段 惊天动地的大战,AlphaGo 以绝对优势完胜李世石九段.人工智能.机器学习.深度学习.强化学习,成为了这几年计算机行业.互联网行业最火的技术名词. 其中,深度学习在图像处理.语音识别领域掀起了前所未有的一场革命.我本人是做图像处理相关的,以 2016 年计算机视觉三大会之一的 Conference on Comput