Я пытаюсь написать прогрму в Spark для выполнения выделения скрытого распределения Дирихле (LDA). Эта документация Spark page представляет собой хороший пример для создания LDA на образцах данных. Ниже программаСкрытое распределение Дирихле (LDA) в Spark
from pyspark.mllib.clustering import LDA, LDAModel
from pyspark.mllib.linalg import Vectors
# Load and parse the data
data = sc.textFile("data/mllib/sample_lda_data.txt")
parsedData = data.map(lambda line: Vectors.dense([float(x) for x in line.strip().split(' ')]))
# Index documents with unique IDs
corpus = parsedData.zipWithIndex().map(lambda x: [x[1], x[0]]).cache()
# Cluster the documents into three topics using LDA
ldaModel = LDA.train(corpus, k=3)
# Output topics. Each is a distribution over words (matching word count vectors)
print("Learned topics (as distributions over vocab of " + str(ldaModel.vocabSize())
+ " words):")
topics = ldaModel.topicsMatrix()
for topic in range(3):
print("Topic " + str(topic) + ":")
for word in range(0, ldaModel.vocabSize()):
print(" " + str(topics[word][topic]))
# Save and load model
ldaModel.save(sc, "target/org/apache/spark/PythonLatentDirichletAllocationExample/LDAModel")
sameModel = LDAModel\
.load(sc, "target/org/apache/spark/PythonLatentDirichletAllocationExample/LDAModel")
Входной образец (sample_lda_data.txt) используется как ниже
1 2 6 0 2 3 1 1 0 0 3
1 3 0 1 3 0 0 2 0 0 1
1 4 1 0 0 4 9 0 1 2 0
2 1 0 3 0 0 5 0 2 3 9
3 1 1 9 3 0 2 0 0 1 3
4 2 0 3 4 5 1 1 1 4 0
2 1 0 3 0 0 5 0 2 2 9
1 1 1 9 2 1 2 0 0 1 3
4 4 0 3 4 2 1 3 0 0 0
2 8 2 0 3 0 2 0 2 7 2
1 1 1 9 0 2 2 0 0 3 3
4 1 0 0 4 5 1 3 0 1 0
Как изменить программу для запуска в файле на текстовых данных, содержащих текстовые данные вместо цифр ? Пусть образец файла содержит следующий текст.
Скрытое распределение Дирихле (LDA) - это тема, которая представляет тем из коллекции текстовых документов. LDA можно рассматривать как алгоритм кластеризации следующим образом:
Темы соответствуют центрам кластеров, а документы соответствуют примерам (строкам) в наборе данных. Темы и документы существуют в пространстве объектов , где векторы объектов являются векторами подсчета слов (сумка слов). Вместо того, чтобы оценивать кластеризацию с использованием традиционного расстояния , LDA использует функцию, основанную на статистической модели формирования документов .
Как я могу напечатать значение вероятности для каждого члена? – CodeIK
Это поможет, если вы суммируете изменения, внесенные вами из исходного кода LDA из искровых документов. – javadba