נראה לי שרק שתי חבילות R מסוגלות לבצע הקצאת דיריכלט סמוי :
אחת היא lda
, שחיבר ג'ונתן צ'אנג; והשני הוא טופיקודלס
שחיבר Bettina Grün ו- Kurt Hornik.
מהם ההבדלים בין שתי החבילות הללו, מבחינת ביצועים, פרטי יישום והרחבה?
נראה לי שרק שתי חבילות R מסוגלות לבצע הקצאת דיריכלט סמוי :
אחת היא lda
, שחיבר ג'ונתן צ'אנג; והשני הוא טופיקודלס
שחיבר Bettina Grün ו- Kurt Hornik.
מהם ההבדלים בין שתי החבילות הללו, מבחינת ביצועים, פרטי יישום והרחבה?
יישום: חבילת ה- topicmodels מספקת ממשק לקוד GSL C ו- C ++ עבור מודלים בנושא מאת Blei et al. ופאן ואח '. עבור המוקדם יותר הוא משתמש ב- Variational EM, עבור הדגימה האחרונה של Gibbs. ראה http://www.jstatsoft.org/v40/i13/paper. החבילה עובדת היטב עם כלי השירות מחבילת tm.
חבילת lda משתמשת ב- Gibbs Sampler מכווץ למספר דגמים הדומים לאלה מספריית GSL. עם זאת, היא יושמה על ידי מחברי החבילה עצמה, ולא על ידי Blei et al. לכן יישום זה שונה באופן כללי מטכניקת ההערכה המוצעת בעיתונים המקוריים המציגים גרסאות מודל אלה, כאשר בדרך כלל מוחל אלגוריתם VEM. מצד שני, החבילה מציעה יותר פונקציונליות מאשר החבילה השנייה. החבילה מספקת גם פונקציונליות של כריית טקסט.
הרחבה: בנוגע להרחבה, ניתן להרחיב את קוד מודל הנושא מעצם טבעו כדי לממשק קוד מודל נושא אחר הכתוב ב- C ו- C ++. נראה כי חבילת ה- lda מסתמכת יותר על היישום הספציפי שמספק המחברים, אך שם הדגימה של Gibbs עשויה לאפשר ציון מודל הנושא שלך. לבעיות הרחבה nota bene, לשעבר יש רישיון תחת GPL-2 והשני LGPL, כך שזה עשוי להיות תלוי על מה אתה צריך להרחיב אותו (GPL-2 מחמיר לגבי היבט הקוד הפתוח, כלומר אתה לא יכול להשתמש בו בתוכנה קניינית).
ביצועים: אני לא יכול לעזור לך כאן, השתמשתי עד כה רק בדוגמאות נושא.
מסקנה:
באופן אישי אני משתמש ב- topicmodels
, כפי שהוא מתועד היטב (ראה מאמר ה- JSS לעיל) ואני סומך על המחברים (גרון גם שילם את flexmix והורניק הוא חבר הליבה ב- R).
+1 עבור מודלים של נושאים. התשובה של @ מומו מקיפה מאוד. רק הייתי מוסיף ש- topicmodels
לוקח קלט כמטריצות מונח מסמך, שמיוצרות בקלות באמצעות חבילת tm
או באמצעות פיתון. החבילה lda
משתמשת בצורה יותר אזוטרית של קלט (המבוססת על LDA-C של Blei) ולא היה לי מזל להשתמש בפונקציות המובנות כדי להמיר dtm ל lda
פורמט חבילה (תיעוד ה- lda גרוע מאוד, כפי שמציין מומו).
יש לי איזה קוד שמתחיל בטקסט גולמי, מעבד אותו מראש ב tm
ומעביר אותו דרך topicmodels
(כולל מציאת המספר האופטימלי של נושאים מראש ועבודה עם הפלט) כאן. יכול להיות שימושי למישהו שמגיע ל- topicmodels
בפעם הראשונה.
חבילת R Structural Topic Model (STM) של מולי רוברטס, ברנדון סטיוארט ודסטין טינגלי היא גם בחירה מצוינת. בנוי על גבי חבילת ה- tm, זו מסגרת כללית למידול נושאים עם מידע משתנה ברמת המסמך.
http://structuraltopicmodel.com/
חבילת STM כוללת סדרה של שיטות (חיפוש רשת) ומדידות (קוהרנטיות סמנטית, שאריות ובלעדיות) לקביעת מספר הנושאים. הגדרת מספר הנושאים ל- 0 תאפשר למודל גם לקבוע מספר אופטימלי של נושאים.
חבילת stmBrowser מהווה השלמה מצוינת להדמיית נתונים כדי לדמיין את השפעתם של משתנים חיצוניים על נושאים. ראה דוגמה זו הקשורה לדיונים על נשיאות 2016: http://alexperrier.github.io/stm-visualization/index.html.
השתמשתי בכל שלוש הספריות, בין שלושת הנושאים, נושא מודלים, lda, stm; לא כולם עובדים עם n גרם. ספריית נושא המודלים טובה עם הערכתה והיא פועלת גם עם n גרם. אבל אם מישהו עובד עם יוני גרמים, ייתכן שהמתרגל מעדיף את ה- STM מכיוון שהוא נותן תפוקה מובנית.