lda php,主题模型︱几款新主题模型——SentenceLDA、CopulaLDA、TWE简析与实现

[导读]百度最近开源了一个新的关于主题模型的项目。文档主题推断工具、语义匹配计算工具以及基于工业级语料训练的三种主题模型:Latent

Dirichlet Allocation(LDA)、SentenceLDA 和Topical Word Embedding(TWE)。

一、Familia简介

帮Familia,打个小广告~  Familia的github

主题模型在工业界的应用范式可以抽象为两大类: 语义表示和语义匹配。

语义表示 (Semantic Representation)

对文档进行主题降维,获得文档的语义表示,这些语义表示可以应用于文本分类、文本内容分析、CTR预估等下游应用。

语义匹配 (Semantic Matching)

计算文本间的语义匹配度,我们提供两种文本类型的相似度计算方式:- 短文本-长文本相似度计算,使用场景包括文档关键词抽取、计算搜索引擎查询和网页的相似度等等。

- 长文本-长文本相似度计算,使用场景包括计算两篇文档的相似度、计算用户画像和新闻的相似度等等。

Familia自带的Demo包含以下功能:

语义表示计算

利用主题模型对输入文档进行主题推断,以得到文档的主题降维表示。

语义匹配计算

计算文本之间的相似度,包括短文本-长文本、长文本-长文本间的相似度计算。

模型内容展现

对模型的主题词,近邻词进行展现,方便用户对模型的主题有直观的理解。

.

二、Topical Word Embedding(TWE)

Zhiyuan Liu老师的文章,paper下载以及github

In this way, contextual word embeddings can be flexibly obtained to measure contextual word similarity. We can also build document representations.

且有三款:TWE-1,TWE-2,TWE-3,来看看和传统的skip-gram的结构区别:

20170715203145804.jpg

在多标签文本分类的精确度:

20170715203259973.jpg

百度开源项目 Familia中TWE模型的内容展现:请输入主题编号(0-10000):    105

Embedding Result              Multinomial Result

------------------------------------------------

对话                                    对话

磋商                                    合作

合作                                    中国

非方                                    磋商

探讨                                    交流

对话会议                                联合

议题                                    国家

中方                                    讨论

对话会                                  支持

交流                                    包括

第一列为基于embedding的结果,第二列为基于多项分布的结果,均按照在主题中的重要程度从大到小的顺序排序。

来简单看一下train文件:import gensim #modified gensim version

import pre_process # read the wordmap and the tassgin file and create the sentence

import sys

if __name__=="__main__":

if len(sys.argv)!=4:

print "Usage : python train.py wordmap tassign topic_number"

sys.exit(1)

reload(sys)

sys.setdefaultencoding('utf-8')

wordmapfile = sys.argv[1]

tassignfile = sys.argv[2]

topic_number = int(sys.argv[3])

id2word = pre_process.load_id2word(wordmapfile)

pre_process.load_sentences(tassignfile, id2word)

sentence_word = gensim.models.word2vec.LineSentence("tmp/word.file")

print "Training the word vector..."

w = gensim.models.Word2Vec(sentence_word,size=400, workers=20)

sentence = gensim.models.word2vec.CombinedSentence("tmp/word.file","tmp/topic.file")

print "Training the topic vector..."

w.train_topic(topic_number, sentence)

print "Saving the topic vectors..."

w.save_topic("output/topic_vector.txt")

print "Saving the word vectors..."

w.save_wordvector("output/word_vector.txt")

.

三、SentenceLDA

paper链接 +  github:balikasg/topicModelling

SentenceLDA是什么?

an extension of LDA whose goal is to overcome this limitation by incorporating the structure of

the text in the generative and inference processes.

SentenceLDA和LDA区别?

LDA and senLDA differ in that the second assumes a very strong dependence of the latent topics between the words of sentences, whereas the first ssumes independence between the words of documents in general

SentenceLDA和LDA两者对比实验:

We illustrate the advantages of sentenceLDA by comparing it with LDA using both intrinsic (perplexity) and extrinsic (text classification) evaluation tasks on different text collections

20170715204602644.jpg

20170715204224627.jpg

原作者的github的结果:

https://github.com/balikasg/topicModelling/tree/master/senLDA

截取一部分code:import numpy as np, vocabulary_sentenceLayer, string, nltk.data, sys, codecs, json, time

from nltk.tokenize import sent_tokenize

from lda_sentenceLayer import lda_gibbs_sampling1

from sklearn.cross_validation import train_test_split, StratifiedKFold

from nltk.stem import WordNetLemmatizer

from sklearn.utils import shuffle

from functions import *

path2training = sys.argv[1]

training = codecs.open(path2training, 'r', encoding='utf8').read().splitlines()

topics = int(sys.argv[2])

alpha, beta = 0.5 / float(topics), 0.5 / float(topics)

voca_en = vocabulary_sentenceLayer.VocabularySentenceLayer(set(nltk.corpus.stopwords.words('english')), WordNetLemmatizer(), excluds_stopwords=True)

ldaTrainingData = change_raw_2_lda_input(training, voca_en, True)

ldaTrainingData = voca_en.cut_low_freq(ldaTrainingData, 1)

iterations = 201

classificationData, y = load_classification_data(sys.argv[3], sys.argv[4])

classificationData = change_raw_2_lda_input(classificationData, voca_en, False)

classificationData = voca_en.cut_low_freq(classificationData, 1)

final_acc, final_mif, final_perpl, final_ar, final_nmi, final_p, final_r, final_f = [], [], [], [], [], [], [], []

start = time.time()

for j in range(5):

perpl, cnt, acc, mif, ar, nmi, p, r, f = [], 0, [], [], [], [], [], [], []

lda = lda_gibbs_sampling1(K=topics, alpha=alpha, beta=beta, docs= ldaTrainingData, V=voca_en.size())

for i in range(iterations):

lda.inference()

if i % 5 == 0:

print "Iteration:", i, "Perplexity:", lda.perplexity()

features = lda.heldOutPerplexity(classificationData, 3)

print "Held-out:", features[0]

scores = perform_class(features[1], y)

acc.append(scores[0][0])

mif.append(scores[1][0])

perpl.append(features[0])

final_acc.append(acc)

final_mif.append(mif)

final_perpl.append(perpl)

来看看百度开源项目的最终效果,LDA和SentenceLDA的内容展现:

LDA结果:请输入主题编号(0-1999): 105

--------------------------------------------

对话    0.189676

合作    0.0805558

中国    0.0276284

磋商    0.0269797

交流    0.021069

联合    0.0208559

国家    0.0183163

讨论    0.0154165

支持    0.0146714

包括    0.014198

第二列的数值表示词在该主题下的重要程度。

SentenceLDA结果:请输入主题编号(0-1999): 105

--------------------------------------------

浙江    0.0300595

浙江省  0.0290975

宁波    0.0195277

记者    0.0174735

宁波市  0.0132504

长春市  0.0123353

街道    0.0107271

吉林省  0.00954326

金华    0.00772971

公安局  0.00678163

.

四、CopulaLDA

SentenceLDA和CopulaLDA同一作者,可见github:balikasg/topicModelling

没细看,来贴效果好了:

20170715204821023.jpg

20170715204846448.jpg

20170715204855818.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360515.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最短路径问题matlab作图,[MATLAB基础] matlab最短路径的输出问题,用了递归,但程序出错了,请大虾指点...

matlab最短路径的输出问题,用了递归,但程序出错了,请大虾指点 程序如下function shortestpath(w,p,q)c->;l;f;tsize(w);mt(1,1);azeros(m,m);vw;for k1:mfor i1:mfor j1:mb[w(i,j),w(i,k)w(k,j)];w(i,j)min(b);if w(i,j)~v(i,j)a(i,j)k;%a(i,j)10*a(i,j)k;vw;endendendendw;…

快速浏览JAX-RS请求与方法匹配

在本文中,我们来看一下JAX-RS中与资源方法匹配的HTTP请求 。 它是JAX-RS的最基本功能之一。 通常,使用JAX-RS API的开发人员不会接触(或真正不需要知道) 匹配过程的细节,请放心,由于我们的RESTful&#xff…

$stat php,php stat函数怎么用

php stat函数用于返回关于文件的信息,其语法是fstat(file),参数file必需,指规定要检查的文件。php stat函数怎么用?定义和用法stat() 函数返回关于文件的信息。语法fstat(file)参数file必需。规定要检查的文件。说明获取由 file 指…

Apache Cassandra和低延迟应用程序

介绍 多年来, Grid Dynamics拥有许多与NoSQL相关的项目,尤其是Apache Cassandra。 在这篇文章中,我们要讨论一个给我们带来挑战的项目,而我们在该项目中试图回答的问题今天也仍然适用。 数字营销和在线广告在2012年很受欢迎&…

Java十大简单性能优化

关于“ web scale ”这个流行词有很多炒作,人们花了很多时间来重新组织他们的应用程序体系结构,以使其系统“规模化”。 但是什么是扩展,我们如何确保可以扩展? 缩放的不同方面 上面提到的炒作主要是关于扩展负载 ,即…

php在苹果手机上传不了图片大小,ThinkPHP后台上传图片无默认尺寸解决方法

原标题:ThinkPHP后台上传图片无默认尺寸解决方法随着网站移动端的日益普及,对后台数据的兼容性要求也越来越高。后台数据涵盖范围不断扩大的同时,使得程序处理能力也必须逐步提高。使用ThinkPHP进行长沙网站开发时,后台kindeditor…

宝塔php gd库,宝塔面板安装 EasyImag – 一款最简单图床的安装体验

近日闲逛,发现了一款图床,一款开箱即食的简单图床程序。因为没有数据库所以安装起来也是异常简单,我们看看功能:支持设置图片质量支持仅登录后上传支持QQ截图,剪切板上传支持在线管理(增删改查)支持上传图片转换为指定…

批准Oracle IDM中的特定Web服务

关于Web服务端点的快速发布,OIM和SOA在与批准有关的场景中使用了Web服务端点- 基本内容,但对于初学者可能有用 。 Oracle IDM与SOA套件集成并利用其提供与批准相关的功能(说实话,SOA相当丰富,并且也被用作Web服务连接…

Oracle15001,Oracle11gR2RAC环境DBCA创建数据库报错ORA-15055ORA-15001

在Oracle 11gR2 GridInfrastructure和Database软件安装完成之后,执行DBCA创建数据库到30%的时候报如下错误,点击OK后提示忽略并问题现象:在Oracle 11gR2 GridInfrastructure和Database软件安装完成之后,执行DBCA创建数据库到30%的时候报如下错…

针对新手的Java EE7和Maven项目–第8部分

第1部分 , 第2部分 , 第3部分 , 第4部分 , 第5部分 , 第6部分 , 第7部分 第8部分 自上一篇文章以来,这一系列教程已经有很长时间了。 是时候恢复并在我们的简单项目中添加新功能了。 正…

玩Weld-Probe –一站式查看CDI的所有方面

焊接3.0.0.Alpha4被释放 ,而我一直坐在在DevConf.CZ一间会议室。 Jozef Hartinger( jozefhartinger )或多或少地在几分钟前告诉我有关此最新版本的新功能的信息。 有一个特别的功能真正引起了我的注意,它是新的焊接探针机制。 什…

linux cmake装在自己目录下,如何在Linux下安装cmake

全部展开OpenCV 2.2和更高版本需要使用Cmake生成生成文件,因此需要先安装cmake. 还有其他需要先安装cmake的软件1. 在Linux环境中打开Web浏览器,输入URL:mac cmake gui,找到最新版本的位置. 通常,发布了两个版本的开源软件: “源分…

Java Bootstrap:Dropwizard与Spring Boot

如何在尽可能短的时间内使准备就绪的Java应用程序投入生产? 我不是一个早起的人,所以有时需要一些时间才能启动“所有系统”提示。直到不久之前,这对于Java应用程序来说都是正确的,但是与发明贪睡功能不同闹钟,我们将在…

物理数据模型(PDM)-概念数据模型 (CDM)-面向对象模型 (OOM):适用于已经设计好数据库表结构了。...

步骤如下: 一、反向生成物理数据模型PDM 开发环境 PowerDesigner 15 ,SQL Server2005 (1)在开始逆向生成PDM图之前,需要为指定的数据库创建ODBC数据源。以Windows xp操作系统为例,选择“开始”/“运行”命令&#xff0…

MySQL作为Kubernetes服务,可从WildFly Pod访问

Kubernetes上使用Vagrant的Java EE 7和WildFly(技术提示#71)介绍了如何在使用Kubernetes和Docker托管的WildFly上运行琐碎的Java EE 7应用程序。 Java EE 7应用程序是在世界范围内交付的动手实验室 。 它使用与WildFly捆绑在一起的内存数据库…

麒麟Linux启动目录,优麒麟目录结构介绍 系统入门必备

对于Linux爱好者来说,深入了解Linux文件目录结构的标准和每个目录的详细功能,对于我们用好Linux系统至关重要,下面就由小编给大家介绍下优麒麟系统的目录结构,PS: 同样适用于其他Linux发行版。查看系统的全部目录:* 在…

java课堂作业(一)

1、环境变量配置参见:http://www.cnblogs.com/dongwenbo/p/3282014.html window ---> preference ---> java ---> installed jres ---> add jres tomcat 配置:myeclipse ---> preferences ---> myeclipse enterprise workbench --->…

为什么我的JVM访问的内存少于通过-Xmx指定的内存?

“嘿,你能来看看奇怪的东西吗?” 这就是我开始研究一个支持案例的方式,该案例将我引向了这篇博客文章。 当前的特殊问题与不同的工具报告了有关可用内存的不同数字有关。 简而言之,一位工程师正在研究特定应用程序的过多内存使用…

linux怎么安装高德导航软件,高德地图车机版如何安装?高德地图车机版安装教程...

高德地图车机版是高德为汽车车载机提供的一个专用版本,对于车主们来说有时候用手机导航实在是非常不方便,不仅屏幕小而且还可能中途来个电话什么的。高德地图车机版可以帮你的车载机装上导航地图,就算你不想买导航设备也能让你的车子为你导航…

Dropwizard,MongoDB和Gradle实验

介绍 我使用Dropwizard,MongoDB和Gradle创建了一个小项目。 它实际上是从一个实验性的Guava缓存开始的,作为将计数器发送到MongoDB(或任何其他DB)的缓冲区。 我也想尝试MondleDB插件的Gradle。 接下来,我想创建某种接口…