Простая реализация моделирования совместной темы на Python?
Я столкнулся с этими двумя статьями, которые объединили совместную фильтрацию (матричную факторизацию) и моделирование тем (LDA), чтобы рекомендовать пользователям похожие статьи/сообщения на основе тематических условий публикации/статей, которые интересуют пользователей.
Бумаги (в формате PDF):
" Совместное тематическое моделирование для рекомендации научных статей" и
" Совместное тематическое моделирование для репозиториев GitHub"
Новый алгоритм называется регрессией совместной темы. Я надеялся найти код python, который реализовал это, но безрезультатно. Это может быть длинный снимок, но может ли кто-нибудь показать простой пример python?
Ответы
Ответ 1
Это должно помочь вам (хотя и не уверен, почему это еще не было опубликовано): https://github.com/arongdari/python-topic-model
В частности: 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
"""
Выглядит красиво и просто. Я по-прежнему предлагаю по крайней мере смотреть на gensim
. Radim сделал фантастическую работу по оптимизации этого программного обеспечения очень хорошо.
Ответ 2
Очень простая реализация LDA с использованием gensin.
Вы можете найти более подробную информацию здесь: https://radimrehurek.com/gensim/tutorial.html
Надеюсь, это поможет вам.
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 * животное + 0.065 *, + 0.047 * продукт + 0.028 * философия '), (1, u'0.085 *. + 0.047 * продукт + 0.028 * диетический + 0.028 * veg')]
Ответ 3
Как вы отметили машинное обучение и python, вы взглянули на python pandas и sklearn, потому что с ними вы можете быстро создать много линейного регрессионного объекта.
Также есть пример кода относительно Удаление темы (с неотрицательной матричной факторизацией и скрытым распределением Дирихле), которая может соответствовать вашим точным а также поможет вам открыть модуль sklearn
Привет