主要内容

ldaModel

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

描述

潜在Dirichlet分配(LDA)模型是一种主题模型,它发现文档集合中的底层主题,并推断主题中的单词概率。如果模型适合使用n-g包模型,那么软件将n-g作为单个单词处理。

创建

创建一个LDA模型fitlda函数。

属性

全部展开

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

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

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

输入文档集的主题概率,指定为向量。LDA模型的语料主题概率是用来拟合LDA模型的整个数据集中观察每个主题的概率。CorpusTopicProbabilities是1 -K向量,K是主题的数量。的kth的条目CorpusTopicProbabilities对应于观察主题的概率k

每个输入文档的主题概率,指定为一个矩阵。LDA模型的文档主题概率是观察用于适合LDA模型的每个文档中的每个主题的概率。DocumentTopicProbabilities是一个D——- - - - - -K矩阵D适合LDA模型的文档数量,以及K是主题的数量。的(d、k)th的条目DocumentTopicProbabilities对应于观察主题的概率k在文档d

如果任何题目的概率为零(CorpusTopicProbabilities包含0),然后对应的列DocumentTopicProbabilitiesTopicWordProbabilities是0。

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

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

如果任何题目的概率为零(CorpusTopicProbabilities包含0),然后对应的列DocumentTopicProbabilitiesTopicWordProbabilities是0。

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

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

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

  • “无序”-不要安排话题。

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

  • TerminationCode—退出优化时的状态

    • 0 -迭代极限达到。

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

  • TerminationStatus-对返回的终止码的解释

  • NumIterations—迭代次数

  • NegativeLogLikelihood-传递给的数据的负对数可能性fitlda

  • 困惑-对传递到的数据的困惑fitlda

  • 解算器—所使用的解析器的名称

  • 历史-保存优化历史记录的结构体

  • StochasticInfo-为随机求解器保存信息的结构

数据类型:结构体

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

数据类型:字符串

对象的功能

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

例子

全部折叠

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

rng (“默认”

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

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

创建一个词袋模型使用bagOfWords

袋= bagOfWords(文档)
单词:[" fairrest " "creatures" "desire"…NumWords: 3092 NumDocuments: 154

适合四个主题的LDA模型。

numTopics = 4;numTopics mdl = fitlda(袋)
初始主题任务的采样时间为0.213222秒。===================================================================================== | 迭代每个相对| | |时间培训|主题| | | | | |迭代变化困惑浓度浓度| | | | | |(秒)日志(L) | | |迭代  | =====================================================================================| 0 | 0.49 | 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.02 | 4.3796 e-04 e + 03 | 1.118 | 1.000 | 0 | | 4 | 0.01 | 9.4193 e-04 e + 03 | 1.111 | 1.000 | 0 | | 5 | 0.01 | 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 with properties: NumTopics: 1 TopicConcentration: 1 corpustopicprobability: [0.2500 0.2500 0.2500 0.2500 0.2500] documenttopicprobability: [154x4 double] topicwordprobability: [3092x4 double]TopicOrder: 'initial-fit-probability'

使用词汇云将主题形象化。

数字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 =分裂(str,换行符);文件= tokenizedDocument (textData);

创建一个词袋模型使用bagOfWords

袋= bagOfWords(文件);

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

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

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

k = 20;topicIdx = 1;台= topkwords (mdl k topicIdx)
台=20×2表单词得分________ _________“eyes”0.11155“beauty”0.01577“has”0.055778“still”0.049801“true”0.043825“mine”0.033865“find”0.031873“black”0.025897“look”0.023905“tis”0.023905“kind”0.021913“seen”0.021913“found”0.017929“sin”0.015937“three”0.013945“golden”0.0099608⋮

找到第一个主题的前20个单词,并使用反平均比例的分数。

台= topkwords (mdl k topicIdx,“缩放”“inversemean”
台=20×2表单词得分________ ________ "eyes" 1.2718 "beauty" 0.9022 " has " 0.5692 "still" 0.50269 "true" 0.43719 "mine" 0.32764 "find" 0.32544 "black" 0.25931 "tis" 0.23755 "look" 0.22519 "kind" 0.21594 "seen" 0.21594 "found" 0.17326 "sin" 0.15223 "three" 0.13143 "golden" 0.090698⋮

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

图wordcloud (tbl.Word tbl.Score);

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

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

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

rng (“默认”

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

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

创建一个词袋模型使用bagOfWords

袋= bagOfWords(文件);

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

numTopics = 20;mdl = fitlda(袋、numTopics、“详细”, 0)
mdl = ldaModel with properties: NumTopics: 20 WordConcentration: 1 TopicConcentration: 5 corpustopic概率:[0.0500 0.0500 0.0500 0.0500 0.0500…词汇:[“最公平的”“生物”…TopicOrder: 'initial-fit-probability'

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

topicMixtures = mdl.DocumentTopicProbabilities;图酒吧(topicMixtures(1:))标题(“文档1主题概率”)包含(“主题指数”) ylabel (“概率”

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

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

rng (“默认”

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

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

创建一个词袋模型使用bagOfWords

袋= bagOfWords(文档)
单词:[" fairrest " "creatures" "desire"…NumWords: 3092 NumDocuments: 154

拟合具有20个主题的LDA模型。

numTopics = 20;numTopics mdl = fitlda(袋)
初始主题任务的采样时间为0.035863秒。===================================================================================== | 迭代每个相对| | |时间培训|主题| | | | | |迭代变化困惑浓度浓度| | | | | |(秒)日志(L) | | |迭代  | =====================================================================================| 0 | 0.02 | 5.000 | 1.159 e + 03 | | 0 | | 1 | 0.08 | 5.4884 e-02 e + 02 | 8.028 | 5.000 | 0 | | 2 | 0.06 | 4.7400 e 03 e + 02 | 7.778 | 5.000 | 0 | | 3 | 0.05 | 3.4597 e 03 e + 02 | 7.602 | 5.000 | 0 | | 4 | 0.05 | 3.4662 e 03 e + 02 | 7.430 | 5.000 | 0 | | 5 | 0.05 | 2.9259 e 03 e + 02 | 7.288 | 5.000 | 0 | | 6 | 0.06 | 6.4180 e-05 e + 02 | 7.291 | 5.000 | 0 |=====================================================================================
mdl = ldaModel with properties: NumTopics: 20 WordConcentration: 1 TopicConcentration: 5 corpustopic概率:[0.0500 0.0500 0.0500 0.0500 0.0500…词汇:[“最公平的”“生物”…TopicOrder: 'initial-fit-probability'

预测新文档数组的顶级主题。

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

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

图次要情节(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