主要内容

ldaModel

潜狄利克雷分配(LDA)模型

描述

潜狄利克雷分配模型(latent Dirichlet allocation, LDA)是一种主题模型,它发现文档集合中的潜在主题,并推断主题中的单词概率。如果模型使用n-grams袋模型拟合,那么软件将n-grams视为单独的单词。

创建

方法创建LDA模型fitlda函数。

属性

全部展开

LDA模型中的主题数,指定为正整数。

主题浓度,指定为正标量。该函数将每个主题的浓度设置为TopicConcentration / NumTopics.有关更多信息,请参见潜狄利克雷分配

字浓度,指定为非负标量。软件将每个单词的浓度设置为WordConcentration / numWords,在那里numWords输入文档的词汇表大小。有关更多信息,请参见潜狄利克雷分配

输入文档集的主题概率,指定为一个向量。LDA模型的语料库主题概率是在用于拟合LDA模型的整个数据集中观察每个主题的概率。CorpusTopicProbabilities是1 × -吗K向量,K是主题的数量。的k第Th项CorpusTopicProbabilities对应于观察主题的概率k

每个输入文档的主题概率,以矩阵形式指定。LDA模型的文档主题概率是用于拟合LDA模型的每个文档中观察每个主题的概率。DocumentTopicProbabilities是一个D——- - - - - -K矩阵D是用于符合LDA模型的文档数量,以及K是主题的数量。的(d、k)第Th项DocumentTopicProbabilities对应于观察主题的概率k在文档d

如果有任何主题的概率为零(CorpusTopicProbabilities包含零),则对应的列DocumentTopicProbabilities而且TopicWordProbabilities是0。

一行的顺序DocumentTopicProbabilities与培训数据中文档的顺序相对应。

每个主题的单词概率,指定为一个矩阵。LDA模型的主题词概率是在LDA模型的每个主题中观察到每个词的概率。TopicWordProbabilities是一个V——- - - - - -K矩阵,V字数是多少词汇表而且K是主题的数量。的(v, k)第Th项TopicWordProbabilities对应于观测词的概率v在主题k

如果有任何主题的概率为零(CorpusTopicProbabilities包含零),则对应的列DocumentTopicProbabilities而且TopicWordProbabilities是0。

一行的顺序TopicWordProbabilities对应于单词的顺序词汇表

主题顺序,指定为以下之一:

  • “initial-fit-probability”-根据初始模型拟合的语料库主题概率对主题进行排序。这些概率是CorpusTopicProbabilities初始属性ldaModel返回的对象fitlda.的重新开始函数不会对结果的主题进行重新排序ldaModel对象。

  • “无序”-不要对主题进行排序。

拟合LDA模型时记录的信息,指定为具有以下字段的结构体:

  • TerminationCode-退出时的优化状态

    • 0 -达到迭代极限。

    • 1 -对数似然公差满足。

  • TerminationStatus-返回的终止代码说明

  • NumIterations-执行的迭代次数

  • NegativeLogLikelihood-传递到的数据的负对数似然fitlda

  • 困惑-传递到的数据的Perplexityfitlda

  • 解算器-使用的求解器的名称

  • 历史-保存优化历史的结构

  • StochasticInfo-结构持有信息的随机求解器

数据类型:结构体

模型中的单词列表,指定为字符串向量。

数据类型:字符串

对象的功能

logp 记录LDA模型的对数概率和拟合优度
预测 预测文档的顶级LDA主题
重新开始 简历拟合LDA模型
topkwords 词袋模型或LDA主题中最重要的词
变换 将文档转换为低维空间
wordcloud 从文本、单词袋模型、n-grams袋模型或LDA模型创建词云图

例子

全部折叠

若要重现本例中的结果,请设置rng“默认”

rng (“默认”

加载示例数据。该文件sonnetsPreprocessed.txt包含莎士比亚十四行诗的预处理版本。该文件每行包含一首十四行诗,用空格分隔单词。从中提取文本sonnetsPreprocessed.txt,以换行符将文本分割为文档,然后对文档进行标记。

文件名=“sonnetsPreprocessed.txt”;str = extractFileText(文件名);textData = split(str,换行符);documents = tokenizedDocument(textData);

使用创建单词袋模型bagOfWords

bag = bagOfWords(文档)
带有属性的单词:[154x3092 double]词汇:["最公平的" "生物" "欲望"…NumWords: 3092 NumDocuments: 154

拟合四个主题的LDA模型。

numTopics = 4;mdl = fitlda(包,numTopics)
初始主题分配在0.135588秒内采样。===================================================================================== | 迭代每个相对| | |时间培训|主题| | | | | |迭代变化困惑浓度浓度| | | | | |(秒)日志(L) | | |迭代  | ===================================================================================== | 0 | 0.06 | 1.000 | 1.215 e + 03 | | 0 | | 1 | 0.02 | 1.0482 e-02 e + 03 | 1.128 | 1.000 | 0 | | 2 | 0.02 | 1.7190 e 03 e + 03 | 1.115 | 1.000 | 0 | | 3 | 0.021.118 e + 03 | 1.000 | 4.3796 e-04 | | 0 | | 4 | 0.02 | 9.4193 e-04 e + 03 | 1.111 | 1.000 | 0 | | 5 | 0.03 | 3.7079 e-04 e + 03 | 1.108 | 1.000 | 0 | | 6 | 0.01 | 9.5777 e-05 e + 03 | 1.107 | 1.000 | 0  | =====================================================================================
mdl = ldaModel与属性:NumTopics: 4 WordConcentration: 1 TopicConcentration: 1 corpustopicprobability: [0.2500 0.2500 0.2500 0.2500 0.2500] documenttopicprobability: [154x4 double] topicwordprobability: [3092x4 double]词汇:[“最公平的”“生物”…FitInfo: [1x1 struct]

使用词汇云来可视化主题。

数字topicIdx = 1:4 subplot(2,2,topicIdx) wordcloud(mdl,topicIdx);标题(主题:“+ topicIdx)结束

图中包含类型为wordcloud的对象。类型wordcloud的图表有标题Topic: 1。类型wordcloud的图表有标题Topic: 2。类型wordcloud的图表有标题Topic: 3。类型wordcloud的图表有标题Topic: 4。

创建一个LDA主题概率最高的单词表。

若要重现结果,请设置rng“默认”

rng (“默认”

加载示例数据。该文件sonnetsPreprocessed.txt包含莎士比亚十四行诗的预处理版本。该文件每行包含一首十四行诗,用空格分隔单词。从中提取文本sonnetsPreprocessed.txt,以换行符将文本分割为文档,然后对文档进行标记。

文件名=“sonnetsPreprocessed.txt”;str = extractFileText(文件名);textData = split(str,换行符);documents = tokenizedDocument(textData);

使用创建单词袋模型bagOfWords

bag = bagOfWords(文档);

拟合20个主题的LDA模型。若要抑制详细输出,请设置“详细”为0。

numTopics = 20;mdl = fitlda(包,numTopics,“详细”, 0);

找出第一个主题的前20个单词。

K = 20;topicIdx = 1;tbl = topkwords(mdl,k,topicIdx)
台=20×2表单词分数________ _________“眼睛”0.11155“美”0.05777“有“0.055778”还“0.049801”真“0.043825”矿“0.033865”找“0.031873”黑“0.025897”看“0.023905”是“0.023905”种“0.021913”见“0.021913”发现“0.017929”罪“0.015937”三“0.013945”金“0.0099608”\

找到第一个主题的前20个单词,并对分数使用逆平均缩放。

tbl = topkwords(mdl,k,topicIdx,“缩放”“inversemean”
台=20×2表单词分数________ ________“眼睛”1.2718“美丽”0.59022“有“0.5692”仍然“0.50269”真“0.43719”矿“0.32764”找到“0.32544”黑“0.25931”是“0.23755”看“0.22519”种“0.21594”见“0.21594”发现“0.17326”罪“0.15223”三“0.13143”金“0.090698”相关

使用缩放分数作为大小数据创建一个词云。

图wordcloud (tbl.Word tbl.Score);

图中包含一个wordcloud类型的对象。

获取用于拟合LDA模型的文档的文档主题概率(也称为主题混合)。

若要重现结果,请设置rng“默认”

rng (“默认”

加载示例数据。该文件sonnetsPreprocessed.txt包含莎士比亚十四行诗的预处理版本。该文件每行包含一首十四行诗,用空格分隔单词。从中提取文本sonnetsPreprocessed.txt,以换行符将文本分割为文档,然后对文档进行标记。

文件名=“sonnetsPreprocessed.txt”;str = extractFileText(文件名);textData = split(str,换行符);documents = tokenizedDocument(textData);

使用创建单词袋模型bagOfWords

bag = bagOfWords(文档);

拟合20个主题的LDA模型。若要抑制详细输出,请设置“详细”为0。

numTopics = 20;mdl = fitlda(包,numTopics,“详细”, 0)
mdl = ldaModel与属性:NumTopics: 20 WordConcentration: 1 TopicConcentration: 5 corpustopicprobability:[0.0500 0.0500 0.0500 0.0500 0.0500…[中文]概率:[3092x20 double]词汇:["最公平的" "生物"…FitInfo: [1x1 struct]

查看训练数据中第一个文档的主题概率。

topicmixture = mdl. documenttopicprobability;图栏(topicmixture (1,:))“文档1主题概率”)包含(“主题指数”) ylabel (“概率”

图中包含一个轴对象。标题为Document 1 Topic probability的axes对象包含一个类型为bar的对象。

若要重现本例中的结果,请设置rng“默认”

rng (“默认”

加载示例数据。该文件sonnetsPreprocessed.txt包含莎士比亚十四行诗的预处理版本。该文件每行包含一首十四行诗,用空格分隔单词。从中提取文本sonnetsPreprocessed.txt,以换行符将文本分割为文档,然后对文档进行标记。

文件名=“sonnetsPreprocessed.txt”;str = extractFileText(文件名);textData = split(str,换行符);documents = tokenizedDocument(textData);

使用创建单词袋模型bagOfWords

bag = bagOfWords(文档)
带有属性的单词:[154x3092 double]词汇:["最公平的" "生物" "欲望"…NumWords: 3092 NumDocuments: 154

拟合20个主题的LDA模型。

numTopics = 20;mdl = fitlda(包,numTopics)
初始主题分配在0.043761秒内采样。===================================================================================== | 迭代每个相对| | |时间培训|主题| | | | | |迭代变化困惑浓度浓度| | | | | |(秒)日志(L) | | |迭代  | ===================================================================================== | 0 | 0.01 | 5.000 | 1.159 e + 03 | | 0 | | 1 | 0.04 | 5.4884 e-02 e + 02 | 8.028 | 5.000 | 0 | | 2 | 0.04 | 4.7400 e 03 e + 02 | 7.778 | 5.000 | 0 | | 3 | 0.047.602 e + 02 | 5.000 | 3.4597 e 03 | | 0 | | 4 | 0.04 | 3.4662 e 03 e + 02 | 7.430 | 5.000 | 0 | | 5 | 0.04 | 2.9259 e 03 e + 02 | 7.288 | 5.000 | 0 | | 6 | 0.03 | 6.4180 e-05 e + 02 | 7.291 | 5.000 | 0  | =====================================================================================
mdl = ldaModel与属性:NumTopics: 20 WordConcentration: 1 TopicConcentration: 5 corpustopicprobability:[0.0500 0.0500 0.0500 0.0500 0.0500…[中文]概率:[3092x20 double]词汇:["最公平的" "生物"…FitInfo: [1x1 struct]

预测一组新文档的主要主题。

newDocuments = tokenizedDocument([“名字有什么关系?”玫瑰不管叫什么名字都一样芬芳。”“如果音乐是爱情的食粮,那就继续演奏吧。”]);topicIdx = predict(mdl,newDocuments)
topicIdx =2×119日8

使用词云将预测的主题可视化。

图subplot(1,2,1) wordcloud(mdl,topicIdx(1));标题(“主题”+ topicIdx(1)) subplot(1,2,2) wordcloud(mdl,topicIdx(2));标题(“主题”+ topicIdx (2))

图中包含类型为wordcloud的对象。wordcloud类型的图表的标题是Topic 19。wordcloud类型的图表标题为Topic 8。

更多关于

全部展开

版本历史

在R2017b中引入