¿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'')]