Help & Documentation
Comprehensive guide to EmoFEAT features and usage
Table of Contents
- 1. Quick Start Guide
- 2. Supported File Formats
- 3. Preprocessing Pipeline
- 4. BERT & GoEmotions Theory
- 5. RoBERTa GoEmotions Analysis
- 6. Advanced SCIE Analysis
- 7. Emotion Trajectory & Event Analysis
- 8. Measurement Validation & Human Coding
- 9. Reproducibility & Methods Draft
- 10. Compare Groups & Power Diagnostics
- 11. Network Compare (QAP/MRQAP)
- 12. Analysis Features
- 13. Results Interpretation
- 14. YouTube Comments Collector
- 15. Academic Citation
- 16. FAQ
1. Quick Start Guide
- Upload File: Upload a CSV, Excel (.xlsx), TXT or PDF file.
- Select Column: Choose the column containing your text data.
- Configure Preprocessing: Set stopword removal, minimum word length, etc.
- Run Analysis: Click the "Start Analysis" button.
- View Results: Review TF, TF-IDF, network centrality, topic modeling, and sentiment analysis results.
- Download: Download results as an Excel file.
Analysis time varies depending on the number of documents and text length. Typically 1-2 minutes for 500 documents.
2. Supported File Formats
| Format | Extension | Recommendation | Notes |
|---|---|---|---|
| CSV | .csv | Recommended | UTF-8 encoding recommended |
| Excel | .xlsx, .xls | Recommended | Only the first sheet is analyzed |
| Text | .txt | Limited | Each line is treated as a document |
Maximum file size is 50MB. Split large files before uploading.
3. Preprocessing Pipeline
EmoFEAT transforms raw text into analysis-ready form through an 8-step preprocessing pipeline. Token count changes at each step are recorded in the preprocessing report, ensuring research reproducibility.
3.1 Text Cleaning
Removes noise such as URLs, HTML tags, email addresses, special characters, and numbers using regex-based filtering.
3.2 Tokenization
Splits text into meaningful units (tokens).
- Korean: KoNLPy morphological analyzer (Okt or Komoran)
- English: NLTK word_tokenize
3.3 PMI Collocation Detection
Uses Pointwise Mutual Information (PMI) to detect strongly associated word pairs (collocations). Word pairs whose PMI exceeds the configured threshold (default 5.0) are treated as strong collocational associations and combined as compound terms. Note that PMI is an association-strength measure, not a statistical significance test.
3.4 Stopword Removal — a four-tier system
Instead of applying one flat list, EmoFEAT separates stopwords into four tiers by the reason they are removed, and each tier can be switched on or off independently. Different justifications should lead to different decisions depending on the research question. The results page reports what each tier removed, so the choice can be stated precisely in a methods section.
| Tier | Examples | Why it is removed |
|---|---|---|
| T1 Function words + contraction fragments 226 words · ON |
the, of, is, and, don, ’t, ’re |
Distributed evenly across documents, so df(t)≈N and IDF approaches 1. They dominate raw frequency without discriminating between documents. Contraction fragments are tokenizer artifacts with no meaning of their own. (Luhn 1958; Manning et al. 2008) |
| T2 Fillers, interjections discourse markers 116 words · ON |
ah, hey, yes, uh, oh_dear, please, truly |
Inflated in subtitles, transcripts, and comments, yet they mark attitude and turn-taking rather than topic. Turn this tier off for speech-act, conversation-structure, or politeness research — there, this vocabulary is the object of study. (Biber 1988; Schiffrin 1987) |
| T3 Light words 216 words · ON |
thing, way, time, year, day, look, man, word, talk, get, make, take |
Formally content words, but too broad in reference to discriminate. In light-verb constructions the semantic weight sits on the object (take a look), not the verb. Left in, they swallow the entire top-20 frequency list. Emotion vocabulary (love, hate, fear) is deliberately excluded. (Jespersen 1954; Scott 1997) |
| T4 Address terms, names units 99 words · OFF |
comrade, honey, Lee, Kim, oppa, km |
Character names top the frequency list in narrative and dialogue corpora without being topical. Corpus-dependent, so it is off by default. Homograph warning: surnames that collide with English words (park, moon, song, han, oh) are excluded to avoid false removals — add them as custom stopwords if your corpus needs them. (Baker 2006) |
Keep-negation option. The default list places not/never/no in T1, following information-retrieval practice — but this is risky for emotion work. In “I do not like this,” removing not leaves like and flips the polarity. Enabling this option preserves negation. Recommended whenever emotion or stance is being measured. (Pang & Lee 2008)
Doesn't TF-IDF handle this automatically? Only partly. IDF lowers the weight of high-df terms but never zeroes them — when df(t)=N, idf(t) still equals 1. And because each document vector is L2-normalized, function words contributing to the vector length dilute the weights of the genuine topic terms.
3.5 Lemmatization
Extracts base forms (lemmas) using WordNet to unify different morphological forms of the same concept.
Example: running, ran, runs -> run
3.6 Search Keyword Removal
Automatically detects and removes search query keywords used during data collection, improving the validity of TF results.
3.7 Final Filtering
Applies final filtering based on minimum word length, minimum frequency, and other criteria.
3.8 Report Generation
Records token count changes at each step and generates a preprocessing report.
Church, Kenneth Ward, and Patrick Hanks. "Word Association Norms, Mutual Information, and Lexicography." Computational Linguistics 16, no. 1 (1990): 22-29. doi:10.1162/coli.1990.16.1.22
4. BERT & GoEmotions Theory
This section explains the architecture of BERT and RoBERTa (the foundation models for RoBERTa GoEmotions analysis) and the GoEmotions dataset used for fine-tuning.
4.1 BERT (Bidirectional Encoder Representations from Transformers)
BERT (Devlin et al., 2019) is a pre-trained language model developed by Google that uses only the Transformer encoder architecture. Its key innovation is bidirectional context learning. Unlike previous language models that captured context only left-to-right (or right-to-left), BERT uses Masked Language Modeling (MLM) to learn context from all directions simultaneously.
Figure 1. BERT Architecture Overview
| Component | BERT-base | Description |
|---|---|---|
| Transformer Layers | 12 | Self-Attention + Feed-Forward at each layer |
| Hidden Size | 768-dim | Contextual vector dimension per token |
| Attention Heads | 12 | Multi-Head Attention captures diverse context patterns |
| Parameters | 110M | 110 million trainable weights |
| Pre-training Data | BookCorpus + English Wikipedia | ~3.3 billion words, unsupervised |
| Training Method | MLM + NSP | Masked Language Model + Next Sentence Prediction |
Devlin, Jacob, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding." Proceedings of NAACL-HLT (2019): 4171-4186. doi:10.18653/v1/N19-1423
4.2 RoBERTa (Robustly Optimized BERT Approach)
RoBERTa (Liu et al., 2019) is a model optimized by Facebook AI Research through systematic re-examination of BERT's training strategies. While the architecture is identical to BERT, significant performance improvements were achieved through the following training methodology enhancements.
Figure 2. BERT vs RoBERTa Training Strategy Comparison
BERT
- 16GB training data
- Static Masking
- NSP task included
- Batch size 256
RoBERTa
- 160GB training data (10x)
- Dynamic Masking
- NSP task removed
- Batch size 8K (32x)
| Improvement | BERT | RoBERTa | Effect |
|---|---|---|---|
| Training Data | 16GB | 160GB | 10x larger pre-training improves generalization |
| Masking Strategy | Static Masking | Dynamic Masking | New mask patterns each epoch for training diversity |
| NSP Task | Included | Removed | Focus on MLM by removing unnecessary task |
| Batch Size | 256 | 8K | Large batches improve training stability and efficiency |
| Tokenizer | WordPiece (30K) | BPE (50K) | Larger vocabulary improves subword segmentation |
Liu, Yinhan, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, and Veselin Stoyanov. "RoBERTa: A Robustly Optimized BERT Pretraining Approach." arXiv preprint arXiv:1907.11692 (2019). doi:10.48550/arXiv.1907.11692
4.3 RoBERTa GoEmotions & GoEmotions Dataset
The RoBERTa GoEmotions classifier fine-tunes the RoBERTa-base model on Google Research's GoEmotions dataset (Demszky et al., 2020). GoEmotions is a large-scale emotion dataset with 58,009 Reddit comments labeled across 28 emotion categories by 82 annotators.
Figure 3. RoBERTa GoEmotions Emotion Classification Pipeline
The 28 emotion categories in the GoEmotions dataset go beyond Ekman's (1992) six basic emotions, designed to capture fine-grained emotional expressions in modern communication. They consist of 12 positive emotions (admiration, amusement, approval, etc.), 11 negative emotions (anger, annoyance, disappointment, etc.), and 5 ambiguous emotions (confusion, curiosity, surprise, etc.).
Demszky, Dorottya, Dana Moberg, Emily Kang, Peter J. Liu, Slav Petrov, and Jeongwoo Ko. "GoEmotions: A Dataset of Fine-Grained Emotions." Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics (2020): 4040-4054. doi:10.18653/v1/2020.acl-main.372
4.4 Deep Learning vs Lexicon-Based Sentiment Analysis
EmoFEAT provides two sentiment analysis methodologies: lexicon-based analysis using the NRC Emotion Lexicon (Mohammad & Turney, 2013) and deep learning-based analysis using RoBERTa GoEmotions. The characteristics of each are compared below.
| Comparison | NRC Emotion Lexicon (Lexicon-based) | RoBERTa GoEmotions (Deep Learning) |
|---|---|---|
| Analysis Unit | Individual word level | Sentence/document level |
| Context Understanding | None (word-independent matching) | Bidirectional context (Self-Attention) |
| Emotion Categories | 8 (basic emotions + polarity) | 28 (GoEmotions taxonomy) |
| Negation/Irony | Limited (rule-based) | Learned from context (high accuracy) |
| Multilingual | 100+ languages (translation-based) | English only |
| Computational Cost | Very fast (O(n) word matching) | Relatively slow (GPU recommended) |
| Interpretability | High (traceable word-emotion mapping) | Limited (black-box model) |
4.5 Limitations and Considerations
- English-Only Model: The RoBERTa GoEmotions model was trained on English Reddit data, so accuracy may be significantly lower for non-English text.
- Domain Bias: Optimized for informal Reddit expressions; sensitivity may differ for formal texts such as academic papers or news articles.
- Token Length Limit: Maximum 512 BPE tokens can be processed; longer texts will be truncated.
- Multi-label vs Single-label: The GoEmotions dataset is originally a multi-label dataset, but EmoFEAT uses Softmax-based single-label (highest probability emotion) classification.
- Need for Statistical Verification: Emotion classification results alone cannot infer causality. Advanced analyses (correlation, ANOVA, logistic regression) are recommended for statistical validation.
To validate the reliability of RoBERTa GoEmotions classifications, use the Validate page (/en/validate). It compares the model's results against a human-coded sample and reports Cohen's Kappa (κ) and Krippendorff's Alpha (α) agreement statistics.
5. RoBERTa GoEmotions Analysis
RoBERTa GoEmotions analysis uses a RoBERTa model fine-tuned on Google Research's GoEmotions dataset (58,000 Reddit comments), classifying text into 28 fine-grained emotions beyond Ekman's 6 basic emotions.
5.1 Model Overview
| Item | Details |
|---|---|
| Base Model | RoBERTa-base (Liu et al., 2019) |
| Training Data | GoEmotions -- 58,000 Reddit comments (Demszky et al., 2020) |
| Emotion Categories | 28 (Positive 12, Negative 11, Ambiguous 5) |
| HuggingFace Model | SamLowe/roberta-base-go_emotions |
| Max Tokens | 512 tokens (BPE tokenization) |
5.2 28 Emotion Taxonomy
The 28 emotions are classified into 3 high-level categories based on the GoEmotions taxonomy:
| Category | Count | Emotions |
|---|---|---|
| Positive | 12 | admiration, amusement, approval, caring, desire, excitement, gratitude, joy, love, optimism, pride, relief |
| Negative | 11 | anger, annoyance, disappointment, disapproval, disgust, embarrassment, fear, grief, nervousness, remorse, sadness |
| Ambiguous | 5 | confusion, curiosity, realization, surprise, neutral |
5.3 Analysis Process
- Text Input: Upload CSV/Excel file and select the text column for analysis
- BPE Tokenization: RoBERTa tokenizer splits text into subword tokens
- Contextual Embedding: 12-layer Transformer encoder generates bidirectional context vectors (768-dim)
- Emotion Classification: Softmax classifier produces probability distribution over 28 emotions
- Category Analysis: Aggregate probabilities by positive/negative/ambiguous categories
- Correlation Analysis: Pearson correlation-based 28x28 emotion correlation matrix
- Statistics: Mean, standard deviation, median, min/max per emotion
- Visualization Report: 7 interactive Plotly.js charts and Excel report generation
5.4 Results Page Structure
| Section | Content |
|---|---|
| Analysis Overview | Total documents, dominant emotion, average confidence, and summary statistics |
| Emotion Distribution | Bar chart, radar chart, and heatmap of 28 emotion probability distributions |
| Statistics Table | Sortable descriptive statistics for all 28 emotions (Mean, SD, Median, Min, Max) |
| Category Analysis | Pie charts and detailed emotion ratios by positive/negative/ambiguous categories |
| Dominant Emotion | Donut chart and document count-based dominant emotion frequency analysis |
| Document-Level | Individual document emotion results (search, filter, pagination) |
| Correlation | 28x28 emotion correlation heatmap and Top 20 correlated emotion pairs |
| Excel Download | 6-sheet Excel file (summary, per-document, probability matrix, statistics, correlation, references) |
5.5 How to Use
- Click "GoEmotions Analysis" from the homepage or navigation bar.
- Drag and drop a CSV or Excel file, or click the upload button.
- Select the text column and click "Start Analysis".
- Once analysis is complete, you will be redirected to the results page.
- Download chart images using the download buttons, or download the Excel report.
RoBERTa GoEmotions analysis is optimized for English text. Accuracy may be lower for Korean text, so English text data is recommended when possible.
Demszky, Dorottya, Dana Moberg, Emily Kang, Peter J. Liu, Slav Petrov, and Jeongwoo Ko. "GoEmotions: A Dataset of Fine-Grained Emotions." Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics (2020): 4040-4054. doi:10.18653/v1/2020.acl-main.372
6. Advanced SCIE Analysis
After the base RoBERTa GoEmotions analysis is complete, advanced statistical analyses (rating-emotion correlation, clustering, entropy, emotion transitions, predictors, temporal trends) plus a PPMI-based emotion co-occurrence network analysis are performed. Each provides SCIE publication-level statistical validation.
Advanced analyses run automatically on the results page after the base RoBERTa GoEmotions analysis. Some analyses may be skipped if the data does not meet minimum document requirements.
6.1 Rating-Emotion Correlation
When the data includes a rating column, this analysis examines the statistical relationship between ratings and 28 emotion probabilities.
| Method | Description | Interpretation |
|---|---|---|
| Pearson Correlation | Measures linear correlation | |r| > 0.3 indicates meaningful correlation |
| Spearman Correlation | Rank-based correlation | Can capture non-linear relationships |
| ANOVA (F-test) | Tests emotion differences between rating groups | p < 0.05 indicates significant group differences |
| Tukey HSD | Post-hoc test (multiple comparisons) | Identifies which groups differ |
Requirement: Data must include a rating column. This analysis is automatically skipped if no rating column is present.
6.2 Emotion Clustering
Uses K-Means algorithm to classify documents into groups (clusters) with similar emotion patterns based on 28 emotion probability vectors.
- Optimal K Search: Automatically selects optimal K from 2-10 clusters based on Silhouette Score.
- t-SNE Visualization: Reduces high-dimensional (28-dim) emotion vectors to 2D for visual cluster representation.
- Cluster Profiles: Provides representative emotions and document counts for each cluster.
Minimum Documents: At least 10 documents required. Clustering is not performed with fewer than 10 documents.
6.3 Model-Human Validation (Cohen's κ / Krippendorff's α)
On the dedicated Validate page (/en/validate), you can evaluate the reliability and validity of RoBERTa GoEmotions classifications against a human-coded sample.
- Cohen's Kappa (κ): Measures agreement between model classifications and human coder judgments, correcting for chance agreement.
- Krippendorff's Alpha (α): Assesses inter-coder reliability on a nominal scale; applicable to multiple coders and missing data.
- Input Format: Upload a sample file containing the model's analysis results with added human-coded emotion label columns.
For the detailed input format, bootstrap confidence intervals, confusion matrix, and the built-in human coding tool (Annotate), see Section 8: Measurement Validation & Human Coding.
| Cohen's Kappa | Agreement Level |
|---|---|
| 0.81 - 1.00 | (Almost Perfect) |
| 0.61 - 0.80 | (Substantial) |
| 0.41 - 0.60 | (Moderate) |
| 0.21 - 0.40 | (Fair) |
| < 0.20 | (Slight/Poor) |
6.4 Emotion Entropy Analysis
Uses Shannon Entropy to measure how uncertain (diverse) the emotion distribution is for each document.
- High Entropy: Emotions are evenly distributed -- complex or ambiguous text
- Low Entropy: One emotion is dominant -- clear emotional expression
- Mann-Whitney U Test: Tests whether entropy differences between rating groups are statistically significant.
Shannon, Claude E. "A Mathematical Theory of Communication." The Bell System Technical Journal 27, no. 3 (1948): 379-423. doi:10.1002/j.1538-7305.1948.tb01338.x
6.5 Emotion Transition Analysis
Analyzes emotion change patterns by document order (time or index).
- Stacked Area Chart: Visualizes time-series changes in positive/negative/ambiguous emotion ratios.
- Trend Lines: Displays emotion trends using Moving Average.
- Segment Analysis: Divides the data into segments to identify directional emotion changes.
Minimum Documents: At least 20 documents required. Time-series analysis needs sufficient data points for meaningful trends.
6.6 Emotion Predictor Analysis
Uses Binary Logistic Regression to identify key factors that predict dominant emotions.
- Dependent Variable: Dominant emotion presence (positive vs non-positive, or specific emotion vs others)
- Independent Variables: 28 emotion probability values
- Odds Ratio: The change in probability of dominant emotion per unit increase in each emotion probability
- 95% Confidence Interval: Statistical confidence range of the Odds Ratio
Minimum Documents: At least 30 documents required. Sufficient sample size is needed for stable logistic regression estimation.
Hosmer, David W., Stanley Lemeshow, and Rodney X. Sturdivant. Applied Logistic Regression. 3rd ed. Wiley, 2013. ISBN: 978-0-470-58247-3
6.7 Requirements Summary
| Analysis | Min Documents | Additional Requirements |
|---|---|---|
| Rating-Emotion Correlation | No limit | Rating column required |
| Emotion Clustering | 10+ | - |
| Model-Human Validation (κ/α) | No limit | Sample file with human-coded label columns (separate Validate page) |
| Emotion Entropy | No limit | - |
| Emotion Transitions | 20+ | - |
| Emotion Predictors | 30+ | - |
Advanced analysis results are also included in separate sheets (up to 10 additional sheets, including a Reproducibility Manifest sheet) in the Excel report. p-values smaller than 0.0001 are displayed as "< 0.0001".
7. Emotion Trajectory & Event Analysis
If a date column was selected when uploading a GoEmotions analysis, the results page offers emotion trajectory and event analysis. Documents are automatically binned by day, week, or month depending on the time span of the data, and per-emotion time-series trajectories are visualized.
7.1 Interrupted Time Series (ITS)
When you enter an event date (e.g., a policy announcement or incident date), segmented regression estimates the change in emotion level and slope before vs. after the event. Estimation uses WLS weighted by per-bin document counts with Newey-West HAC standard errors (autocorrelation-robust), and per-emotion p-values are Benjamini-Hochberg FDR-corrected for multiple comparisons.
7.2 Changepoint Detection
Even without a known event date, the PELT algorithm (via the ruptures library, when installed) automatically detects statistically meaningful changepoints in the emotion trajectory. When ruptures is not installed, a built-in binary segmentation fallback is used.
Requirement: Only available for tasks where a date column was selected at upload. Without a date column, this section does not appear on the results page.
Newey, Whitney K., and Kenneth D. West. "A Simple, Positive Semi-Definite, Heteroskedasticity and Autocorrelation Consistent Covariance Matrix." Econometrica 55, no. 3 (1987): 703-708. doi:10.2307/1913610
Killick, Rebecca, Paul Fearnhead, and Idris A. Eckley. "Optimal Detection of Changepoints with a Linear Computational Cost." Journal of the American Statistical Association 107, no. 500 (2012): 1590-1598. doi:10.1080/01621459.2012.737745
8. Measurement Validation & Human Coding
Journal reviewers often ask for evidence that automated classifications agree with human judgment. EmoFEAT includes a built-in human coding tool (Annotate) and a model-human agreement validation tool (Validate) that support this workflow end to end.
8.1 Measurement Validation (Validate — /en/validate)
Upload the Document Results export of a GoEmotions analysis with added human coder label column(s) (human_label; a second coder uses human_label_2) to compute:
- Cohen's Kappa (κ): Model-human agreement corrected for chance, reported with a bootstrap 95% confidence interval (B=1,000, seed=42).
- Krippendorff's Alpha (α): Nominal-scale reliability; when two or more coders are present, intercoder α is also computed separately.
- Per-Emotion Confusion Matrix: Visualizes which emotions the model and human coders disagree on.
- Landis & Koch (1977) Bands: κ is automatically interpreted as Slight/Fair/Moderate/Substantial/Almost Perfect (see the table in Section 6.3).
All results can be downloaded as an Excel report that includes the reproducibility manifest.
8.2 Human Coding Tool (Annotate — /en/annotate)
You can build the human-coded validation sample directly inside EmoFEAT. To prevent coder bias, the labeling screen shows text only — the model's emotion scores are hidden (coder blinding). Sampling is seeded random selection (default N=200, seed=42), so a second coder using the same file and seed reproduces the identical sample and labels it as human_label_2.
After labeling, export a CSV containing the human_label column, or hand it off to the Validate page with one click to run the agreement analysis immediately.
Cohen, Jacob. "A Coefficient of Agreement for Nominal Scales." Educational and Psychological Measurement 20, no. 1 (1960): 37-46. doi:10.1177/001316446002000104
Krippendorff, Klaus. Content Analysis: An Introduction to Its Methodology. 2nd ed. Sage, 2004.
Landis, J. Richard, and Gary G. Koch. "The Measurement of Observer Agreement for Categorical Data." Biometrics 33, no. 1 (1977): 159-174. doi:10.2307/2529310
9. Reproducibility & Methods Draft
9.1 Reproducibility Manifest
Every analysis task (GoEmotions, Compare Groups, Validation, NLP) automatically records a JSON manifest of its run configuration and environment: EmoFEAT version, model name, thresholds, bootstrap iterations (B), random seed, preprocessing options, key package versions, platform, and git commit hash.
Download the JSON via the button on the results page; it is also embedded in the Excel report as a "Reproducibility Manifest" sheet. When reviewers ask "which model, which version, which settings produced these numbers," the manifest answers exactly — enabling precise reproduction and verification of the computational environment and settings.
9.2 Methods Draft Generator
The GoEmotions and NLP results pages auto-assemble a draft Methods section for your manuscript. The draft describes only the analyses that were actually run (omitting sentences for analyses that were not), accurately frames emotion scores as model confidence scores, and includes a placeholder paragraph for human-coder validation results plus software version details.
Both English and Korean drafts are provided, with a copy button for pasting directly into your manuscript. The draft is a starting point — always review and adapt it to your research context.
10. Compare Groups & Power Diagnostics
The Compare Groups page (/en/compare) statistically compares the 28 emotion intensities between GoEmotions result files (or by a grouping column). It reports Hedges' g effect sizes (small-sample-adjusted Cohen's d), bootstrap 95% confidence intervals of mean differences, and FDR-corrected p-values.
10.1 Power & Sample-Size Diagnostics
The Compare results page includes a design-sensitivity card for the achieved sample sizes: the minimum detectable effect size (MDES) at 80% and 90% power, plus power curves for conventional effect sizes (g = 0.1/0.2/0.35/0.5/0.8).
These diagnostics are not post-hoc "observed power" of significant results — observed power is well known to be uninformative (Hoenig & Heisey, 2001). Instead, they are framed as design sensitivity ("what effect sizes could this sample detect?"), which can be used directly in reviewer responses and limitations sections.
Hoenig, John M., and Dennis M. Heisey. "The Abuse of Power: The Pervasive Fallacy of Power Calculations for Data Analysis." The American Statistician 55, no. 1 (2001): 19-24. doi:10.1198/000313001300339897
11. Network Compare (QAP/MRQAP)
The Network Compare page (/en/netcompare) compares discourse network structures across corpora — testing similarity in structure (what co-occurs with what), not distribution (how much of each word or emotion appears). It implements the four-stage protocol of Suh (2026, Systems).
11.1 How to use
① Upload 2–5 corpora (CSV/XLSX/TXT/PDF, ≥30 documents each — 300+ recommended). The first is the baseline (Y); the others are predictors (X). A research-model diagram draws itself as you configure. ② Parameter defaults match the paper's design (top-K, top-L, permutations). ③ One run produces QAP correlations → Cohen's q → MRQAP (with 2+ predictors) → jackknife, node bootstrap and residual analysis.
11.2 Reading the results
QAP r: structural similarity under node-permutation testing. With thousands of dyads p-values become trivially small, so the magnitude of change between alignments is judged with Cohen's q (|q| < 0.1 negligible / 0.1–0.3 small / 0.3–0.5 medium / ≥ 0.5 large; Cohen, 1988). MRQAP β is each predictor's unique contribution after removing overlap — a negative β may be a suppression effect rather than opposition; check the jackknife table first. Arrows in the model diagram denote predictive association, not causation.
11.3 Outputs
Research-model path diagram, QAP heatmap, bootstrap forest plot and pruning-sensitivity chart (300 DPI PNG/SVG); an EN/KO Methods draft describing only the analyses actually run (tokenizer, permutations and seeds recorded); and a multi-sheet Excel report with the reproducibility manifest. Korean corpora are analyzed directly with Kiwi (kiwipiepy) morphological analysis — no translation involved.
12. Analysis Features
11.1 TF (Term Frequency)
Calculates the total number of times a word appears in the entire corpus. High-frequency words may represent central topics of the text collection.
11.2 TF-IDF (Term Frequency-Inverse Document Frequency)
Multiplies term frequency (TF) by inverse document frequency (IDF) to reduce the weight of common words across all documents and increase the importance of words that appear frequently in specific documents.
11.3 Co-occurrence Matrix
Represents the frequency of word pairs that appear together within the same document (or window) as a matrix. This serves as the foundation for semantic network analysis.
11.4 Network Centrality
Measures the structural importance of each word in the co-occurrence network.
| Centrality | Measures | Interpretation |
|---|---|---|
| Degree Centrality | Number of direct connections | Active co-occurrence relationships |
| Closeness Centrality | Average distance to all nodes | Information diffusion efficiency |
| Betweenness Centrality | Position on shortest paths | Mediator of semantic connections |
| Eigenvector Centrality | Connections to important nodes | Relationship with influential nodes |
| PageRank | Recursive importance | References from important nodes |
11.5 Semantic Network Communities (Louvain)
The Louvain algorithm (Blondel et al., 2008) detects word communities (semantic clusters) in the co-occurrence network and reports the modularity (Q) score. This is the standard community-detection counterpart to the CONCOR clustering widely used in Korean media/communication research. Results are also included in the "Word Communities" Excel sheet.
11.6 Topic Modeling (LDA)
Uses Latent Dirichlet Allocation (LDA) to automatically extract latent topics from a document collection. You can set the number of topics (k) manually, or enable the auto-optimize option to scan candidate k values by c_v coherence, automatically select the best k, and display a per-k coherence scan chart. An interactive pyLDAvis visualization (when installed) lets you explore inter-topic distances and top terms per topic.
11.7 Sentiment Analysis (NRC)
Classifies text emotions using the 8 Plutchik emotion categories of the NRC Emotion Lexicon (Mohammad & Turney, 2013) — Joy, Sadness, Anger, Fear, Disgust, Surprise, Trust, and Anticipation — plus positive/negative polarity. By default a built-in NRC-style keyword lexicon (~1,400 entries) is used; the full NRC Emotion Lexicon is used automatically when installed at modules/data/NRC-Emotion-Lexicon.txt.
11.8 Topic × Emotion Cross Profile
Computes a per-topic emotion profile showing which emotions each topic is associated with. If the uploaded file contains the 28 GoEmotions emotion columns (i.e., an EmoFEAT GoEmotions results export), a topic-proportion (θ)-weighted GoEmotions 28-emotion profile is computed; otherwise the analysis falls back to the NRC 8-emotion lexicon. Results are included in the "Topic-Emotion Profile" Excel sheet.
11.9 Topic Trends Over Time (Date Column)
When a date column is selected in the analysis options, per-topic share over time (topic trends) is visualized. Results are included in the "Topic Trends" Excel sheet.
11.10 Mixed-Language Corpora & Korean Tokenization
For corpora mixing Korean and English, the language of each document is detected individually and routed to its own language pipeline, so minority-language documents are preserved rather than dropped. For Korean, single-character nouns (e.g., "물", "돈", "집") are preserved: unless you explicitly set a minimum word length, the Korean default is automatically 1 (English default: 2).
Spärck Jones, Karen. "A Statistical Interpretation of Term Specificity and Its Application in Retrieval." Journal of Documentation 28, no. 1 (1972): 11-21. doi:10.1108/eb026526
Freeman, Linton C. "Centrality in Social Networks: Conceptual Clarification." Social Networks 1, no. 3 (1978): 215-239. doi:10.1016/0378-8733(78)90021-7
Blei, David M., Andrew Y. Ng, and Michael I. Jordan. "Latent Dirichlet Allocation." Journal of Machine Learning Research 3 (2003): 993-1022.
Blondel, Vincent D., Jean-Loup Guillaume, Renaud Lambiotte, and Etienne Lefebvre. "Fast Unfolding of Communities in Large Networks." Journal of Statistical Mechanics: Theory and Experiment 2008, no. 10 (2008): P10008. doi:10.1088/1742-5468/2008/10/P10008
Mohammad, Saif M., and Peter D. Turney. "Crowdsourcing a Word-Emotion Association Lexicon." Computational Intelligence 29, no. 3 (2013): 436-465. doi:10.1111/j.1467-8640.2012.00460.x
Plutchik, Robert. "A General Psychoevolutionary Theory of Emotion." Theories of Emotion (1980): 3-33.
Opsahl, Tore, Filip Agneessens, and John Skvoretz. "Node Centrality in Weighted Networks: Generalizing Degree and Shortest Paths." Social Networks 32, no. 3 (2010): 245-251. doi:10.1016/j.socnet.2010.03.006
13. Results Interpretation
12.1 TF/TF-IDF Interpretation
| Rank Range | Category | Interpretation |
|---|---|---|
| Top 10 | Core Keywords | Central concepts of the text collection |
| Top 11-50 | Key Related Terms | Concepts closely related to core topics |
| Top 51-200 | Context Terms | Background and detailed context |
12.2 Centrality Interpretation
The bands below apply to Degree Centrality only (normalized to 0-1). Compare Closeness, Betweenness, and PageRank by rank rather than absolute value. Shortest-path metrics (closeness, betweenness) are computed on distance = 1 / co-occurrence count (Opsahl et al., 2010).
| Degree Centrality Range | Interpretation |
|---|---|
| ≥ 0.8 | (Core Hub) |
| 0.5 - 0.8 | (Major Connector) |
| < 0.5 | (Peripheral Node) |
12.3 Topic Coherence Interpretation
| C_v Value | Quality | Recommended Action |
|---|---|---|
| > 0.5 | Excellent | Proceed with interpretation |
| 0.4 - 0.5 | Good | Interpretable, needs review |
| < 0.4 | Needs Review | Adjust number of topics |
14. YouTube Comments Collector
The Comments Collector allows you to gather YouTube video comments at scale for use in GoEmotions emotion analysis or NLP text analysis. Two collection engines are available depending on your dataset size.
Overview
Simply enter a YouTube video URL, choose your collection engine and options, and export the results to CSV, Excel, or PDF. Collected data can be directly used as input for GoEmotions or NLP Text Analysis.
How to Use (Step-by-Step)
Step 1. Enter YouTube URL
Paste any valid YouTube video URL or video ID into the input field. Click "Fetch Video Info" to preview the video title, total comment count, and view count before starting collection.
Step 2. Select Collection Engine
• YouTube Data API v3 — Recommended for datasets under 10,000 comments. Fast, stable, and uses the official Google API.
• yt-dlp Engine — For datasets over 10,000 comments. Slower but can access the full comment dataset without API limits.
Step 3. Configure Options
• Max Comments: Set the maximum number of comments to collect. Leave blank to collect all available comments.
• Language Filter: Filter by language (All / English only / Korean only).
• Include Replies: Toggle to include or exclude reply comments.
• Sort Order: Collect by Relevance (most liked first) or Time (newest first).
Step 4. Start Collection
Click "Start Collection" and monitor progress in the log window. You can stop collection at any time with the "Stop Collection" button. Partial results collected before stopping can still be downloaded.
Step 5. Download Results
Choose your export format:
• CSV (.csv) — Recommended for Python/R analysis and data archiving
• Excel (.xlsx) — For manual inspection and filtering
• PDF (.pdf) — Summary report with collection metadata
One-Stop Analysis Pipeline (Collect → Clean → GoEmotions)
From the analysis card on the completion screen, you can hand collected comments directly to GoEmotions emotion analysis — no file download/re-upload needed. An optional preprocessing step cleans the comments first:
- Deduplication: Removes exact duplicates and normalized near-duplicates (ignoring whitespace/punctuation/case)
- Bot/Spam Filter: Heuristics for URL+promotional keywords, phone numbers, messenger-ID solicitation, and repeated identical text from the same author (3+ times)
- Emoji Cleanup: Strips emoji and collapses whitespace (emoji-only comments are filtered out)
- Reply Exclusion: Option to exclude short, context-dependent replies (is_reply)
Counts removed at each step are shown in a preprocessing report you can reuse verbatim when describing data cleaning in a paper. If the cleaned sample is Korean-dominant (roughly 30%+ Korean documents), a warning is shown — the GoEmotions model is optimized for English.
Known Limitations
YouTube Data API v3: Maximum ~10,000 comments per video (Google policy). This is a platform restriction, not a software limitation.
yt-dlp Engine: Collection of 100,000+ comments may take 1–3 hours. Keep the browser tab open during collection. The server will continue collecting even if the progress display appears frozen.
Reply comments (is_reply: true) contain short, context-dependent text (e.g., "same", "lol") and may reduce analysis quality. For emotion analysis, filtering to top-level comments only is recommended.
For Academic Research
"YouTube comment data were collected from publicly accessible videos using automated collection tools (EmoFEAT v3.7, Suh, 2026). No personally identifiable information beyond publicly displayed usernames was retained. Data collection complied with YouTube's publicly accessible data research conventions."
15. Academic Citation
When using EmoFEAT in your research, please cite as follows:
Software Citation (APA 7th)
Suh, J. (2026). EmoFEAT (Version 3.7) [Computer software]. https://textlab911.gachon.ac.kr
Software Citation (Chicago Style)
Suh, Jungho. EmoFEAT. Version 3.7. 2026. https://textlab911.gachon.ac.kr.
Methodology Description Example
Text preprocessing and analysis were performed using EmoFEAT (Suh, 2026). The preprocessing consisted of text cleaning, tokenization, PMI-based collocation detection (Church & Hanks, 1990), stopword removal, lemmatization, search keyword removal, and final filtering. Token changes at each step were documented through the preprocessing report. TF-IDF followed the method by Spärck Jones (1972) (scikit-learn smoothed IDF with L2 normalization per document, averaged across documents). Network centrality was based on Freeman's (1978) definitions, with closeness and betweenness computed on a weighted network using inverse co-occurrence frequency as distance (distance = 1 / co-occurrence count; Opsahl, Agneessens, & Skvoretz, 2010).
16. FAQ
Q: How do I use the results in UCINET/Netdraw?
A: Import the "Co-occurrence Matrix" sheet from the Excel results file into UCINET. The format is compatible with DL format.
Q: Korean analysis is not working.
A: Korean is handled differently per feature. ① NLP Text Analysis uses KoNLPy (Okt/Komoran) morphological analysis, which requires a Java runtime (KoNLPy documentation) — without Java it falls back to a built-in basic extractor, so analysis still runs but with lower morphological quality. ② Network Compare (QAP) uses Kiwi (kiwipiepy) and needs no Java — if it is missing you get an explicit error, resolved with pip install kiwipiepy. ③ GoEmotions emotion analysis translates Korean documents locally (opus-mt-ko-en) before analysis — make sure the "Translate Korean" option is enabled.
Q: How do I determine the number of topics?
A: The number of topics (k) is user-configurable in the analysis options (2-20, default 5). Alternatively, enable the auto-optimize option to scan candidate k values by c_v coherence and select the best k automatically, with a per-k coherence chart. When setting k manually, start with the square root of the document count or 5-10 topics, then adjust based on the c_v Coherence Score.
Q: The server freezes during analysis.
A: This may be due to insufficient memory. Try reducing the number of documents or increasing server memory.
Q: What is the difference between RoBERTa GoEmotions and NRC sentiment analysis?
A: NRC sentiment analysis uses a lexicon-based approach to classify the 8 Plutchik emotion categories of the NRC Emotion Lexicon (Mohammad & Turney) plus positive/negative polarity, while RoBERTa GoEmotions uses deep learning (Transformer) to classify 28 fine-grained emotions. RoBERTa GoEmotions is more sophisticated but optimized for English text.
Q: How long does RoBERTa GoEmotions analysis take?
A: On CPU (without GPU), approximately 0.5-1 second per document. For 1,000 documents, expect about 8-15 minutes. GPU significantly reduces processing time.
Q: Can I analyze Korean text with RoBERTa GoEmotions?
A: The model was trained on English data and is optimized for English text. Korean text can be input but accuracy may be lower. English text is recommended when possible.