विषय मॉडल में विषय स्थिरता


23

मैं एक ऐसी परियोजना पर काम कर रहा हूं, जहां मैं ओपन-एंडेड निबंधों की एक श्रृंखला की सामग्री के बारे में कुछ जानकारी निकालना चाहता हूं। इस विशेष परियोजना में, 148 लोगों ने एक बड़े प्रयोग के एक काल्पनिक छात्र संगठन के बारे में निबंध लिखा। यद्यपि मेरे क्षेत्र में (सामाजिक मनोविज्ञान), इन आंकड़ों का विश्लेषण करने का विशिष्ट तरीका हाथ से निबंधों को कोड करना होगा, मैं इसे मात्रात्मक रूप से करना चाहूंगा, क्योंकि हाथ-कोडिंग दोनों श्रम-गहन और मेरे लिए थोड़ा बहुत व्यक्तिपरक है। स्वाद।

मात्रात्मक तरीके से मुक्त प्रतिक्रिया डेटा का विश्लेषण करने के तरीकों के बारे में मेरी जांच के दौरान, मैं विषय मॉडलिंग (या अव्यक्त डिरिचलेट आवंटन, या एलडीए) नामक एक दृष्टिकोण पर ठोकर खाई । विषय मॉडलिंग आपके डेटा (एक टर्म-डॉक्यूमेंट मैट्रिक्स) का एक बैग-ऑफ-वर्ड्स प्रतिनिधित्व लेता है और डेटा के अव्यक्त विषयों को निकालने के लिए शब्द सह-घटनाओं के बारे में जानकारी का उपयोग करता है। यह दृष्टिकोण मेरे आवेदन के लिए एकदम सही लगता है।

दुर्भाग्य से, जब मैंने विषय मॉडलिंग को अपने डेटा पर लागू किया है, तो मैंने दो मुद्दों की खोज की है:

  1. विषय मॉडलिंग द्वारा उजागर किए गए विषय कभी-कभी व्याख्या करना कठिन होते हैं
  2. जब मैं अपने विषय मॉडल को एक अलग यादृच्छिक बीज के साथ फिर से चलाता हूं, तो विषय नाटकीय रूप से बदलने लगते हैं

अंक 2 में मुझे विशेष चिंता है। इसलिए, मेरे पास दो संबंधित प्रश्न हैं:

  1. व्याख्या और स्थिरता के लिए मेरे मॉडल फिट प्रक्रिया का अनुकूलन करने के लिए एलडीए प्रक्रिया में कुछ भी हो सकता है? व्यक्तिगत रूप से, मुझे सबसे कम गड़बड़ी और / या सबसे अच्छे मॉडल के साथ मॉडल खोजने के बारे में ज्यादा परवाह नहीं है - मैं मुख्य रूप से इस प्रक्रिया का उपयोग मुझे समझने और चरित्र वर्णन करने में मदद करना चाहता हूं कि इस अध्ययन में प्रतिभागियों ने अपने निबंधों में क्या लिखा है। हालांकि, मैं निश्चित रूप से नहीं चाहता कि मेरे परिणाम यादृच्छिक बीज की एक कलाकृतियों के रूप में हों!
  2. उपरोक्त प्रश्न से संबंधित, क्या आपको एलडीए करने के लिए कितने डेटा की आवश्यकता है, इसके लिए कोई मानक हैं? मैंने देखा है कि इस पद्धति का उपयोग करने वाले अधिकांश कागजात बड़े कॉर्पोरा (पिछले 20 वर्षों के सभी विज्ञान पत्रों का एक संग्रह) का विश्लेषण करते हैं, लेकिन, चूंकि मैं प्रयोगात्मक डेटा का उपयोग कर रहा हूं, इसलिए दस्तावेजों का मेरा कोष बहुत छोटा है।

मैंने यहां निबंध डेटा पोस्ट किया है जो कोई भी अपने हाथों को गंदा करना चाहता है, और मैंने नीचे उपयोग किए जाने वाले आर कोड को चिपका दिया है।

require(tm)
require(topicmodels)

# Create a corpus from the essay 
c <- Corpus(DataframeSource(essays))
inspect(c)

# Remove punctuation and put the words in lower case
c <- tm_map(c, removePunctuation)
c <- tm_map(c, tolower)

# Create a DocumentTermMatrix.  The stopwords are the LIWC function word categories
# I have a copy of the LIWC dictionary, but if you want to do a similar analysis,
# use the default stop words in tm
dtm <- DocumentTermMatrix(c, control = list(stopwords = 
  c(dict$funct, dict$pronoun, dict$ppron, dict$i, dict$we, dict$you, dict$shehe, 
    dict$they, dict$inpers, dict$article, dict$aux)))

# Term frequency inverse-document frequency to select the desired words
term_tfidf <- tapply(dtm$v/rowSums(as.matrix(dtm))[dtm$i], dtm$j, mean) * log2(nDocs(dtm)/colSums(as.matrix(dtm)))
summary(term_tfidf)

dtm <- dtm[, term_tfidf >= 0.04]

lda <- LDA(dtm, k = 5, seed = 532)
perplexity(lda)
(terms <- terms(lda, 10))
(topics <- topics(lda))

संपादित करें:

मैंने nstartटिप्पणियों में फ्लाउंडर द्वारा सुझाए गए तरीके को संशोधित करने की कोशिश की । दुर्भाग्य से, जैसा कि नीचे दिखाया गया है, यहां तक nstartकि उन विषयों में 1000 परिणामों पर सेट करना जो यादृच्छिक बीज से यादृच्छिक बीज में काफी नाटकीय रूप से भिन्न होते हैं। बस फिर से जोर देने के लिए, केवल एक चीज जिसे मैं नीचे दो मॉडलों के अनुमान में बदल रहा हूं वह है मॉडल अनुमान लगाने के लिए उपयोग किए जाने वाले यादृच्छिक बीज, और फिर भी विषय इन दो रन के अनुरूप नहीं लगते हैं।

lda <- LDA(dtm, k = 5, seed = 535, control = list(nstart = 1000))
(terms <- terms(lda, 10))

      Topic 1         Topic 2      Topic 3      Topic 4       Topic 5      
 [1,] "international" "ethnicity"  "free"       "credit"      "kind"       
 [2,] "communicate"   "true"       "team"       "mandatory"   "bridge"     
 [3,] "gain"          "asians"     "cooperate"  "music"       "close"      
 [4,] "use"           "hand"       "order"      "seen"        "deal"       
 [5,] "big"           "hold"       "play"       "barrier"     "designed"   
 [6,] "communication" "effective"  "big"        "stereotypes" "effort"     
 [7,] "america"       "emphasis"   "beginning"  "asians"      "implemented"
 [8,] "chinese"       "halls"      "china"      "fantastic"   "websites"   
 [9,] "ethnicity"     "minorities" "difference" "focusing"    "planned"    
[10,] "networks"      "population" "easier"     "force"       "body"

lda <- LDA(dtm, k = 5, seed = 536, control = list(nstart = 1000))
(terms <- terms(lda, 10))

      Topic 1       Topic 2         Topic 3        Topic 4       Topic 5    
 [1,] "kind"        "international" "issue"        "willing"     "play"     
 [2,] "easier"      "ethnicity"     "close"        "use"         "trying"   
 [3,] "gain"        "communication" "currently"    "hand"        "unity"    
 [4,] "websites"    "communicate"   "implemented"  "networks"    "decision" 
 [5,] "credit"      "bridge"        "particularly" "stereotypes" "gap"      
 [6,] "effort"      "america"       "credit"       "communicate" "normally" 
 [7,] "barriers"    "connection"    "fulfill"      "came"        "asians"   
 [8,] "effects"     "kind"          "grew"         "asians"      "created"  
 [9,] "established" "order"         "perspectives" "big"         "effective"
[10,] "strangers"   "skills"        "big"          "budget"      "prejudice"

2
अपना डेटा साझा करने के लिए धन्यवाद! यह देखना बहुत दिलचस्प था। मेरे पास आपके सवालों का अच्छा जवाब नहीं है, लेकिन मैं कुछ बातों का सुझाव देना चाहता हूं। प्रश्न 1 के लिए, आप पैकेज LDAमें फ़ंक्शन में नियंत्रण मापदंडों को समायोजित करने का प्रयास कर सकते हैं topicmodels। विशेष रूप से, आप nstartबड़ा बनाने की कोशिश कर सकते हैं । यह आपके परिणामों को और अधिक स्थिर बनाने की गारंटी है, क्योंकि एलडीए फ़ंक्शन बस अलग-अलग यादृच्छिक बीजों के साथ बार-बार चलेगा और फिर सर्वोत्तम परिणाम लौटाएगा। दुर्भाग्य nstartसे, कहने के लिए, 1000 बढ़ रहा है, एल्गोरिथ्म 1000 गुना अधिक काम करेगा (cont'd)
Flounderer

1
तो यह बहुत धीमी हो जाएगी। और इसकी कोई गारंटी नहीं है कि यह पर्याप्त रूप से स्थिर होगा । पुन: दोनों प्रश्न, यह मुझे लगता है कि एलडीए वास्तव में अनदेखी दस्तावेजों को वर्गीकृत करने के लिए डिज़ाइन किया गया है जब एक मानव प्रक्रिया के लिए बहुत अधिक डेटा है। इसके लिए, यह ठीक है यदि VEM एल्गोरिथ्म केवल "अच्छा पर्याप्त" उत्तर देता है जो एक रन से दूसरे में भिन्न हो सकता है। लेकिन आपके लिए, यह वांछनीय नहीं है, और इसलिए एलडीए सबसे अच्छा विकल्प नहीं हो सकता है। Shalizi के पाठ्यक्रम के पहले कुछ व्याख्यानों में कुछ उत्कृष्ट विकल्प यहाँ दिए गए हैं: stat.cmu.edu/~cshalizi/350 , उदाहरण के लिए, आप प्रत्येक (cont'd) में परिवर्तित कर सकते हैं
Flounderer

2
एक बैग-ऑफ-वर्ड वेक्टर पर निबंध और फिर परिणामों पर एक पीसीए करें, फिर क्लस्टर देखें। इस बात के लिए कि क्या आपका कॉर्पस काफी बड़ा है, ईमानदार होने के लिए मुझे आश्चर्य नहीं होगा अगर यह विश्वसनीय परिणाम देने के लिए वीईएम के लिए बहुत बड़ा है। शायद मैं सिर्फ कड़वा हूं, लेकिन मैंने इस तरह के लेखकों द्वारा एक अन्य मॉडल के लिए काम करने के लिए इस पद्धति को प्राप्त करने में बहुत समय बिताया है, और यह छोटे उदाहरणों का उपयोग करते समय भी रन से चलाने के लिए पूरी तरह से असंगत था। ऐसे कई कागजात नहीं हैं जो इस तरह के एल्गोरिदम के लिए शुरुआती बिंदु चुनने पर चर्चा करते हैं, जहां तक ​​मुझे पता है।
फ्लॉडरर

Flounderer, आपके इनपुट के लिए बहुत बहुत धन्यवाद! यह सुनना मेरे लिए थोड़ा निराशाजनक है कि विशेष रूप से एलडीए के बारे में अधिक दिशा-निर्देश नहीं हैं, लेकिन मुझे लगता है कि यह एक असुरक्षित पद्धति के क्षेत्र के साथ आता है। मैं यह देखने के nstartलिए पाठ्यक्रम वेबसाइट को समायोजित करने और देखने की कोशिश करूंगा कि क्या उनमें से कुछ भी उपयोगी है। (BTW, यदि आप किसी उत्तर में अपनी टिप्पणी डालते हैं, तो मैं उसे वोट करूंगा। मैं यह देखना चाहूंगा कि क्या किसी और की सलाह लेने से पहले मेरे पास कोई सलाह है, लेकिन मुझे लगता है कि आपकी टिप्पणियां उत्तर के रूप में गिनने के लिए पर्याप्त हैं।
पैट्रिक एस। फ़ॉश्चर

मुझे लगता है कि आपका सामाजिक-विज्ञान ग्रन्टवर्क दर्द, पैट्रिक है, लेकिन मुझे लगता है कि आपका दृष्टिकोण शुरू करना गलत है। यदि आप सांख्यिकीय परीक्षणों का उपयोग करना चाहते हैं, तो आपको वर्गीकरण त्रुटि दर प्राप्त करने के लिए मनुष्यों को उनमें से एक भाग को कोड करने की आवश्यकता होगी, क्या आपने (व्यक्तिगत रूप से) ऐसा किया है? यदि ऐसा है, तो आपको पता चल जाएगा कि कौन सी विशेषताएं सबसे प्रमुख हैं और आप एक बेहतर एल्गोरिथ्म डिजाइन / चुन सकते हैं।
संकेत

जवाबों:


6

अपनी जिज्ञासा के लिए, मैंने एक क्लस्टरिंग एल्गोरिथ्म लागू किया है जिसे मैं इस डेटासेट पर काम कर रहा हूं।

मैंने परिणामों को अस्थायी रूप से यहाँ रखा है (निबंध डेटासेट चुनें)।

ऐसा लगता है कि समस्या शुरुआती बिंदु या एल्गोरिथ्म नहीं है, बल्कि डेटा है। आप 'यथोचित' (विषयवस्तु, मेरे सीमित अनुभव में) 147 उदाहरणों के साथ भी अच्छे क्लस्टर प्राप्त कर सकते हैं, जब तक कि कुछ छिपे हुए विषय / अवधारणा / थीम / क्लस्टर (जो भी आप कॉल करना चाहेंगे)।

यदि डेटा में अच्छी तरह से अलग-अलग विषय नहीं हैं, तो आप जो भी एल्गोरिथ्म का उपयोग करते हैं, कोई बात नहीं, आपको अच्छे उत्तर नहीं मिल सकते हैं।


@ सिद्धार्थ.गोपाल प्रतिक्रिया के लिए बहुत बहुत धन्यवाद! यह सच है कि मैं दिए गए समूहों में कुछ ओवरलैप की उम्मीद करूंगा कि सभी प्रतिभागी एक काल्पनिक छात्र संगठन का वर्णन कर रहे हैं (जिसे हमने "BadgerConnect" कहा है)। इसलिए, इसके विपरीत, उदाहरण के लिए, विज्ञान से कागजात के लिए विषय मॉडलिंग का एक आवेदन, जहां कुछ विषय कागज से कागज से काफी अलग हैं, विषय सभी समान हैं। हालाँकि, यह सही है कि कुछ निबंध बेजरकोनेक्ट के पक्ष में हैं और कुछ बेजरकोक्ट के खिलाफ लिखे गए हैं।
पैट्रिक एस। फ़ॉश्चर

यह भी सच है कि निबंध जिस तरह के तर्क प्रस्तुत करते हैं और कैसे तर्क प्रस्तुत किए जाते हैं, उसमें व्यापक रूप से भिन्नता है। यदि संभव हो तो मैं उस परिवर्तनशीलता में से कुछ पर कब्जा करना चाहता हूं। क्या आपके पास कोई विचार है कि क्या इनमें से कुछ भेदों को पकड़ना संभव है (बहुत कम से कम, इस काल्पनिक छात्र कार्यक्रम के खिलाफ निबंध और पक्ष में निबंध के बीच का अंतर)? जब आप अलग-अलग यादृच्छिक बीजों का उपयोग करते हैं, तो क्या आपके क्लस्टरिंग परिणाम स्थिर थे?
पैट्रिक एस। फ़ॉश्चर

1
1. यदि आप एल्गोरिथ्म की स्थिरता के बारे में पूरी तरह से चिंतित हैं - कई बार एल्गोरिथ्म चलाने की कोशिश करें और उच्चतम संभावना वाले मॉडल का चयन करें।
सिद्धार्थ गोपाल

1
(हालांकि स्थिरता यहां एक माध्यमिक मुद्दे की तरह लगती है)। 2. तर्कों और विचारों के संदर्भ में आप क्या अपेक्षा करते हैं, इसके विवरण को देखते हुए, निबंध को बैग-ऑफ-वर्ड के रूप में प्रस्तुत करना इस संदर्भ में एक अच्छा विचार नहीं है। Infact विषय मॉडल खुद इसके लिए एक अच्छा उपकरण नहीं हो सकता है। मैं आपको सुझाव दूंगा कि आप कुछ महत्वपूर्ण शब्दों को चुनें, जिसमें आप रुचि रखते हैं (जैसे दौड़, भोजन, छात्रावास आदि) और उस वाक्य की भावना का विश्लेषण करने का प्रयास करें जिसमें शब्द होता है। उदाहरण के लिए यहाँ एक डेमो के लिए एक नज़र है ।
सिद्धार्थ गोपाल

1
पायथन में एक उत्कृष्ट एनएलपी टूलकिट है जिसे nltk कहा जाता है। आप यह देखना चाहते हैं कि यह क्या प्रदान करता है। Tf-idf, 'तकनीकी रूप से' के संबंध में, LDA को इनपुट केवल शब्द-गणना होना चाहिए क्योंकि बहुराष्ट्रीय वितरण मनमाने वास्तविक संख्याओं के लिए परिभाषित नहीं है।
सिद्धार्थ गोपाल

10
  1. तथाकथित "विषय मॉडल" में "विषयों" की धारणा भ्रामक है। मॉडल बिल्कुल नहीं जानता है या शब्दार्थ "सुसंगत" विषयों को जानने के लिए डिज़ाइन नहीं किया गया है। "विषय" केवल टोकन (शब्द) पर वितरण हैं। दूसरे शब्दों में, मॉडल सिर्फ शब्दों के उच्च-क्रम सह-घटना को कैप्चर करता है। इन संरचनाओं का मतलब कुछ है या नहीं यह मॉडल का उद्देश्य नहीं है।

  2. "LDA" मॉडल के दो भाग हैं (अनिवार्य रूप से सभी ग्राफिकल मॉडल): a) मॉडल परिभाषा और b) अवर / संपत्ति मॉडल मापदंडों के लिए एक अनुमान एल्गोरिथ्म का कार्यान्वयन। आपके द्वारा बताई गई बात "LDA" मॉडल की समस्या हो सकती है या नहीं भी हो सकती है लेकिन आपके द्वारा उपयोग किए जाने वाले विशिष्ट कार्यान्वयन के कुछ बग / त्रुटि / गलतफहमी (R पैकेज) हो सकती है।

  3. "एलडीए" के लगभग सभी कार्यान्वयनों में कुछ यादृच्छिकरण की आवश्यकता होती है। और आक्षेप एल्गोरिदम की प्रकृति (जैसे, एमसीएमसी या वैरिएबल इनजेक्शन) द्वारा, आपको स्थानीय न्यूनतम समाधान या कई समाधानों का वितरण मिलेगा। तो, संक्षेप में, आपने जो देखा है वह किसी तरह की उम्मीद है।

व्यावहारिक सुझाव:

  1. अलग-अलग आर पैकेज की कोशिश करें: उदाहरण के लिए, यह पैकेज डेविड ब्लेली के पूर्व स्नातक छात्र द्वारा किया गया है। या, किसी अन्य वातावरण का भी प्रयास करें, जैसे कि यह । यदि आपको इन सभी स्थिर पैकेजों से समान परिणाम मिलते हैं, तो कम से कम, आपको समस्या थोड़ी कम हो जाती है।

  2. स्टॉप-शब्द नहीं हटाने के साथ थोड़ा खेलने की कोशिश करें। तर्क यह है कि, ये स्टॉप-शब्द ऐसे छोटे कॉर्पस (जैसे, 100 या इतने लेख) में अर्थ अर्थ को जोड़ने में महत्वपूर्ण भूमिका निभाते हैं। इसके अलावा, चीजों को छानने की कोशिश न करें।

  3. हाइपर-मापदंडों के साथ थोड़ा खेलने की कोशिश करें, जैसे विभिन्न विषयों की संख्या।

विषयों के बारे में कागजात:

  1. http://www.aclweb.org/anthology-new/D/D12/D12-1087.pdf

  2. http://people.cs.umass.edu/~wallach/publications/mimno11optimizing.pdf


आपके प्रतिक्रिया के लिए धन्येवाद। मैं एक समय में आपकी टिप्पणियों का जवाब दूंगा। (1) मैं समझता हूं कि मॉडल विषयों के बारे में कुछ नहीं जानता है, लेकिन आपका तर्क यह है कि विषय मॉडल द्वारा उजागर की गई संरचनाएं (और क्या इन संरचनाओं का मतलब कुछ भी इन मॉडलों का उद्देश्य नहीं है) डेविड ब्लेई द्वारा इस समीक्षा पत्र के लिए सीधे विरोधाभासी है , विषय मॉडल के निर्माता। यह मुझे लगता है कि विषय मॉडल का उद्देश्य वास्तव में पाठ्य डेटा का पता लगाने / लक्षण वर्णन करने में मदद करना है, जो कि इस परियोजना में मैं करना चाहता हूं।
पैट्रिक एस। फ़ॉश्चर

(२) यद्यपि यह संभव है कि मेरे परिणाम बग के कारण हैं, मुझे लगता है कि यह अधिक संभावना है कि वे मेरे अंत में किसी प्रकार की त्रुटि के कारण हैं (और यदि ऐसा लगता है, तो कृपया मुझे बताएं!)। मैं topicmodelsआर में पैकेज का उपयोग कर रहा हूं , जो मूल रूप से ब्लेई और सहकर्मियों द्वारा कार्यान्वित मूल एल्गोरिदम के लिए एक आर इंटरफ़ेस है।
पैट्रिक एस। फ़ॉश्चर

(3) मुझे पता है कि LDA को कुछ यादृच्छिकरण की आवश्यकता है, इसलिए मैं रन से रन के लिए सटीक परिणाम नहीं मांग रहा हूं, लेकिन मुझे लगता है कि विभिन्न यादृच्छिक बीज का उपयोग करके समान विषयों की अपेक्षा करना उचित है (वास्तव में, मेरा मानना ​​है कि यह एक मानक अपेक्षा है जब लोग रैंडमाइजेशन के आधार पर एल्गोरिदम का उपयोग करते हैं)। मैं जानना चाहता हूं कि परिणामों में स्थिरता को कैसे प्राप्त किया जाए।
पैट्रिक एस। फ़ॉश्चर

@ PatrickS.Forscher आपकी पहली टिप्पणी के लिए: नहीं, यह विरोधाभासी है। नाम "विषय" हम क्या हैं, मनुष्य के रूप में, उन शब्दों के वितरण पर लेबल लगाते हैं। ये क्लस्टरिंग संरचना वास्तविक-दुनिया, मानव पठनीय विषयों से संबंधित हो सकती है या नहीं भी हो सकती है। सटीक समस्या को कम करने के लिए विषय मॉडल में सुसंगतता लाने के लिए कई कागजात हैं।
लिआंगजी होंग

@ PatrickS.Forscher अपनी दूसरी टिप्पणी करने के लिए: यह देखने के लिए कि क्या आपको समान (अनुचित परिणाम) मिलते हैं या नहीं, कुछ अलग कार्यान्वयन की कोशिश करें। उदाहरण के लिए, UMASS मैलेट।
लियांगजी हॉन्ग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.