0

我目前正在从事一个项目,我对德国全体辩论和报纸文章中一个主题(社会不平等)的普遍性感兴趣。我正在使用定量文本分析工具来从文本中生成输出,以包含在回归分析中的经济指标,例如基尼系数。到目前为止,我已经创建了一个字典来表示社会不平等,这使我能够生成每年汇总的计数和频率数据。但是,鉴于字典分析的问题,我也想使用有监督的方法,例如种子 lda 或结构主题模型。

在这种情况下,我遇到了两个困难。首先,我很难在 r 中实现任何这些监督方法,因为这些方法似乎旨在处理多个主题,而不是只关注一个主题。其次,我不知道我必须为回归分析选择哪个输出对象以及如何每年汇总它们。

到目前为止,我已经从“seededlda”包中尝试过 Seeded LDA,因为它似乎是最合适的。我有 2 个文本语料库:一个由 2296 个文件(全体辩论)组成,另一个由 190404 个文件(报纸文章)组成。但是,当我尝试创建 seeded-lda 模型时,r 没有得到任何结果,并且在两个语料库的顶部都冻结了。

我创建了以下字典:

require(quanteda)
dict <- dictionary(list(Alles = c("soziale_sich*", "soziale_teilhabe*", "soziale_verunsich*", 
 "soziale_zwänge", "soziale_ängste", "sozialer_absturz", "sozialer_sprengstoff", "sozialer_zwang",
 "soziales_schicksal", "sozialrisik*", "sozialschmarotzer", "steigende_haushaltseinkommen",
 "superreiche", "unterprivilegierte_gruppe*", "verarmung*", "vermögenskonzentration*", 
 "wirtschaftliche_und_soziale_auswirkung*", "wohlfahrtsdiktatur", "ärmere_hälfte_der_bevölkerung",
 "ärmsten_haushalte", "ökonomische_sachzwänge*", "abzug_von_vorsorgeaufwendungen", "agenda_2010", 
 "allgemeinverbindliche_tarifverträge", "arbeitnehmersparzulage", "arbeitsbedingung*", 
 "arbeitsmarktinklusion*", "arbeitsmarktpolitische maßnahme*", "bafög*", "besteuerung_von_erbschaften",
 "besteuerung_von_kapitalerträgen", "bildungs-_und_teilhabepaket", "bildungsbenachteiligung*",
 "bildungsfern*", "bildungspaket*", "bildungsungleichheit*", "daseinsvorsorge", "einkommen_entlasten",
 "empowerment", "entlastung_niedriger_und_mittlerer_einkommen", "entlastung_von_einkommen", 
 "erbschaftsbesteuerung", "erbschaftssteuer", "erhöhung_des_Mindestlohns", "freibetrag", "hartz_IV*",
 "lohnentwicklung*", "mehr_soziale_rechte", "mehr_umverteilung*", "mindestlohn", "mindestlöhne", 
 "mini_job*", "neue_soziale_frage", "reichensteuer", "sozialabgaben", "sozialbudget",
 "soziale_integration*", "soziale_sanktion*", "sozialgesetzgebung*", "sozialhilfeempfänger*", 
 "sozialintegration", "sozialleistungsquote*", "sozialpolitische_maßnahme*", 
 "sozialpolitische_reformmaßnahme*", "sozialstaat*", "sozialtarife", "sozialversicherung*", 
 "staatliche_förderung_der_vermögensbildung", "steuerlicher_ausgleich", "steuervergünstigung*", 
 "stärkung_der_tarifbindung*", "teilhabeleistung", "teilhabepaket", "transferleistung*", 
 "vermögensbesteuerung*", "verteilungspolitik", "weniger_umverteilung*", "wohlfahrt*",  
 "wohlfahrtsstaat*", "wohlstandsverlust*", "wohngeld*", "wohnungsbauprämie*", 
 "Verteilungs-_und_Stratifikationsaspekte", "aufstiegsmobilität", "einkommensgrenz*", 
 "einkommensschere", "einkommensschwach*", "einkommensungleich*", "einkommensungleichheit*", 
 "einkommensunterschied*", "einkommensverteilung*", "gesellschaftliche_mobilität*", 
 "gesellschaftlicher_abstieg*", "gesellschaftlicher_aufstieg*", "gini*", 
 "gleichheit_der_lebensverhältnisse", "konkurrent_um_soziale_güter", "konsumungleichheit*", 
 "lohngerechtigkeit*", "pay_gap", "schonvermögen*", "steuergerechtigkeit*", "steuerungerechtigkeit*",
 "ungleiche einkommensverteilung", "ungleiche_verteilung_der_vermögen*", 
 "ungleichheit_der_markteinkommen", "ungleichheit_der_vermögen*", "ungleichheit_von_vermögen", 
 "ungleichverteilung*", "vermögensungleichheit*", "verteilung_der_einkommen*", 
 "verteilung_von_einkommen", "verteilungsverhältnis*", "wirtschaftliche_kluft",
 "wirtschaftlicher_aufstieg*", "ökonomischer_aufstieg*","arbeit_muss_sich_lohnen", 
 "egalitäre_gesellschaft*", "einkommensgerecht*", "entsolidarisierung", "faire_löhne", 
 "generationengerechtigkeit", "gerechte_löhne", "gerechter_lohn*",  "gesellschaftlich_gleich*", 
 "gesellschaftliche_chance*", "gesellschaftliche_emanzipation", "gesellschaftliche_gleich*", 
 "gesellschaftliche_kohäsion", "gesellschaftliche_schieflage*", "gesellschaftliche_solidarität",
 "gesellschaftliche_verantwort*", "gesellschaftlicher_zusammenhalt", "gleiche_gesellschaft*", 
 "lohngerechtigkeit*", "politische_gleichheit*", "schlechte_soziale_verhältnisse",
 "solidarische_ökonomie", "sozial_gerecht*", "sozial_ungerecht*", "soziale_aufstieg*", 
 "soziale_chancen*", "soziale_chancengerechtigkeit", "soziale_chancengleichheit", 
 "soziale_emanzipation", "soziale_gerechtigkeit*", "soziale_kohäsion*",
 "soziale_schieflage*", "soziale_solidarität", "soziale_ungerechtigkeit*", "soziales_wohl*", 
 "sozialgerecht*", "verteilungsgerecht*", "wirtschaftlich_gerecht*", 
 "wirtschaftliche_chancengleichheit", "wirtschaftliche_emanzipation", "wirtschaftliche_solidarität", 
 "ökonomisch_gerecht*", "ökonomische_emanzipation", "abstiegsangst", "abstiegsängste", 
 "allgemeine_wirtschaftliche_entwicklung*", "arbeitslos*", "arm", "arme", "armut*", 
 "einkommenslücke*", "einkommensreiche", "einkommensreichtum", "existenzsich*", 
 "geringverdiener*", "gesellschaftliche_absich*", "gesellschaftliche_ausgrenz*", 
 "gesellschaftliche_folge*", "gesellschaftliche_gräben", "gesellschaftliche_kluft", 
 "gesellschaftliche_lage*", "gesellschaftliche_perspektiv*", "gesellschaftliche_sich*", 
 "gesellschaftliche_spalt*", "gesellschaftliche_teilhabe*", "gesellschaftliche_ungleich*", 
 "gesellschaftliche_verunsich*", "gesellschaftliche_zwänge", "gesellschaftlicher_ungleich*", 
 "gesellschaftlicher_zwang", "großverdiener*", "hohe_vermögen*", "hoher_wohlstand", 
 "hohes_wohlstandsniveau", "marktfundamentalismus",  "marktradikalismus", "mehr_einkommen*", 
 "mehrverdiener*", "mitellos*", "niedriglohn*", "niedriglöhne*", "obdachlos*",  "plutokrat*", 
 "politisch_ungleich", "politische_ungleich*", "prekariat", "prekär*", "putzfrau", "reichste_prozent", 
 "reichtumsgrenze", "schere_zwischen*", "sinkende_haushaltseinkommen", "sozial_abgehängt*", 
 "sozial_bedürf*", "sozial_bedürftig*", "sozial_bessergestellt*", "sozial_dring*", "sozial_exklusiv*", 
 "sozial_explosiv*", "sozial_gleich*", "sozial_isoliert*", "sozial_schlecht*", "sozial_schwach*", 
 "sozial_selektiv*", "sozial_ungleich*", "sozial_unterprivilegiert*", "sozial-wirtschaftliche_lage",
 "soziale_absich*", "soziale_angst", "soziale_ausgrenz*", "soziale_bedürf*", "soziale_differenz*",
 "soziale_disparität*", "soziale_dring*",  "soziale_entwicklung*", "soziale_exklusion", 
 "soziale_fehlentwicklung*", "soziale_folge*", "soziale_frage*", "soziale_gleich*", 
 "soziale_grenzlinie*", "soziale_gräbe*", "soziale_herausforderung*", "soziale_herkunft", 
 "soziale_hinder*", "soziale_hürde*", "soziale_isolation*", "soziale_kluft", "soziale_konkurrenz",
 "soziale_lage*", "soziale_mobilität*", "soziale_perspektiv*", "soziale_rahmen*", 
 "soziale_reproduktion*", "soziale_risiken", "soziale_schicksale", "soziale_selektiv*", 
 "soziale_sich*", "soziale_spalt*", "soziale_ungleich*", "soziale_ungleichgewichte", 
 "soziale_verzerrung*", "sozialer_abstieg*", "sozialer_aufstieg*", "sozialer_bedürf*", 
 "sozialer_diff*", "sozialer_disparität*", "sozialer_entwick*", "sozialer_folg*", "sozialer_rahm*",
 "sozialer_ungleich*", "soziales_ungleich*", "soziales_ungleichgewicht", "sozialordnung", 
 "sozialverträglich*", "sozio-ökonomische_entwicklung*", "sozioökonomische_folge*", 
 "sozioökonomische_frage*", "ungleichheitsdebatte*", "ungleichheitsentwicklung*", "unterschicht*", 
 "vermögensungleich*", "verteilungsdiskussion*", "von_der_gesellschaft_abgehängt*", 
 "weniger_einkommen*", "wirtschaftlich_abgehängt*", "wirtschaftlich_bedürf*", 
 "wirtschaftliche_ausgrenz*", "wirtschaftliche_disparität*", "wirtschaftliche_schwierigkeit*", 
 "zwischen_arm_und_reich", "ökonomisch_ungleich*", "ökonomische_absich*", "ökonomische_sich*",
 "ökonomische_ungleich*")))

我将其应用于以下方式制作的我的一个语料库的 dfm。

spiegel_dfm <- spiegel_corpus %>% 
 tokens(remove_punct = TRUE) %>% 
 tokens_compound(pattern = phrase(multiwords)) %>%
 dfm()

然后我尝试通过以下方式计算模型。

require(seededlda)
tmod_slda <- textmodel_seededlda(spiegel_dfm, dictionary = dict, max_iter = 2000, weight = 0.01)

如果需要信息,这是我的会话信息。

R version 4.0.3 (2020-10-10)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS High Sierra 10.13.6

Matrix products: default
BLAS:   /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib

locale:
[1] de_DE.UTF-8/de_DE.UTF-8/de_DE.UTF-8/C/de_DE.UTF-8/de_DE.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] seededlda_0.5.1 quanteda_2.1.2 

loaded via a namespace (and not attached):
[1] Rcpp_1.0.5         rstudioapi_0.13    magrittr_2.0.1     usethis_2.0.0      stopwords_2.1     
[6] tidyselect_1.1.0   munsell_0.5.0      colorspace_2.0-0   lattice_0.20-41    R6_2.5.0          
[11] rlang_0.4.9        fastmatch_1.1-0    dplyr_1.0.2        tools_4.0.3        grid_4.0.3        
[16] data.table_1.13.4  gtable_0.3.0       xfun_0.19          tinytex_0.28       ellipsis_0.3.1    
[21] yaml_2.2.1         RcppParallel_5.0.2 tibble_3.0.4       lifecycle_0.2.0    crayon_1.3.4      
[26] Matrix_1.2-18      purrr_0.3.4        ggplot2_3.3.2      fs_1.5.0           vctrs_0.3.6       
[31] glue_1.4.2         stringi_1.5.3      compiler_4.0.3     pillar_1.4.7       generics_0.1.0    
[36] scales_1.1.1       pkgconfig_2.0.3   

因此,我不确定我是否正确应用了种子 lda,或者更确切地说,是否存在适合突出单个主题的监督方法,以及最终如何每年汇总其结果。

我将非常感谢任何帮助!

4

0 回答 0