罗兰在MATLAB的艺术

把想法变成MATLAB

请注意

罗兰在MATLAB的艺术已经存档,不会被更新。

文本挖掘与MATLAB机器学习研究论文

发布或灭亡在学术界,他们说,你可以通过发表论文的分析学习学术研究的趋势。今天的嘉宾博客古原,碰到了机器学习的数据集文件提出了一个会议。让我们看看他发现!

内容

少量的2015篇论文

捏(代表“神经信息处理系统”)是一个机器学习和计算神经科学年会,会上讨论和论文揭示了该领域的专家正在研究。方便,你可以找到的数据从2015年从Kaggle的会议少量的2015篇论文页面。

让我们从Kaggle加载数据下载到当前文件夹。Kaggle提供一个SQLite数据库文件除了通常的CSV文件和SQLite文件包含的所有数据在CSV文件中。因为我们现在有configuration-free SQLite的支持金宝app数据库工具箱R2016a让我们给它一试。一旦你建立一个连接到databasefilesqlite,您可以使用SQL命令像“作者| | SELECT *”。更多细节关于SQLite的支持,阅读金宝app使用MATLAB接口SQLite。如果你没有数据库工具箱,您可以试一试readtable读CSV文件。

我也写了一个脚本nips2015_parse_html为了“accepted_papers解析HTML文件。html”,包含了作者的从属关系。检查一下如果您感兴趣的数据与MATLAB争吵。

db =“输出/ database.sqlite”;%数据库文件康涅狄格州= sqlite (db,“只读”);%建立连接作者=获取(康涅狄格州,“从作者的选择*);%与SQL命令获取数据论文=获取(康涅狄格州,“SELECT * FROM论文”);%与SQL命令获取数据PaperAuthors =获取(康涅狄格州,“SELECT * FROM PaperAuthors”);%与SQL命令获取数据关上(康涅狄格州)%紧密联系作者= cell2table(作者,“VariableNames”,{“ID”,“名字”});%转换为表论文= cell2table(论文,“VariableNames”,%转换为表{“ID”,“标题”,“EventType”,“PdfName”,“抽象”,“PaperText”});PaperAuthors = cell2table (PaperAuthors,“VariableNames”,%转换为表{“ID”,“PaperID”,“AuthorID”});html = fileread (“输出/ accepted_papers.html”);%从html加载文本nips2015_parse_html%解析html文本

论文作者联系

我们可以想象这组织接受论文的作者属于使用。让我们创建一个有向图与作者和所属的节点。我们限制了阴谋组织10个或更多的作者,但还包括一些较小的organizatoins如果作者有多个从属关系,包括较小的组织。前20名组织、附属的作者而言,在明亮的橙色颜色而另一些则在黄橙颜色。个人作者小蓝点。这是基于2015年论文从一个会议,所以一流组织每年可能不同。

T = AcceptedPapers (: {“名字”,“Org”});%子集表[T ~ idx] =独特(T)“行”);%删除重复的auth = t (1);%的作者org = cellstr (t (2));%组织w = accumarray (idx, 1);%计算的论文G =有向图(auth org w);%建立有向图G.Nodes。度=入度(G);%增加入度垃圾箱= conncomp (G,“OutputForm”,“细胞”,“类型”,“弱”);%得到连接组件binsizes = cellfun (@length、箱);%得到本大小小=垃圾箱(binsizes < 10);%如果本不到10独特小=(({}):小);%是小G = rmnode (G,小);%本中删除节点org = G.Nodes.Name (ismember (G.Nodes.Name org));%得到org节点度= G.Nodes.Degree (ismember (G.Nodes.Name org));%得到org节点入度[~,排名]=排序(度,“下”);%由入度等级topN = org(排名(1:20));%选择前20名别人= org (~ ismember (org topN));%选择别人日志(G.Nodes markersize =。度+ 2)* 3;% indeg标记大小线宽= 5 * G.Edges.Weight / max (G.Edges.Weight);%重量线宽%创建新的图h =情节(G,“MarkerSize”markersize,“线宽”线宽,“EdgeAlpha”,0.3);%绘制图突出(h, topN“NodeColor”,(。85。33。1])%突出前20节点突出(h,其他人,“NodeColor”,(。93。69。13])%突出别人labelnode (h,机构,组织)%标签节点标题({“少量的一份2015年的论文作者归属”;“10个或更多的作者”})%添加标题

纸Coauthorship

一篇论文的合著者可能来自不同的组织,这给了我们一个机会看到这些组织之间的关系。让我们创建一个有向图节点与作者和他们的论文。我们限制组织的阴谋集群与图5或更多的节点通过分离成connnected组件conncomp。相同的前20名组织的亮橙色的附属作者再次颜色而另一些则在黄橙颜色。有趣的是,图显示所有橙色点位于同一集群——因此所有前20名组织属于一个合作者网络。这是基于文件从一个会议,所以其他年结果可能非常不同。如果我们追踪纸coauthorship多个年,我们可能会发现一些隐藏的连接我们这里看不到。

T = AcceptedPapers (: {“Org”,“标题”});%子集表[T ~ idx] =独特(T)“行”);%删除重复的org = cellstr (t (1));%组织纸= t (2);%的论文w = accumarray (idx, 1);%计算的论文G =有向图(纸、组织、w);%建立有向图G.Nodes。度=入度(G);%增加入度垃圾箱= conncomp (G,“OutputForm”,“细胞”,“类型”,“弱”);%得到连接组件binsizes = cellfun (@length、箱);%得到本大小小=垃圾箱(binsizes < 5);%如果本不到5独特小=(({}):小);%是小G = rmnode (G,小);%本中删除节点org = G.Nodes.Name (ismember (G.Nodes.Name org));%得到org节点[~,maxBinIdx] = max (binsizes);%指数最大的组件topDocs = setdiff(垃圾箱{maxBinIdx}, org);%在最大文档组件isTopDoc = ismember (AcceptedPapers.Title topDocs);%得到指标的文档topDocIds =独特(AcceptedPapers.PaperID (isTopDoc));%获得这些文档的纸idisTopDoc = ismember (Papers.ID topDocIds);%得到指标的文档日志(G.Nodes markersize =。度+ 2)* 3;%得到org节点线宽= 10 * G.Edges.Weight / max (G.Edges.Weight);% indeg标记大小%创建新的图h =情节(G,“MarkerSize”markersize,“线宽”线宽,“EdgeAlpha”,0.3);%绘制图突出(h, topN“NodeColor”,(。85。33。1])%突出前20节点别人= org (~ ismember (org topN));%选择别人突出(h,其他人,“NodeColor”,(。93。69。13])%突出别人labelnode (h, topN (1),前20名的)%标签节点labelnode (h,其他人([1,4,18岁,29岁,72,92,96,99]),“别人”)%标签节点标题({少量的2015纸Coauthorship归属的;5或更多的节点})%添加标题

论文题目

找论文的主题,我很快接受论文的标题,选择35字跳了出来,我看到nips2015_topics.xlsx。如果你检查这个词云在顶部,你看到这些话。显然,这是一种应急的方法但是我只想得到一个快速的热门话题。如果你有兴趣更适当的方法,请查看我以前的帖子你能通过文本分析找到爱吗?

表包含标题,文摘PaperText列。我们应该用它来分析论文题目吗?标题往往是短暂的。摘要更长,更有可能包含关键短语,代表了论文题目,因为抽象,根据定义,一个高水平论文的内容的概述。论文的实际内容自然覆盖更多的细节,可能掩盖了论文的主题。让我们使用文摘我们的单词计数。

然后让我们来比较一下这些术语之间的相对频率最大的文档连接组件我们之前看到和其他文档。你可以看到一些这两组之间的差异。例如,很多寻呼机讨论“形象”,但论文的前20名组织经常少谈论它,他们讲到“图”。

主题= readtable (“nips2015_topics.xlsx”);%负载预选的话题DTM = 0(高度(论文),高度(主题);%文档词矩阵i = 1:高度(主题)%循环主题DTM (:, i) = cellfun (@length,%得到匹配的数量regexpi (Papers.Abstract Topics.Regex{我}));%在文摘找到这个词结束topDocTopics =总和(DTM (isTopDoc:));%最大字数在组件topDocTopics = topDocTopics。/笔(topDocTopics) * 100;%转换成相对百分比otherDocTopics =总和(DTM (~ isTopDoc,:));%字数otherDocTopics = otherDocTopics。/笔(otherDocTopics) * 100;%转换成相对百分比%创建新的图栏([topDocTopics;otherDocTopics]”)%条形图甘氨胆酸ax =;%得到当前的斧柄斧子。XTick = 1:高度(主题);%设置轴蜱虫斧子。XTickLabel = Topics.Keyword;%设置轴标记标签斧子。XTickLabelRotation = 90;%转动轴标记标签标题(的相对频率文档组织”一词)%添加标题传奇(“最大的集群文档”,其他文档的)%添加传奇xlim([0高度(主题)+ 1])%设置轴的限制ylabel (“比例”)%添加轴标签

主题分组主组合分析

让我们想象主题使用之间的关系主成分分析。由此产生的biplot第一和第二组件显示大约三个集群的相关话题。在最大的连接组件强调主题流行橙色和他们似乎跨所有三个集群。

紫色的集群是由主题的最大的连接组件和关注喜欢的话题马尔可夫链蒙特卡罗(密度),贝叶斯统计和随机梯度密度。

蓝色的集群似乎关注multi-armed强盗问题是机器学习的相关领域强化学习。主题“市场”和“风险”中强调橙色,表明论文这些主题的前20名组织可能集中在金融应用程序。

w = 1。/ var (DTM);%反变量方差[wcoeff,分数,潜伏,tsquared解释]=%加权主成分分析与wpca (DTM,“VariableWeights”,w);coefforth =诊断接头(sqrt (w)) * wcoeff;% wcoeff转向正交标签= Topics.Keyword;%的话题标签topT =主题。关键字((topDocTopics - otherDocTopics) > 1);%的话题在集群上%的新人物biplot (coefforth (:, 1:2),“分数”分数(:1:2),% 2 d biplot与前两个比较“VarLabels”、标签)标题(论文题目的主成分分析)%添加标题i = 1:长度(topT)%循环流行话题htext = findobj (gca),“字符串”我,topT {});%找到文本对象htext。颜色= [。85。33。1];%突出的颜色结束矩形(“位置”,(。05-.1 .5 .3],“弯曲”,1%添加rectagle“EdgeColor”[0 5 0])矩形(“位置”,(-。23。05。25。55],“弯曲”,1%添加矩形“EdgeColor”,(。6。1。5]) rectangle(“位置”,(-。35-.4 .34 .42],“弯曲”,1%添加矩形“EdgeColor”,(。1。2。6])

深度学习

绿色的集群是很忙,很难看到。让我们放大绿色集群使用的更多细节深度学习似乎这个集群的主要话题。美国有线电视新闻网(卷积神经网络)是一个深入学习算法通常用于图像分类。它是有意义的,它是接近biplot“形象”主题。RNN (复发性神经网络)往往是用于自然语言处理和似乎接近“文本”。AutoencodersLSTM(长短期记忆)也深刻的学习算法。地图(最大后验)和“深层神经网络”是唯一的主题在前20名的组织发现在这个集群。因为我们只是比较词出现的相对频率,如果很多论文讨论深入学习相关的话题,还有几乎没有任何明显的频率差异前20名和其他人,和这些话不会突出显示。

轴([-0.1 0.5 -0.1 0.2]);%定义轴的限制

核心算法

话题发现的中心biplot相关核心机器学习等技术更成熟金宝app支持向量机(SVM)),主成分分析(PCA),隐马尔可夫模型(HMM)至少绝对收缩和选择操作符(套索)。论文的前20名组织似乎有兴趣张量和多分类问题,以及图形和高斯过程

轴([-0.06 0.06 -0.06 0.06]);%定义轴的限制

商业研究

前20名组织包括一些商业实体,如谷歌、IBM和微软。他们的研究论文的主题可能反映了机器学习领域的商业利益。我们可以使用相同的biplot和突出主题,经常出现在报纸上隶属于他们。情节显示,三家公司倾向于封面不同话题时所有从事一定深度学习的相关研究。您还可以看到,谷歌会覆盖多个领域,IBM和Microsft似乎有一个狭窄的焦点。

isGoogler = AcceptedPapers。Org = =“谷歌”;%找到谷歌作者的指标GooglePaperIds =独特(AcceptedPapers.PaperID (isGoogler));%找到他们的论文idisGooglePaper = ismember (Papers.ID GooglePaperIds);%的指标GoogleTopics =总和(DTM (isGooglePaper:));%和谷歌的行GoogleTopics = GoogleTopics。/笔(GoogleTopics) * 100;%转换成相对百分比isIBMer = AcceptedPapers。Org = =“IBM”;%找到IBM作者的指标IBMPaperIds =独特(AcceptedPapers.PaperID (isIBMer));%找到他们的论文idisIBMPaper = ismember (Papers.ID IBMPaperIds);%的指标IBMTopics =总和(DTM (isIBMPaper:));%和IBM的行IBMTopics = IBMTopics。/笔(IBMTopics) * 100;%转换成相对百分比isMSofter = AcceptedPapers。Org = =“微软”;%找到Mirosoft作者的指标MSPaperIds =独特(AcceptedPapers.PaperID (isMSofter));%找到他们的论文idisMSPaper = ismember (Papers.ID MSPaperIds);%的指标MSTopics =总和(DTM (isMSPaper:));%和微软的行MSTopics = MSTopics。/笔(MSTopics) * 100;%转换成相对百分比commercialTopics = [GoogleTopics;IBMTopics;MSTopics];%将所有%的新人物biplot (coefforth (:, 1:2),“分数”分数(:1:2),% 2 d biplot与前两个比较“VarLabels”甘氨胆酸、标签)线= findobj (,“线型”,“没有”);%得到线处理的观察i = 1:长度(线)%循环observatoins线(i)。可见=“关闭”;%让它看不见结束htext = findobj (gca),“类型”,“文本”);%得到文本处理tcolor = [0 5 0;。85 .33。1;。1。2。6);%定义文本颜色i = 1:长度(htext)%遍历文本r = commercialTopics (:, strcmp(标签,htext(我).String));%得到比率如果总和(r) = = 0%如果所有行是零htext(我)。可见=“关闭”;%让它看不见其他的%,否则[~,idx] = max (r);%得到最大行htext(我)。颜色= tcolor (idx:);%使用匹配的颜色结束结束文本(。4。3,“谷歌”,“颜色”tcolor (1:)“字形大小”14)%注释文本(约。3,,“IBM”,“颜色”:tcolor (2),“字形大小”14)%注释文本(。4。2,“微软”,“颜色”tcolor (:),“字形大小”14)%注释标题({论文题目的主成分分析;%添加标题“强调谷歌、IBM和微软的话题”})

十大作者2015年捏

一些作者有多个文件被冻伤。有特定主题,给予他们一定的优势?让我们看看排名前十的作者而言,接受论文的数量,看看主题出现在这些论文。原来的主题op 10作者不属于具体集群,和短向量的主题——这意味着他们不是很罕见但是不像其他经常讨论的话题,如“土匪”、“CNN”或“获得”。

[auth_ids, ~, idx] =独特(AcceptedPapers.ID);%得到作者id数= accumarray (idx, 1);%得到数[~,排名]=排序(计数,“下”);%获得排名top10_ids = auth_ids(排名(1:10));%获得前十名的idisTop10 = ismember (AcceptedPapers.ID top10_ids);%得到行索引top10_paper_ids =独特(AcceptedPapers.PaperID (isTop10));%得到前十篇论文idisTop10paper = ismember (Papers.ID top10_paper_ids);%得到行索引top10Topics =总和(DTM (isTop10paper:));%金额前十行top10Topics = top10Topics。/笔(top10Topics) * 100;%转换成相对百分比notTop10Topics =总和(DTM (~ top10Topics,:));%字数notTop10Topics = notTop10Topics。/笔(notTop10Topics) * 100;%转换成相对百分比结合= [top10Topics; notTop10Topics];%将所有[isTop10Author、秩序]= ismember (Authors.ID top10_ids);%得到指数前十位作者[~,顺序]= (isTop10Author))(顺序排序;%获得排名名称= Authors.Name (isTop10Author);%得到名字%创建新的图biplot (coefforth (:, 1:2),“分数”分数(:1:2),% 2 d biplot与前两个比较“VarLabels”甘氨胆酸、标签)线= findobj (,“线型”,“没有”);%得到线处理的观察i = 1:长度(线)%循环observatoins线(i)。可见=“关闭”;%让它看不见结束htext = findobj (gca),“类型”,“文本”);%得到文本处理tcolor = [。85 .33。1;。1。2。6);%定义文本颜色i = 1:长度(htext)%遍历文本r =组合(:,strcmp(标签,htext(我).String));%得到比率[~,idx] = max (r);%得到最大行如果idx = = 1 & & r (1) > 3%如果第一行& r > 3htext(我)。颜色= [。85。33。1];%突出显示文本其他的htext(我)。颜色= [。6。6。6);%鬼文本结束结束标题({论文题目的主成分分析;%添加标题“十大作者突出主题”})文本(闲置。3,“十大”,“FontWeight”,“大胆”)%注释文本(闲置,0,名称(顺序))%注释

总结

这是一个相当简单、快速勘探的数据集,但我们得到了一些有趣的见解关于机器学习研究的现状提出了2015年捏。也许你可以找到更多的如果你深入。也许你可以使用的技术你能通过文本分析找到爱吗?集群类似的论文。您可以使用基于令牌,但是你可能想要使用一个语法另一篇文章中描述的方法,文本挖掘与MATLAB莎士比亚。试一试,分享你的发现在这里!




发表与MATLAB®R2016a


评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。