30

Kullanıcıların ilgilenen posta/makalelerin konu terimlere dayalı kullanıcılara benzer yazılar/mesajları tavsiye etmek işbirlikçi filtreleme (Matris faktörizasyonu) ve Konu modelleme (LDA) kombine bu 2 kağıtları karşılaştım.Basit Python işbirlikçi konu modellemesi uygulaması?

kağıtları () PDF şunlardır: "Collaborative Topic Modeling for Recommending Scientific Articles" ve "Collaborative Topic Modeling for Recommending GitHub Repositories"

yeni algoritma işbirlikçi konu regresyon denir. Bunu uygulayan bir python kodu bulmayı umuyorum ama boşuna. Bu uzun bir atış olabilir, ancak birisi basit bir python örneği gösterebilir mi? Eğer makine-öğrenme ve piton etiketli gibi

+6

https://www.cs.princeton.edu/~blei adresinde listelenen konu modelleme için birkaç Python paketi vardır. /topicmodeling.html. –

+0

C++ 'da, [ctr var] (https://github.com/Blei-Lab/ctr). – kamalbanga

+2

Kamalbanga'nın yukarıdaki linkindeki depo, bahsettiğiniz ilk kağıdı kullanır. C++ 'da yazılsa da, [python'dan çağırabilirsiniz] (http://stackoverflow.com/questions/145270/calling-c-c-from-python). – jtitusj

cevap

-1

, sen hızla lineer regresyon nesnenin oldukça zorlaşır yüzünden ikisiyle birden, piton de pandas & sklearn modüllerini bir göz atın yaptı.

Ayrıca tam ihtiyaçlarına uygun ve aynı zamanda sklearn modülünü

Selamlar

2

Bu keşfetmenize de yardımcı olabilir (Non-negatif Matris çarpanlara ve Gizli Dirichlet Ayırma ile) Topic extraction bir kod örneği göreli var (Bu henüz gönderilmemiş olması emin değilim neden olsa da) sizin başlamış: https://github.com/arongdari/python-topic-model

Daha spesifik: 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 
    """ 

Güzel ve anlaşılır gözüküyor. Hala en azından gensim'a bakmanızı öneriyorum. Radim bu yazılımı çok iyi optimize etmek için harika bir iş çıkardı.

0

Gensin kullanarak çok basit bir LDA uygulaması. Burada daha fazla bilgi bulabilirsiniz: https://radimrehurek.com/gensim/tutorial.html

Onu seni

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)) 

[yardımcı olabilir umut (0 u'0.066 * hayvan + 0.065 *, + 0.047 * Ürün + 0.028 * felsefesi '), (1, u'0.085 *. + 0.047 * ürün + 0.028 * diyet + 0.028 * veg ')]