30

я наткнулся на эти 2 документов, которые в сочетании совместной фильтрации (Матрица факторизации) и моделирование Тема (LDA) рекомендовать пользователям подобные статьи/сообщения на основе темы с точки зрения пост/статьи, которые пользователи заинтересованы.Простая реализация моделирования совместной работы на Python?

Документы (в формате PDF) являются: "Collaborative Topic Modeling for Recommending Scientific Articles" и "Collaborative Topic Modeling for Recommending GitHub Repositories"

новый алгоритм называется совместной темой регрессия. Я надеялся найти код python, который реализовал это, но безрезультатно. Это может быть длинный выстрел, но может ли кто-нибудь показать простой пример python?

+6

Существует несколько пакетов Python для моделирования тем, перечисленных на https://www.cs.princeton.edu/~blei /topicmodeling.html. –

+0

В C++, [есть ctr] (https://github.com/Blei-Lab/ctr). – kamalbanga

+2

В репозитории по ссылке kamalbanga, приведенной выше, используется первая упомянутая вами бумага. Хотя он написан на C++, вы можете [вызвать его из python] (http://stackoverflow.com/questions/145270/calling-c-c-from-python). – jtitusj

ответ

-1

Как вы отметили машину обучения и питона, сделал вы посмотрите на питоне pandas & sklearn модулей, потому что с ними обеими вы можете быстро создать много линейного объект регрессии.

Также есть пример кода по отношению к Topic extraction (с неотрицательной матрицей факторизацией и латентным распределением Дирихля), которые могут соответствовать вашим потребностям, а также помогут вам открыть для себя модуль sklearn

С уважением

2

Этих должно вам начать работу (хотя и не уверен, почему это не было ниодного): 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 сделал фантастическую работу по оптимизации этого программного обеспечения очень хорошо.

0

Очень простая реализация 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 ')]

Смежные вопросы