python machine-learning lda topic-modeling collaborative-filtering

¿Implementación simple de Python de modelado colaborativo de temas?



machine-learning lda (3)

Como ha etiquetado Machine-Learning y Python , sklearn un vistazo a los módulos python pandas y sklearn , porque con ambos puede crear rápidamente muchos objetos de regresión lineal.

También hay un ejemplo de código relativo a la extracción de temas (con factorización de matriz no negativa y asignación de Dirichlet latente) que puede ajustarse a sus necesidades exactas y también ayudarlo a descubrir el módulo sklearn.

Saludos

Me encontré con estos dos artículos que combinaban el filtrado colaborativo (factorización de matrices) y el modelado de temas (LDA) para recomendar a los usuarios artículos / publicaciones similares basados ​​en los términos temáticos de publicaciones / artículos en los que los usuarios están interesados.

Los documentos (en PDF) son: " Modelo de tema colaborativo para recomendar artículos científicos " y " Modelo de tema colaborativo para recomendar repositorios GitHub ".

El nuevo algoritmo se llama regresión de tema colaborativo . Esperaba encontrar algún código de Python que lo implementara pero fue en vano. Esto podría ser una posibilidad remota, pero ¿alguien puede mostrar un ejemplo simple de Python?


Esto debería comenzar (aunque no estoy seguro de por qué esto no se ha publicado aún): https://github.com/arongdari/python-topic-model

Más específicamente: https://github.com/arongdari/python-topic-model/blob/master/ptm/collabotm.py

class CollaborativeTopicModel: """ Wang, Chong, and David M. Blei. "Collaborative topic modeling for recommending scientific articles." Proceedings of the 17th ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2011. Attributes ---------- n_item: int number of items n_user: int number of users R: ndarray, shape (n_user, n_item) user x item rating matrix """

Se ve bien y sencillo. Todavía sugiero al menos mirar gensim . Radim ha hecho un trabajo fantástico al optimizar muy bien ese software.


Una implementación de LDA muy simple usando gensin. Puede encontrar más información aquí: https://radimrehurek.com/gensim/tutorial.html

Espero que pueda ayudarte

from nltk.corpus import stopwords from nltk.tokenize import RegexpTokenizer from nltk.stem import RSLPStemmer from gensim import corpora, models import gensim st = RSLPStemmer() texts = [] doc1 = "Veganism is both the practice of abstaining from the use of animal products, particularly in diet, and an associated philosophy that rejects the commodity status of animals" doc2 = "A follower of either the diet or the philosophy is known as a vegan." doc3 = "Distinctions are sometimes made between several categories of veganism." doc4 = "Dietary vegans refrain from ingesting animal products. This means avoiding not only meat but also egg and dairy products and other animal-derived foodstuffs." doc5 = "Some dietary vegans choose to wear clothing that includes animal products (for example, leather or wool)." docs = [doc1, doc2, doc3, doc4, doc5] for i in docs: tokens = word_tokenize(i.lower()) stopped_tokens = [w for w in tokens if not w in stopwords.words(''english'')] stemmed_tokens = [st.stem(i) for i in stopped_tokens] texts.append(stemmed_tokens) dictionary = corpora.Dictionary(texts) corpus = [dictionary.doc2bow(text) for text in texts] # generate LDA model using gensim ldamodel = gensim.models.ldamodel.LdaModel(corpus, num_topics=2, id2word = dictionary, passes=20) print(ldamodel.print_topics(num_topics=2, num_words=4))

[(0, u''0.066 * animal + 0.065 *, + 0.047 * producto + 0.028 * filosofía ''), (1, u''0.085 *. + 0.047 * producto + 0.028 * dieta + 0.028 * verduras'')]