潜在狄利克雷分配(LDA)模型
潜在Dirichlet分配(LDA)模型是一种主题模型,它发现文档集合中的底层主题,并推断主题中的单词概率。如果模型适合使用n-g包模型,那么软件将n-g作为单个单词处理。
创建一个LDA模型fitlda
函数。
NumTopics
- - - - - -许多话题LDA模型中的主题数,指定为正整数。
主题集中
- - - - - -话题集中主题浓度,指定为正标量。函数将每个主题的浓度设置为主题集中/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
–返回的终止代码的解释
裸体
–执行的迭代次数
NegativeLogLikelihood
-传递给的数据的负对数可能性fitlda
困惑
-对传递到的数据的困惑fitlda
解算器
—所使用的解析器的名称
历史
-保存优化历史记录的结构体
随机信息
-为随机求解器保存信息的结构
数据类型:结构体
词汇表
- - - - - -模型中的单词列表模型中的单词列表,指定为字符串向量。
数据类型:字符串
要重现本例中的结果,请设置rng
来“默认”
.
rng(“默认”)
加载示例数据。该文件十四行诗预处理.txt
包含了经过预处理的莎士比亚十四行诗。该文件每行包含一首十四行诗,单词之间用空格分隔。将文本从十四行诗预处理.txt
,将文本以换行符分割为文档,然后标记文档。
文件名=“sonnetsPreprocessed.txt”;str = extractFileText(文件名);textData =分裂(str,换行符);文件= tokenizedDocument (textData);
使用创建一个单词包模型bagOfWords
.
bag=bagOfWords(文件)
单词:[" fairrest " "creatures" "desire"…NumWords: 3092 NumDocuments: 154
适合包含四个主题的LDA模型。
numTopics = 4;numTopics mdl = fitlda(袋)
初始主题分配在0.21322秒内采样。==============================================================================================================================================================================================================================================================================================================================================================================================================================迭代|每次时间|相对|训练|主题|主题| | |迭代|变化|困惑|集中|集中| | | | | | | | | | | | | | |第124????124???????????????????????????????????????????????????????????????????????????月月月第第四方方方方方方方方方将将进行第四四周周周周周周周周周周周周第第第第第第第四四四方方方方方方方方的第四四周周周周周周周周第第第第第第第第第第第第第二周周周周周第第第第第第二周周周周周周周第第第第第第第第第第第第第第第第第第第第第第第第四方方方方方方方方方方方方方方方方方方方方方方方第第第第第????????| 2 | 0.02 | 1.7190e-03 | 1.115e+03 | 1.000 | 0 | 3 | 0.02 | 4.3796e-04 | 1.118e+03 | 1.000 | 4 | 0.01 | 9.4193e-04 | 1.111e+03 | 0 | 5|0.01 | 3.7079e-04 | 1.108e+03 | 1.000 | 0 | 6 | 0.01 | 9.5777e-05 | 1.107e+03 | 1.000 |=====================================================================================
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子批次(2,2,topicIdx)wordcloud(mdl,topicIdx);标题(“主题:”+topicIdx)结束
创建一个包含LDA主题概率最高的单词的表。
要重现结果,请设置rng
来“默认”
.
rng(“默认”)
加载示例数据。该文件十四行诗预处理.txt
包含了经过预处理的莎士比亚十四行诗。该文件每行包含一首十四行诗,单词之间用空格分隔。将文本从十四行诗预处理.txt
,将文本以换行符分割为文档,然后标记文档。
文件名=“sonnetsPreprocessed.txt”;str = extractFileText(文件名);textData =分裂(str,换行符);文件= tokenizedDocument (textData);
使用创建一个单词包模型bagOfWords
.
袋= bagOfWords(文件);
适合包含20个主题的LDA模型。若要抑制详细输出,请设置“冗长”
到0。
numTopics = 20;mdl = fitlda(袋、numTopics、“冗长”, 0);
找出第一个主题的前20个单词。
k=20;topicIdx=1;tbl=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(“默认”)
加载示例数据。该文件十四行诗预处理.txt
包含了经过预处理的莎士比亚十四行诗。该文件每行包含一首十四行诗,单词之间用空格分隔。将文本从十四行诗预处理.txt
,将文本以换行符分割为文档,然后标记文档。
文件名=“sonnetsPreprocessed.txt”;str = extractFileText(文件名);textData =分裂(str,换行符);文件= tokenizedDocument (textData);
使用创建一个单词包模型bagOfWords
.
袋= bagOfWords(文件);
适合包含20个主题的LDA模型。若要抑制详细输出,请设置“冗长”
到0。
numTopics = 20;mdl = fitlda(袋、numTopics、“冗长”,0)
mdl=ldaModel,属性:NumTopics:20单词浓度:1主题浓度:5个粒子主题概率:[0.0500 0.0500 0.0500 0.0500…]文档主题概率:[154x20 double]主题词概率:[3092x20 double]词汇:[“最公平的”“生物”…]主题顺序:“初始拟合概率”FitInfo:[1x1结构]
查看训练数据中第一个文档的主题概率。
topicMixtures=mdl.DocumentTopicProbabilities;图形栏(TopicMixers(1,:))标题(“文档1主题概率”)包含(“主题指数”) ylabel (“概率”)
要重现本例中的结果,请设置rng
来“默认”
.
rng(“默认”)
加载示例数据。该文件十四行诗预处理.txt
包含了经过预处理的莎士比亚十四行诗。该文件每行包含一首十四行诗,单词之间用空格分隔。将文本从十四行诗预处理.txt
,将文本以换行符分割为文档,然后标记文档。
文件名=“sonnetsPreprocessed.txt”;str = extractFileText(文件名);textData =分裂(str,换行符);文件= tokenizedDocument (textData);
使用创建一个单词包模型bagOfWords
.
bag=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,属性:NumTopics:20单词浓度:1主题浓度:5个粒子主题概率:[0.0500 0.0500 0.0500 0.0500…]文档主题概率:[154x20 double]主题词概率:[3092x20 double]词汇:[“最公平的”“生物”…]主题顺序:“初始拟合概率”FitInfo:[1x1结构]
预测新文档数组的顶级主题。
newDocuments = tokenizedDocument ([“名字有什么关系呢?”玫瑰不管叫什么名字都一样芳香。”“如果音乐是爱情的食粮,那就继续演奏吧。”]); 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以单词概率向量为特征的主题 . 这个model assumes that the topic mixtures ,主题 遵循具有浓度参数的狄里克莱分布 和 分别。
这个话题混合物
是长度的概率向量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函数
狄利克雷分布的一个特殊情况是对称的狄利克雷分布. 这个对称的狄利克雷分布我s characterized by the concentration parameter ,其中的所有元素 都是一样的。
次の MATLABコマンドに対応するリンクがクリックされました。
コマンドを MATLABコマンド ウィンドウに入力して実行してください。网状物ブラウザーは MATLABコマンドをサポートしていません。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。