Table of Contents

1. Quick Start Guide

  1. Upload File: Upload a CSV, Excel (.xlsx), TXT or PDF file.
  2. Select Column: Choose the column containing your text data.
  3. Configure Preprocessing: Set stopword removal, minimum word length, etc.
  4. Run Analysis: Click the "Start Analysis" button.
  5. View Results: Review TF, TF-IDF, network centrality, topic modeling, and sentiment analysis results.
  6. 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.csvRecommendedUTF-8 encoding recommended
Excel.xlsx, .xlsRecommendedOnly the first sheet is analyzed
Text.txtLimitedEach 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).

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

Input Embedding Transformer Encoder × 12 Hidden States (768-dim)
Token + Segment + Position Multi-Head Self-Attention Contextual Representations
ComponentBERT-baseDescription
Transformer Layers12Self-Attention + Feed-Forward at each layer
Hidden Size768-dimContextual vector dimension per token
Attention Heads12Multi-Head Attention captures diverse context patterns
Parameters110M110 million trainable weights
Pre-training DataBookCorpus + English Wikipedia~3.3 billion words, unsupervised
Training MethodMLM + NSPMasked 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)
ImprovementBERTRoBERTaEffect
Training Data16GB160GB10x larger pre-training improves generalization
Masking StrategyStatic MaskingDynamic MaskingNew mask patterns each epoch for training diversity
NSP TaskIncludedRemovedFocus on MLM by removing unnecessary task
Batch Size2568KLarge batches improve training stability and efficiency
TokenizerWordPiece (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

Input Text BPE Tokenizer RoBERTa Encoder [CLS] Vector Softmax (28)
Pre-trained RoBERTa + GoEmotions Fine-tuning → 28 Emotion Probability Distribution

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.

ComparisonNRC Emotion Lexicon (Lexicon-based)RoBERTa GoEmotions (Deep Learning)
Analysis UnitIndividual word levelSentence/document level
Context UnderstandingNone (word-independent matching)Bidirectional context (Self-Attention)
Emotion Categories8 (basic emotions + polarity)28 (GoEmotions taxonomy)
Negation/IronyLimited (rule-based)Learned from context (high accuracy)
Multilingual100+ languages (translation-based)English only
Computational CostVery fast (O(n) word matching)Relatively slow (GPU recommended)
InterpretabilityHigh (traceable word-emotion mapping)Limited (black-box model)

4.5 Limitations and Considerations

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

ItemDetails
Base ModelRoBERTa-base (Liu et al., 2019)
Training DataGoEmotions -- 58,000 Reddit comments (Demszky et al., 2020)
Emotion Categories28 (Positive 12, Negative 11, Ambiguous 5)
HuggingFace ModelSamLowe/roberta-base-go_emotions
Max Tokens512 tokens (BPE tokenization)

5.2 28 Emotion Taxonomy

The 28 emotions are classified into 3 high-level categories based on the GoEmotions taxonomy:

CategoryCountEmotions
Positive12admiration, amusement, approval, caring, desire, excitement, gratitude, joy, love, optimism, pride, relief
Negative11anger, annoyance, disappointment, disapproval, disgust, embarrassment, fear, grief, nervousness, remorse, sadness
Ambiguous5confusion, curiosity, realization, surprise, neutral

5.3 Analysis Process

  1. Text Input: Upload CSV/Excel file and select the text column for analysis
  2. BPE Tokenization: RoBERTa tokenizer splits text into subword tokens
  3. Contextual Embedding: 12-layer Transformer encoder generates bidirectional context vectors (768-dim)
  4. Emotion Classification: Softmax classifier produces probability distribution over 28 emotions
  5. Category Analysis: Aggregate probabilities by positive/negative/ambiguous categories
  6. Correlation Analysis: Pearson correlation-based 28x28 emotion correlation matrix
  7. Statistics: Mean, standard deviation, median, min/max per emotion
  8. Visualization Report: 7 interactive Plotly.js charts and Excel report generation

5.4 Results Page Structure

SectionContent
Analysis OverviewTotal documents, dominant emotion, average confidence, and summary statistics
Emotion DistributionBar chart, radar chart, and heatmap of 28 emotion probability distributions
Statistics TableSortable descriptive statistics for all 28 emotions (Mean, SD, Median, Min, Max)
Category AnalysisPie charts and detailed emotion ratios by positive/negative/ambiguous categories
Dominant EmotionDonut chart and document count-based dominant emotion frequency analysis
Document-LevelIndividual document emotion results (search, filter, pagination)
Correlation28x28 emotion correlation heatmap and Top 20 correlated emotion pairs
Excel Download6-sheet Excel file (summary, per-document, probability matrix, statistics, correlation, references)

5.5 How to Use

  1. Click "GoEmotions Analysis" from the homepage or navigation bar.
  2. Drag and drop a CSV or Excel file, or click the upload button.
  3. Select the text column and click "Start Analysis".
  4. Once analysis is complete, you will be redirected to the results page.
  5. 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.

MethodDescriptionInterpretation
Pearson CorrelationMeasures linear correlation|r| > 0.3 indicates meaningful correlation
Spearman CorrelationRank-based correlationCan capture non-linear relationships
ANOVA (F-test)Tests emotion differences between rating groupsp < 0.05 indicates significant group differences
Tukey HSDPost-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.

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.

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 KappaAgreement 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.

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

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.

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

AnalysisMin DocumentsAdditional Requirements
Rating-Emotion CorrelationNo limitRating column required
Emotion Clustering10+-
Model-Human Validation (κ/α)No limitSample file with human-coded label columns (separate Validate page)
Emotion EntropyNo limit-
Emotion Transitions20+-
Emotion Predictors30+-

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:

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.

CentralityMeasuresInterpretation
Degree CentralityNumber of direct connectionsActive co-occurrence relationships
Closeness CentralityAverage distance to all nodesInformation diffusion efficiency
Betweenness CentralityPosition on shortest pathsMediator of semantic connections
Eigenvector CentralityConnections to important nodesRelationship with influential nodes
PageRankRecursive importanceReferences 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 RangeCategoryInterpretation
Top 10Core KeywordsCentral concepts of the text collection
Top 11-50Key Related TermsConcepts closely related to core topics
Top 51-200Context TermsBackground 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 RangeInterpretation
≥ 0.8 (Core Hub)
0.5 - 0.8 (Major Connector)
< 0.5 (Peripheral Node)

12.3 Topic Coherence Interpretation

C_v ValueQualityRecommended Action
> 0.5ExcellentProceed with interpretation
0.4 - 0.5GoodInterpretable, needs review
< 0.4Needs ReviewAdjust 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:

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.