自然语言处理:从基础到RNN和LSTM
发起:唐里
校对:敬爱的勇哥
审核:付腾
参与翻译(2)人:路双宁、黄闯
原文:Natural Language Processing: From Basics to using RNN and LSTM
机器机器学习领域最令人着迷的进展之一,是培养机器理解人类交流的能力的进步。机器学习的这一分支被称为自然语言处理。
本文尝试解释自然语言处理的基础知识,以及随着深度学习和神经网络的发展,自然语言处理所取得的快速进展。
在我们深入研究之前,有必要了解一些基础知识。
语言是什么?
一种语言,基本上是一个由人类社会共享的固定的词汇表,用来表达和交流他们的思想。
这个词汇表作为他们成长过程的一部分被世代相传,并且大部分保持不变,每年会增加很少的部分作为补充。
诸如词典之类的精细资源得到了维护,以便一个人遇到一个新词时,他或她可以通过参考词典来了解其含义。一旦人们接触到这个词,它就会被添加到他或她自己的词汇表中,可以用于进一步的交流。
计算机如何理解语言?
计算机是在数学规则下工作的机器。它对人类可以轻松做到的事 ...
用Python可视化钢琴演奏录音
发起:唐里
校对:敬爱的勇哥
审核:唐里
参与翻译(1)人:路双宁
原文:Visualizing Musical Performance
作为一个音乐家兼数据科学家,我对音乐表演可视化的想法很感兴趣。在这篇文章中,我简述了如何使用MAESTRO数据集对钢琴演奏的录音可视化。本文提供了一些例子。下面,我使用Python的Mido,Seaborn和Pandas包,用代码一步一步地说明,打开、清理和可视化MAESTRO数据集中的钢琴表演。文章最后以弗朗兹·李斯特《匈牙利狂想曲第2号》的可视化作结,并录下了这首曲子,让读者可以通过可视化来观看这首曲子的展开。还提供了用于创建可视化的完整Python脚本的链接。
《巴赫D小调前奏曲与赋格》散点图
数据
MAESTRO数据集包含超过200小时的国际钢琴电子竞赛的钢琴表演。参赛者使用雅马哈自动演奏钢琴演奏,这种原声钢琴还可以捕捉和回放乐器数字接口(MIDI)数据。MAESTRO数据集包含参赛者演奏的MIDI数据和演奏的录音。
MIDI是一种允许数码乐器通过“消息”相 ...
概率论学习笔记
学习概率论的过程中的一些记录
概率论部分 pdf下载
数理统计部分 pdf下载
用Spark来做大规模网络图形挖掘:Part 2
发起:酱番梨
校对:唐里
审核:敬爱的勇哥
参与翻译(6)人:邓普斯•杰弗、liuxingbusi、路双宁、申请成为白菜、froginhot、阿阿飞
原文:Large-scale Graph Mining with Spark: Part 2
分为两部分的教程:
第1部分:无监督学习的图表。
第2部分(你现在正在这里!):你如何运用神奇的图形能力。 我们将讨论标签传播,Spark GraphFrames和结果。 GitHub上的这里有样本图和笔记本的项目:
在第1部分(这里),我们看到了如何用图解决无监督的机器学习问题,因为社区是集群。我们可以利用结点之间的边缘作为相似性或关系的指示器,就像在特征空间中距离用于度量其他类型的集群相似性一样。
在这里,我们深入了解社区检测的方法。我们构建并挖掘了一个大型的网络图,学习如何在Spark中实现一种称为标签传播算法(LPA)的社区检测方法。
通过标签传播检测社区
虽然有许多社区检测技术,但我只关注一种:标签传播。对于其他方法的概述,我推荐Santo Fortun ...
记Next主题Mathjax引擎的一次奇怪的渲染问题
当你搜索到并点开这篇博文的时候,你的公式渲染很可能也遇到问题了。当初我之所以选择Next主题,就是因为他支持MathJax,可以渲染公式。但是最近,我在浏览之前的博文的时候,突然发现有些数学符号没有被渲染出来。这些符号之前都是被正确渲染的:
但现在他们却都变成了这个样子:
不知道它们是从什么时候开始变成这样的,按理说之前它们好好的,突然变成这样,那应该是我对一些依赖包做了改动。
在此我将解决问题的过程做一个记录,很可能你出现的问题和我不太一样,但是我解决问题的过程和文中给出的几个链接可能对你很有帮助。
事实上,我的确在最近执行过
1npm update
这条命令,更新过一次依赖包,但问题是不是出在这里呢?
我先去百度了一下Next主题的MathJax渲染的问题。在简书的这篇博文里,找到了这样一段话:
Hexo默认使用"hexo-renderer-marked"引擎渲染网页,该引擎会把一些特殊的markdown符号转换为相应的html标签,比如在markdown语法中,下划线'_'代表斜体,会被渲染引擎处理为<em>标签。
……
类似的 ...
Universal Transformers
博客原文:Universal Transformers
作者:Mostafa Dehghani
感谢Stephan Gouws对本博客的编写和改进提供的帮助
最近,Transformers在一系列序列建模任务中成为替代RNNs的竞争者。它解决了RNNs的一个重大缺点,即其固有的顺序计算,这阻碍了输入序列元素的并行化,同时通过它的自注意力机制解决了梯度消失的问题。
实际上,Transformers完全依赖于自注意力机制来计算输入符号的一系列上下文相关的向量空间表示(参见这篇博客来了解Transformers的细节)。这就引出了Transformers的两个主要特性:
直接并行化:和RNNs一样没有时间上的连接,每一个符号的计算可以完全并行。
全局接受域:每个符号的表示都直接由其他符号的表示通知(相比之下,卷积架构通常只有有限的接受域)
虽然Transformers在许多任务中相继取得了重大的进步,但它也有一些缺点:
没有循环归纳偏置:Transformer通过交换RNN的循环归纳偏置实现并行化。然而,循环归纳偏置对于推广不同复杂度的不同序列建模任务具有重要意义。例如,当需 ...
现代自然语言处理最佳、最新进展
博客原文:The Best and Most Current of Modern Natural Language Processing
作者:Victor Sanh
Photo by Radu Marcusu on Unsplash
过去的两年,NLP社区目睹了各种任务和应用的加速发展🚀。这一进展是由于我们传统地构建NLP系统的方式发生了转变:长久以来,我们使用预训练的词嵌入,像word2vec或GloVe来初始化神经网络的第一层,然后用单个数据集通过监督学习来训练具体任务的体系结构。
最近,一些作品证明了我们可以在网络规模的数据集📖上学习分层上下文表示,利用无监督(或半监督)信号例如语言模型,把这些预训练任务的转换成下游任务(迁移学习)。令人鼓舞地是,这种转换导致了各种下游应用的重大进步,从问答,到自然语言推理,再到的句法分析。
我该读哪些论文来了解现代NLP的最新趋势?
几周前,我的一个朋友决定潜心研究NLP。他已经有机器学习和深度学习的背景,所以他真诚地问我:“我该读哪些论文来了解现代NLP的最新趋势?”。 👩🎓👨🎓
这是一个好问题,尤其是当你考虑到 ...
性代数回顾及参考——矩阵积分
前言
之前没有接触过矩阵积分,在学习cs229的过程中遇到了,好在课程给了相关的参考文献。这篇Linear Algebra Review and Reference对复习线性代数的知识很有帮助,遂决定将其中第四部分矩阵积分的内容翻译过来。前三部分在大学本科阶段的线性代数都会涉及,在此不做翻译。
4. 矩阵积分
标准的线性代数课程都会包含前面章节的话题,但其中有一项看起来不会被经常提及(但我们接下来会经常用到),那就是对积分在向量方面的扩展。尽管我们实际用的积分相对比较琐碎,符号常常使事情看起来比实际困难得多。这部分我们给出一些关于矩阵积分基本的定义和例子。
4.1 梯度
设f:Rm×n→Rf:\mathbb{R}^{m \times n} \rightarrow \mathbb{R}f:Rm×n→R是一个函数,输入是一个m×nm \times nm×n的矩阵AAA,返回值是一个实数。则fff的梯度是对矩阵的每一个位置求偏导数,定义如下:
∇Af(A)∈Rm×n=[∂f(A)∂A11∂f(A)∂A12⋯∂f(A)∂A1n∂f(A)∂A21∂f(A)∂A22⋯∂f(A)∂A2n⋮⋮⋱⋮∂ ...
Tensorflow学习之路
1.创建图
1import tensorflow as tf
12345m1 = tf.constant([[3,3]])m2 = tf.constant([[2],[3]])# 创建一个矩阵乘法product = tf.matmul(m1,m2)print(product)
Tensor("MatMul_1:0", shape=(1, 1), dtype=int32)
1234# 定义一个会话,启动默认图with tf.Session() as sess: result = sess.run(product) print(result)
[[15]]
2.变量
1import tensorflow as tf
12345678910111213x = tf.Variable([1,2])a = tf.constant([3,3])# 创建一个减法opsub = tf.subtract(x,a)# 创建一个加法opadd = tf.add(x,a)init = tf.global_variables_initializer()with tf.Ses ...
各种工具设置代理汇总
前言
你有没有为了给Atom安装一个简单的插件而不得不苦等几小时最后却被告知网络错误的经历?有没有遇到过git一个比较大的仓库时网速只有1kb/s的情况?唯一在这里做了一个对这些工具&软件设置代理的方法,方便以后使用时能更快的解决问题而不是在百度上浪费时间。唯一使用的是socks5代理,使用其他代理的小伙伴请酌情参考。
git设置代理
设置代理
12git config --global http.proxy 'socks5://127.0.0.1:1080'git config --global https.proxy 'socks5://127.0.0.1:1080'
取消代理
12git config --global --unset http.proxygit config --global --unset https.proxy
Atom设置代理
设置代理
来源:https://blog.csdn.net/xianghongai/article/details/53197510
123456789apm confi ...
网易云——情话说给你听
听网易云的日常,喜欢从歌曲里挑选一些评论收藏。网易云,情话说给你听。
因为不了解而结合,因为了解而分手,陌生引起了热恋的冲动,彼此的不同造成了相互吸引,但是当热恋褪去,真正的结合才刚刚开始,所以在一起之后才发现并不了解对方,其实很正常,真正的深爱,往往产生于彼此磨合的鲜血淋漓,在有了挣扎,冲突忍耐矛盾之后的爱情,才更有价值。
Kishi Bashi——《I Am the Antichrist to You》
有个卖婚纱的婆婆说: 卖了这么多年的婚纱 从未见到会有哪个男孩 在帘子拉开时发出“哇”的惊叹 后来她搞了这么多年 才明白 大概是他们都没能留住年少时的爱人吧 有什么用呢 试婚纱的女孩子或许也曾在试衣间里流过眼泪 她也没能嫁给十七岁的追风少年
浪哥——《晚风》
1993年,一个非洲小伙与母亲得到了一盘磁带,里面有一首中文歌成为他母亲生前的最爱。后来他母亲去世,他想找到这首歌,找了二十年没有结果。终于有一天遇到了一对台湾情侣,才知道那首歌是罗大佑的《恋曲1990》,当他再次听到这个旋律时眼泪止不住地流了下来
罗大佑——《恋曲1990》
愿你从今往后 就不再回头
心之所向着向往自由
不会 ...
数据结构入门——排序
插入排序
直接插入排序
1234567891011void InsertSort(ElemType A[],int n){ int i,j; for(i = 2;i <= n;i++){ if(A[i].key < A[i-1].key){ A[0] = A[i]; //复制为哨兵,A[0]不存放元素 for(j = i-1;A[0].key < A[j].key;--j){ A[j+1] = A[j]; } } }}
折半插入排序
1234567891011121314151617181920void InsertSort(ElemType A[],int n){ int i,j,low,high,mid; for(i = 2;i <= n;i++){ A[0] = A[i]; ...
数据结构入门——图的相关算法(二)
综合问题
1. 可达性问题。即判断从i到j是否存在一条路径。用BFS或DFS可解。
1234567891011121314151617181920212223int vis[MaxSize] = {0};bool Exist_Path_BFS(Graph G,int i,int j){ int k; int queue[MaxSize]; int front=0,rear=0; vis[i] = 1; queue[rear++] = i; while(front < rear){ k = queue[front++]; for(w=FirstNeighbor(G,k);w>=0;w=NextNeighbor(G,k,w)){ if(vis[w] == 0){ if(w == j) return true; vis[w] = 1; ...
数据结构入门——图的相关算法(一)
写在前面
距离19年研究生考试越来越近了,专业课的算法设计题考数据结构中的图的部分。感觉这部分比较困难,我大学没参加过ACM,之前也从来没写过图的代码,照着王道的书花了一天撸了四百行代码,着实费劲。函数名、变量名甚至代码结构都和王道的相关代码相似。包括BFS和DFS, 分别用邻接矩阵和邻接表实现了,还有SPFA, Floyd, Dijkstra,这些算法都用题目验证过,保证正确性。在此附上完整代码,可以直接copy运行。由于王道书上已经写了不少注释了,故这些代码的注释写得很少,看不懂的地方请在下方评论,我尽可能回复。
spfa算法是受博主 xunalove 转发的这篇文章 最快最好用的——spfa算法 的启发写出来的。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 ...
数据结构入门——树的相关算法(二)
LCA(最近公共祖先)问题
顺序存储方式
1234567891011ElemType LeastCommonAncestor(SqTree T,int i,int j){ if(T[i] != "#" && T[j] != "#"){ while(i != j){ if(i > j) i = i/2; else j = j/2; } return T[i]; } return NULL;}
二叉链表存储方式
12345678910111213BiNode *LeastCommonAncestor(BiNode * T,BiNode * p,BiNode * q){ if(T == NULL || T == p || T == q) return T; BiNode * left = LeastCommonAn ...
数据结构入门——树的相关算法(一)
写在前面
本系列是记录与总结性质的文章,原创的内容少,记录的内容与计算机考研有关。在考研的范畴里,与树相关的算法很多,在程序设计题中属于必考题。我准备用三篇博客来总结与树有关的算法。
数据结构的定义和规范参考严书^1 和王道^2。前一本是很多高校的指定参考书,后一本是考研辅导书。
最后,由于写博客的时间仓促,文中若有错误之处,恳请朋友们批评指正。
工具
在考试中,实现树的相关算法时很可能会用到栈或队列,可以直接把他们作为一个工具来解决问题。即,把栈或队列的声明和操作写得很简单,不必分函数写出。以顺序栈的操作为例:
(1) 声明一个栈并初始化:
123//下面两句连声明带初始化都有了ElemType stack[maxSize];int top = -1;
(2)元素进栈
1stack[++top] = x; //仅一句话即实现进栈操作
(3)元素x出栈
1x = stack[top--];
更简单的,可以直接使用栈和队列的基本操作的函数来实现操作。栈的基本操作有:
123456789InitStack(S); //初始化StackEmpty(S); //判空Push(S,x); ...
数据结构-复杂度分析
本系列是记录与总结性质的文章,原创的内容少,记录的内容大都与考研有关。写博客的时间仓促,文中若有错误之处,恳请指正。
计算复杂度
以下内容几乎全部摘自《模式分类》[^1]
为了分析和描述某个问题或为解决为题而设计的某个特定算法的难度,我们转而讨论计算复杂度的概念。我们使用函数的阶这一概念,并且还使用渐进记号O\OmicronO(大欧),Ω(omega)\Omega (omega)Ω(omega)和Θ(theta)\Theta (theta)Θ(theta)。
渐进上界 O(g(x))={f(x)Ο(g(x)) = \{ f(x)O(g(x))={f(x):存在正的常数ccc和x0x_0x0,对于所有的x≥x0x \geq x_0x≥x0,有0≤f(x)≤cg(x)}0 \leq f(x) \leq cg(x) \}0≤f(x)≤cg(x)}
渐进下界 Ω(g(x))={f(x)\Omega (g(x)) = \{ f(x)Ω(g(x))={f(x):存在正的常数ccc和x0x_0x0,对于所有的x≥x0x \geq x_0x≥x0,有0≤cg(x)≤f(x)}0 \l ...
2018年4月份小问题总结
1.连接MySQL时的一条警告
在使用Hive的时候,由于metstore设置的数据库是服务器上的MySQL,这个MySQL版本是5.7.15,终端会弹下面的一条警告:
123456WARN: Establishing SSL connection without server's identity verification is not recommended.According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be establishedby default if explicit option isn't set. For compliance with existing applications notusing SSL the verifyServerCertificate property is set to 'false'.You need either to explicitly disable SSL by setting ...
使用Python的Pandas库实现基于用户的协同过滤推荐算法
参考:
【笔记3】用pandas实现矩阵数据格式的推荐算法 (基于用户的协同)
环境
版本
Python
3.5.5
Pandas
0.22.0
123456789101112131415import pandas as pddf = Nonedef dataSet2Matrix(filename): """ 导入训练数据 :param filename: 数据文件路径 """ table_name = ['userId', 'movieId', 'rating', 'timestamp'] # 按照','分割读取csv文件 ratings = pd.read_table(filename, sep=',', header=0, names=table_name) global df # 转换成User-Item矩阵 ...
Hadoop2.7.5伪分布式配置及遇到的问题总结
系统信息
操作系统:Ubuntu 16.04.4 LTS 64bit
Hadoop版本:Hadoop 2.7.5
JDK版本:JDK 1.8.0_161 64bit
参考资料
hadoop2.x配置
hadoop2.7.3伪分布式搭建之三------>Hadoop2.7.3的安装
NameNode进程未启动
一、修改配置文件
关于JDK的安装及其环境变量的配置,此处不作赘述。
关于hosts和hostname的说明:
由于是单机伪分布,此处我将hostname修改成localhost,修改/etc/hostname即可。/etc/hosts文件只保留127.0.0.1 localhost,修改完后记得重启电脑使之生效。
在Apache Hadoop官网Release页面选择好某个版本的binary版,下载,解压至/usr/local/下
这里,我的hadoop目录为/usr/local/hadoop-2.7.5
进入hadoop目录,首先新建文件夹tmp和hdfs,接着,在hdfs里面新建data和name两个文件夹
12mkdir tmp hdfsmkdir - ...