潜在狄利克雷分配(LDA)模型
潜在Dirichlet分配(LDA)模型是一种主题模型,它发现文档集合中的底层主题,并推断主题中的单词概率。如果模型适合使用n-g包模型,那么软件将n-g作为单个单词处理。
创建一个LDA模型fitlda
函数。
NumTopics
- - - - - -许多话题LDA模型中的主题数,指定为正整数。
TopicConcentration
- - - - - -话题集中主题浓度,指定为正标量。函数将每个主题的浓度设置为TopicConcentration / NumTopics
.有关更多信息,请参见潜在狄利克雷分配.
WordConcentration
- - - - - -词集中1
(默认)|负的标量字浓度,指定为非负标量。软件将每个单词的浓度设置为WordConcentration / numWords
,在那里numWords
输入文档的词汇表大小。有关更多信息,请参见潜在狄利克雷分配.
CorpusTopicProbabilities
- - - - - -输入文档集的主题概率输入文档集的主题概率,指定为向量。LDA模型的语料主题概率是用来拟合LDA模型的整个数据集中观察每个主题的概率。CorpusTopicProbabilities
是1 -K向量,K是主题的数量。的kth的条目CorpusTopicProbabilities
对应于观察主题的概率k.
DocumentTopicProbabilities
- - - - - -每个输入文档的主题概率每个输入文档的主题概率,指定为一个矩阵。LDA模型的文档主题概率是观察用于适合LDA模型的每个文档中的每个主题的概率。DocumentTopicProbabilities
是一个D——- - - - - -K矩阵D适合LDA模型的文档数量,以及K是主题的数量。的(d、k)th的条目DocumentTopicProbabilities
对应于观察主题的概率k在文档d.
如果任何题目的概率为零(CorpusTopicProbabilities
包含0),然后对应的列DocumentTopicProbabilities
和TopicWordProbabilities
是0。
行的顺序DocumentTopicProbabilities
与培训数据中文档的顺序相对应。
TopicWordProbabilities
- - - - - -每个主题的单词概率每个主题的单词概率,指定为一个矩阵。LDA模型的主题词概率是LDA模型中每个主题中每个词的观察概率。TopicWordProbabilities
是一个V——- - - - - -K矩阵,V字数是多少词汇表
和K是主题的数量。的(v, k)th的条目TopicWordProbabilities
对应于观察词的概率v在主题k.
如果任何题目的概率为零(CorpusTopicProbabilities
包含0),然后对应的列DocumentTopicProbabilities
和TopicWordProbabilities
是0。
行的顺序TopicWordProbabilities
对应于in中单词的顺序词汇表
.
TopicOrder
- - - - - -主题的顺序“initial-fit-probability”
(默认)|“无序”
主题顺序,指定为以下其中之一:
“initial-fit-probability”
-根据初始模型拟合的语料主题概率对主题进行排序。这些概率是CorpusTopicProbabilities
初值性质ldaModel
返回的对象fitlda
.的的简历
函数不会对结果的主题重新排序ldaModel
对象。
“无序”
-不要安排话题。
FitInfo
- - - - - -拟合LDA模型时记录的信息拟合LDA模型时记录的信息,指定为结构体,包含以下字段:
TerminationCode
—退出优化时的状态
0 -迭代极限达到。
1 -满足对数似然公差。
TerminationStatus
-对返回的终止码的解释
NumIterations
—迭代次数
NegativeLogLikelihood
-传递给的数据的负对数可能性fitlda
困惑
-对传递到的数据的困惑fitlda
解算器
—所使用的解析器的名称
历史
-保存优化历史记录的结构体
StochasticInfo
-为随机求解器保存信息的结构
数据类型:结构体
词汇表
- - - - - -模型中的单词列表模型中的单词列表,指定为字符串向量。
数据类型:字符串
要重现本例中的结果,请设置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)结束
创建一个包含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);
获取用于符合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 (“概率”)
要重现本例中的结果,请设置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))
一个潜在狄利克雷分配(LDA)模型是一种文档主题模型,它发现文档集合中的底层主题,并推断主题中的单词概率。LDA对集合进行建模D文档作为主题混合物 ,在K以单词概率向量为特征的主题 .该模型假设主题混合 ,主题 服从带有浓度参数的狄利克雷分布 和 分别。
这个话题混合物
概率向量的长度是多少K,在那里K是主题的数量。条目
题目的概率是多少我中出现的d文档。主题混合对应的行DocumentTopicProbabilities
财产的ldaModel
对象。
的话题
概率向量的长度是多少V,在那里V是词汇表中的单词数。条目
对应的概率v中出现的单词我主题。的话题
对应的列TopicWordProbabilities
财产的ldaModel
对象。
考虑到主题 之前和狄利克雷 对于主题混合,LDA假设文档的生成过程如下:
尝试主题混合 .随机变量 是长度的概率向量吗K,在那里K是主题的数量。
对于文件中的每个单词:
示例主题索引 .随机变量z是从1到整数吗K,在那里K是主题的数量。
样一个词 .随机变量w是从1到整数吗V,在那里V为词汇表中单词的个数,表示词汇表中相应的单词。
在这个生成过程中,文档与文字的联合分布 ,与话题混合 ,并附有主题索引 是由
在哪里N为文档中的字数。求和联合分布z然后对 生成文件的边缘分布w:
下图将LDA模型描述为一个概率图形模型。阴影节点为观测变量,未阴影节点为潜变量,无轮廓节点为模型参数。箭头突出了随机变量之间的相关性,而板块则表示重复的节点。
的狄利克雷分布是多项式分布的一个连续推广。考虑到类别的数量 、浓度参数 ,在那里 一个长度为正实数的向量K,给出了狄利克雷分布的概率密度函数
在哪里B为给出的多元Beta函数
狄利克雷分布的一个特殊情况是对称的狄利克雷分布.对称狄利克雷分布由浓度参数表征 ,其中的所有元素 都是一样的。
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。