主题模型到底还有没有用,该怎么用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了主题模型到底还有没有用,该怎么用?相关的知识,希望对你有一定的参考价值。
感觉topic model基本靠吹,根本不work。可是再通过细研究下来之后,感觉还是too young too naive~比如:最前沿的Topic Model是大规模并行化。topic model目前所有做模型变形去适应各个task的都不适合工业界,topic model最需要解决的问题是如何快速计算上千或者上万topic时的gibbs sampling速度~~~用来解决各种各样的粗的问题。可以说关键词抽取的问题是粒度太细,不能合并同类项,能做的是认识了身高1米体重200斤的是绵羊,你再给它个身高0.5米的就认不出了。而话题数少的topic model只能告诉你这是动物~所以我们需要用大规模语料去train一个topic上万的东西,来分清绵羊~我相信腾讯那个号称世界上最大的LDA,一定做了并行化,且topic数量巨大,而且取得了比较好的效果。另一个是Topic Model最适合的变种是加入先验信息,我相信使用的是完全无监督的Topic Model,然而实在是过于不work。浪费了现实生活中那么多的标注数据,有监督的模型一定比无监督的好~所以!可以试试Supervised Topic Model利用你在现实中已有的标注来提高模型准确度来利用常用的的tag来train个有监督Topic Model~~~一定会词聚类效果好不少。所以现在一些好的会议上面用topic model 而且数据量也不是很大的,我根本不相信他们的结果,比如CMU一个phd的一篇文章:Nonparametric discovery of human routines from sensor data。我怀疑他根本在数据造假,因为实验太好重复了。就像之前看到有网友说在短文本上面尝试LDA,效果明显就差强人意。
参考技术A简单就LDA来说一下。首先文本要长,要长。不长要想办法拼凑变长。另外语料要好,多下功夫去掉翔。然后规模要大。一定会词聚类效果好不少两层意思,一是文档数大,二是主题数多。关注三个东西: plda+能支持中等规模; lightlda就可以感觉到主题模型能支持大规模。warplda应该也可以,不过没开源,实现应该不复杂。应用场景要靠谱。直觉上讲,分类等任务还是要有监督的,不太适合无监督的方法去办。而类似基于内容的推荐应用,这种感觉的东西,LDA是靠谱的。
参考技术B据了解大部分关于文档的实际应用场景下,用topic modeling抽topic,然后添加到基于关键词的系统上都只能看到微弱的效果提升。注意是添加到已有的关键词系统中的相对提升。如果单独用topic不用词袋模型的话很可能比只用词袋模型要差,最新的topic model也不行,长文本短文本都不行,所以,两三百年过去了,我们还在用词袋模型来表示文章, what a shame!长文本的representation有没有新的突破, 最近的希望就是knowledge baseembedding了,因为之前尝试过很多问题,将数据抽象成文本的表示,然后LDA,基本上都看不到什么insight。
android中的Context到底该怎么用
参考技术A 在Android系统中,有很多的service,也就是服务。我们的程序如果用到系统功能,一般都是调用服务间接完成的。也就是在Android系统中存在许多C/S架构。而context的作用,就是android应用连接service的桥梁。比如Activity中有一个方法,getSystemService()。这个方法调到最后,实际上是调用的ContextImpl的getSystemService()方法。而ContextImpl是对Context的实现。Context不是函数而是一个类——如果不太了解面向对象,可以把“类”看做一种数据类型,就像int,不过类型为“类”的数据(称为对象)可能储存远比int多的信息,比如这里的类型为Context的对象就储存关于程序、窗口的一些资源。
有些函数调用时需要一个Context参数,比如Toast.makeText,因为函数需要知道是在哪个界面中显示的Toast。
再比如,Button myButton = new Button(this); 这里也需要Context参数(this),表示这个按钮是在“this”这个屏幕中显示的。
Android开发使用(纯粹的)面向对象语言,一切都是对象,就连我们写的函数都是对象的函数。
public class MainActivity extends Activity
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toast.makeText(this,
"OK!",
Toast.LENGTH_LONG).show();
Button button1 = (Button)findViewById(R.id.button1);
button1.setOnClickListener(new Button.OnClickListener()
public void onClick(View v)
Toast.makeText(MainActivity.this,
"Hello, world!",
Toast.LENGTH_LONG).show();
);
这里OnCreate就是MainActivity的对象的函数(MainActivity是类),所以这个函数中的this就表示当前的、包含这个函数的MainActivity对象。
MainActivity extends Activity,意思是MainActivity 继承 Activity,即MainActivity 是 Activity 的一种,所有的MainActivity 都是 Activity。同样,在Android文档中Activity继承ContextThemeWrapper,ContextThemeWrapper继承ContextWrapper,ContextWrapper继承Context。所以this这个MainActivity也是Context,把this传入Toast.makeText表示“OK!”是在当前的MainActivity对象(也是Context)中显示的。
对于显示"Hello, world!"的Toast.makeText,这个函数在onClick中,而onClick是new Button.OnClickListener()...这个没有名字的类的函数,this表示匿名类的对象,不表示MainActivity对象,所以这里用MainActivity.this,强制选择外面一层MainActivity的this。
望采纳,谢谢。
以上是关于主题模型到底还有没有用,该怎么用?的主要内容,如果未能解决你的问题,请参考以下文章