Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Language features

Low-level lexical & word-level features

Per-word lexical/psycholinguistic annotation is a mature, mostly CPU-friendly pipeline problem rather than a deep-learning frontier. The backbone is a fast tokenizer/POS/NER/dependency engine (spaCy) that segments the transcript and tags each word, followed by table lookups against well-established norm databases (SUBTLEX/wordfreq for frequency; Brysbaert for concreteness; Kuperman for AoA; Warriner/NRC-VAD for valence/arousal/dominance; NRC-EmoLex/LIWC for affect categories). The one genuinely model-dependent feature is word-level surprisal/entropy, computed from an incremental LLM (GPT-2 through larger autoregressive models) via the minicons or surprisal packages. For time-alignment, all of these are per-token features that inherit timestamps from forced alignment of the transcript to the audio (e.g. WhisperX/Montreal Forced Aligner) — that alignment step is upstream and out of scope here but is the mechanism that turns per-word features into a per-second movie timeline. The main design decisions for a small lab are: (1) which norm databases to license/merge, (2) how to handle out-of-vocabulary words and lemmatization for lookups, and (3) which LLM to use for surprisal given the size/fit tradeoff.

ToolMeasuresPer-timepoint outputModalityGranularityLocalRatingRec
spaCy (3.7+, en_core_web_trf / en_core_web_lg)Tokenization, lemmatization, part-of-speech (coarse UPOS + fine PTB tags), morphological features, dependency parse, named entities, and the anchor for all downstream per-word lookupsPer token: lemma, UPOS tag (one of ~17), fine-grained POS tag, dependency relation+head, is_stop/is_punct flags, NER label (PERSON/ORG/GPE/DATE/etc.) with BILUO span; person/pronoun reference derivable from PronType + PERSON entitiestranscriptper-word (per token)yes-cpubest-in-classinclude
wordfreq (Speer 2022, Python) / SUBTLEX-US normsWord frequency / lexical familiarity, the single most predictive low-level lexical variable for reading time and neural responsePer word: Zipf frequency (log10 per-billion scale, ~1-7), raw frequency, derivable log-frequency; SUBTLEX-US adds Lg10WF, contextual diversity (Lg10CD), %knowntranscriptper-wordyes-cpubest-in-classinclude
Brysbaert Concreteness Norms (40,000 words)Concreteness (and serves as proxy for imageability) of each word’s referentPer word: concreteness mean (1=abstract to 5=concrete), SD, percent-known; covers 37,058 English lemmas + 2,896 two-word expressionstranscriptper-wordyes-cpubest-in-classinclude
Kuperman Age-of-Acquisition Norms (30,000 words)Estimated age at which a word is typically learned (developmental/lexical accessibility)Per word: AoA rating in years (mean), SD, percent-known; ~30,121 English wordstranscriptper-wordyes-cpubest-in-classinclude
Warriner VAD Norms (13,915 lemmas) + NRC-VAD lexicon (20,000 words)Continuous affective dimensions of word meaning: valence (pleasantness), arousal (intensity), dominance (control)Per word: valence, arousal, dominance each on ~1-9 scale (Warriner, with SDs) or 0-1 (NRC-VAD); supersedes the small 1,034-word ANEW settranscriptper-wordyes-cpubest-in-classinclude
NRC Emotion Lexicon (EmoLex, ~14,000 words)Discrete (Plutchik) emotion category membership per word — categorical affect beyond the VAD continuumPer word: 8 binary emotion associations (anger, anticipation, disgust, fear, joy, sadness, surprise, trust) + positive/negative sentiment flags; can be summed into per-second emotion-density signalstranscriptper-wordyes-cpustronginclude
LIWC-22Dictionary-based psychological and linguistic category membership — pronouns/person reference, affect, cognitive/social process words, function-word stylePer word (and aggregable per window): membership in up to 118 categories incl. 1st/2nd/3rd-person pronouns, positive/negative emotion, cognitive-process, social, certainty/tentativeness; summary scores (Analytic, Clout, Authentic, Tone) at the segment leveltranscriptper-word (category hits) / per-segment (summary scores)yes-cpustrongalternative
minicons (IncrementalLMScorer) — GPT-2 / Pythia / GPT-Neo surprisalWord-level surprisal and entropy: how unexpected each word is given its left context, the core information-theoretic predictor of reading time and N400/neural responsePer token: surprisal = -log2 P(word | left context) in bits; next-word entropy; per-word log-probability; aggregates subword pieces to whole-word surprisaltranscriptper-wordyes-gpubest-in-classinclude
surprisal (aalok-sathe, Python)Same as minicons — word/token surprisal — via a unified interface across neural, n-gram (KenLM), and black-box API modelsPer token/word: surprisal in bits, log-probabilities; convenient .word_level aggregation and built-in plotting; can target OpenAI/Petals/HF backendstranscriptper-wordyes-gpustrongalternative
GLiNER (urchade/gliner, 2024)Zero-shot / open-type named entity recognition when you need entity types beyond spaCy’s fixed ontology (e.g. character names, fictional places, custom referents in narratives)Per span: entity label (user-defined types) + confidence score; maps to per-word entity flags (is_named_entity, entity_type, person-reference)transcriptper-word (span-derived)yes-gpustronginclude-if-resources
NLTKTokenization, POS tagging, stemming, basic lexical utilities (legacy)Per token: Penn-Treebank POS tag, stem/lemma (WordNet), basic chunk tagstranscriptper-wordyes-cpulegacy/supersededdrop

Recommended (best-in-class): spaCy (en_core_web_trf/lg) as the tokenizer/POS/NER/dependency backbone; wordfreq + SUBTLEX-US for frequency; Brysbaert concreteness + Kuperman AoA + Warriner/NRC-VAD norm joins for psycholinguistic per-word features; NRC EmoLex for discrete emotion channels; minicons (or surprisal) with GPT-2-medium/Pythia for word surprisal & entropy

Likely redundant:

  • NLTK — superseded by spaCy for tokenization/POS/NER (keep only for WordNet synset access)
  • surprisal package — direct overlap with minicons; pick one surprisal library
  • ANEW (1,034 words) — superseded by Warriner VAD (13,915) and NRC-VAD (20,000)
  • MRC Psycholinguistic Database — legacy imageability/concreteness, superseded by Brysbaert and Glasgow norms
  • LIWC-22 affect categories — most per-word affect content is reproducible with free NRC EmoLex + Warriner VAD + spaCy POS; LIWC is justified mainly for its validated pronoun/person-reference and function-word category scheme
  • Glasgow Norms — overlaps Brysbaert/Kuperman/Warriner on the same dimensions at smaller coverage; useful only as a single-source merge or for its imageability/familiarity/semantic-size/gender scales
  • VADER — sentence/social-media-tuned sentiment, redundant with Warriner+NRC for per-word valence

Open questions:

  • Time-alignment is upstream: per-word features are only as good as the forced alignment (WhisperX / Montreal Forced Aligner) that assigns each token a start/end timestamp — confirm which aligner the pipeline uses before binning to per-second.
  • Lemmatization vs surface-form lookup: norm databases key on lemmas/base forms while surprisal and frequency can be surface-form; need a consistent OOV and morphology strategy (e.g. fall back lemma->surface->subword).
  • Whether to merge Warriner and NRC-VAD (and with what priority) for valence/arousal/dominance, vs picking one to avoid double-counting correlated features.
  • Choice of surprisal LM: smaller GPT-2/Pythia models often fit human reading-time/neural data better than the largest LLMs — decide whether the goal is best psycholinguistic fit (small model) or best raw language modeling (large model).
  • Coverage/OOV handling for proper nouns and disfluencies in spoken-narrative transcripts, which are common in movies/audio stories but absent from norm databases.
  • LLM-generated norm estimates (2024-2026 work) could fill OOV gaps for concreteness/valence/AoA, but require validation/fine-tuning against the human tables before use.
References
  • spaCy (3.7+, en_core_web_trf / en_core_web_lg) — spacy.io; github.com/explosion/spaCy
  • wordfreq (Speer 2022, Python) / SUBTLEX-US norms — github.com/rspeer/wordfreq; Brysbaert & New 2009 SUBTLEX-US
  • Brysbaert Concreteness Norms (40,000 words) — Brysbaert, Warriner & Kuperman 2014, Behavior Research Methods
  • Kuperman Age-of-Acquisition Norms (30,000 words) — Kuperman, Stadthagen-Gonzalez & Brysbaert 2012, Behavior Research Methods
  • Warriner VAD Norms (13,915 lemmas) + NRC-VAD lexicon (20,000 words) — Warriner, Kuperman & Brysbaert 2013; Mohammad 2018 NRC-VAD
  • NRC Emotion Lexicon (EmoLex, ~14,000 words) — Mohammad & Turney 2013, NRC EmoLex
  • LIWC-22 — Boyd, Ashokkumar, Seraj & Pennebaker 2022, LIWC-22
  • minicons (IncrementalLMScorer) — GPT-2 / Pythia / GPT-Neo surprisal — Misra 2022 (arXiv:2203.13112); github.com/kanishkamisra/minicons
  • surprisal (aalok-sathe, Python) — github.com/aalok-sathe/surprisal
  • GLiNER (urchade/gliner, 2024) — Zaratiana et al. 2024 (arXiv:2311.08526); github.com/urchade/GLiNER
  • NLTK — nltk.org

Syntactic & grammatical structure

Sentence/utterance-level syntactic annotation for movie/audio narratives rests on a mature stack: a few NLP pipelines (spaCy, Stanza, Trankit) emit dependency parses, POS/morphology (tense/aspect/mood as UD feats), and lemmas per token; dedicated constituency parsers (benepar, supar, Stanza/CoreNLP conparse) yield phrase-structure trees from which complexity metrics (tree depth, Yngve/Frazier scores, L2SCA clause/T-unit ratios) are derived; coreference (Maverick, fastcoref, Stanza-coref) links mentions across the timeline; and lightweight libraries (textstat, readability) plus DA classifiers handle readability and dialogue acts. All core tools are open-source and CPU-runnable; transformer variants want a modest GPU. The main workflow is: parse transcript utterances time-aligned to the movie/audio timeline (via forced alignment elsewhere), then compute per-utterance/per-second syntactic features. Most complexity, readability, and Yngve/Frazier metrics are derived post-hoc from parser output rather than being separate models.

ToolMeasuresPer-timepoint outputModalityGranularityLocalRatingRec
spaCy 3.8 (en_core_web_trf / en_core_web_lg)Full token-level syntactic pipeline: dependency parse, POS/tag, morphology, lemma, sentence segmentation, noun chunksPer-token: dependency label (UD/CLEAR), head index, UPOS+fine POS tag, morphological feats (Tense, Aspect, Mood, Number, Person, VerbForm), lemma; per-span: noun chunks; sentence boundaries. trf model LAS ~87.9, UAS ~89.6 on OntoNotes (CLEAR scheme).transcriptper-utterance (parses sentences; tokens map to timeline)yes-cpubest-in-classinclude
Stanza 1.10 (Stanford NLP, UD pipeline)Neural UD pipeline: tokenization, MWT, POS/UPOS+XPOS, lemma, morphological features, biaffine dependency parse; plus optional constituency parser and neural coreferencePer-token: UD dependency relation + head, UPOS/XPOS, UFeats (Tense/Aspect/Mood/Voice/VerbForm/Person/Number etc.), lemma; constituency tree (PTB-style); coref clusters. True Universal Dependencies labels (cleaner for cross-tool complexity metrics than spaCy’s CLEAR).transcriptper-utteranceyes-gpubest-in-classinclude
benepar (Berkeley Neural Parser, self-attentive-parser)Constituency (phrase-structure) parsing with a self-attentive encoder; basis for tree-depth, Yngve, Frazier, and clause-based complexity metricsPer-sentence PTB-style constituency tree (NP/VP/S/SBAR labels, nesting depth) integrable as a spaCy component; ~95.4-96.3 F1 on revised WSJ. From the tree you derive: max/mean tree depth, # clauses, # SBAR, phrase-type counts, Yngve/Frazier scores.transcriptper-utteranceyes-gpubest-in-classinclude
supar (yzhangcs/parser)State-of-the-art biaffine/CRF dependency and constituency parsing (and semantic dependency); research-grade trees with explicit scoring algorithmsPer-token dependency arcs+labels (Biaffine, CRF, CRF2o); per-sentence constituency CRF trees; semantic dependency graphs. Exposes MST/Eisner/CKY/TreeCRF; useful when you want labeled tree probabilities/marginals for complexity weighting.transcriptper-utteranceyes-gpustrongalternative
Trankit 1.xLight multilingual transformer (XLM-R + adapters) UD pipeline: tokenization, sentence seg, POS, morphology, lemma, dependency parsePer-token UD dependency relation + head, UPOS/XPOS, morphological UFeats, lemma; sentence boundaries. Reported +5 LAS / +4 sent-seg over Stanza on UD v2.5 in many languages; strongest sentence segmentation, which matters for utterance alignment.transcriptper-utteranceyes-gpustrongalternative
Maverick (coreference resolution)Coreference resolution: links mentions (pronouns, names, NPs) into entity clusters across the narrative for tracking referents over the timelineMention spans grouped into coreference clusters with cluster IDs; resolves who/what each pronoun refers to. SOTA on CoNLL-2012 (OntoNotes) with ~500M params, ~170x faster inference and far less memory than 13B generative coref models.transcriptper-utterance (clusters span document/scene)yes-gpubest-in-classinclude
fastcoref / F-coref (LingMess)Fast, easy English coreference resolution; LingMess (accurate) and F-coref (fast) modesCoreference clusters of mention spans per document. LingMess near-SOTA accuracy; F-coref ~25s for 2.8K OntoNotes docs on a V100 (vs 6-12 min for older systems) with modest accuracy drop.transcriptper-utterance (document-level clusters)yes-gpustrongalternative
L2 Syntactic Complexity Analyzer (L2SCA) + TregexSyntactic complexity indices derived from constituency parses: clause, T-unit, coordination, and phrasal complexity14 indices per text incl. mean length of clause/T-unit/sentence, clauses per T-unit, dependent clauses per clause, complex-nominals per clause, coordinate phrases per T-unit, T-units per sentence. Standard, validated set for syntactic complexity scoring.transcriptper-utterance / per-window (aggregate over span)yes-cpustronginclude
textstat (Python)Readability and surface complexity indices as a coarse proxy for grammatical/processing difficultyPer-text scalars: Flesch Reading Ease, Flesch-Kincaid Grade, Gunning Fog, SMOG, Coleman-Liau, ARI, Dale-Chall, plus syllable/word/sentence counts and lexicon counts. Cheap per-second feature when computed over sliding transcript windows.transcriptper-window / per-utteranceyes-cpuusableinclude-if-resources
Dialogue act classifier (DialogTag / DistilBERT-SwDA / silicone-finetuned)Dialogue act / speech act of each utterance (function in conversation), relevant for dialogue-heavy film/audioPer-utterance categorical DA label (SwDA 42-tag or DAMSL set: statement, yes-no-question, wh-question, backchannel, agreement, opinion, etc.) with class probabilities. Maps directly onto time-aligned dialogue turns.transcriptper-utteranceyes-cpuusableinclude-if-resources

Recommended (best-in-class): spaCy 3.8 (en_core_web_trf) for dependency/POS/morphology; Stanza 1.10 for UD-scheme parses + built-in constituency + coref in one tool; benepar for constituency trees feeding complexity metrics; Maverick for coreference resolution; L2SCA (+ Yngve/Frazier from trees) as the derived syntactic-complexity layer

Likely redundant:

  • Trankit — superseded by spaCy/Stanza for English; keep only for multilingual or superior sentence-segmentation needs
  • supar — overlaps benepar/Stanza; use only when you need joint dep+constituency or CRF marginals
  • fastcoref/F-coref — superseded by Maverick on accuracy+efficiency; keep for high-throughput batch coref
  • textstat — overlaps py-readability-metrics; surface-only, redundant with L2SCA’s deeper syntactic complexity
  • Stanford CoreNLP constituency/coref — largely superseded by Stanza’s neural pipeline and Maverick
References
  • spaCy 3.8 (en_core_web_trf / en_core_web_lg) — spacy.io; github.com/explosion/spaCy; en_core_web_trf
  • Stanza 1.10 (Stanford NLP, UD pipeline) — stanfordnlp.github.io/stanza; Qi et al. 2020
  • benepar (Berkeley Neural Parser, self-attentive-parser) — github.com/nikitakit/self-attentive-parser; Kitaev & Klein 2018/2019
  • supar (yzhangcs/parser) — github.com/yzhangcs/parser; Zhang et al. ACL/IJCAI 2020
  • Trankit 1.x — github.com/nlp-uoregon/trankit; Nguyen et al. EACL 2021
  • Maverick (coreference resolution) — github.com/SapienzaNLP/maverick-coref; Martinelli et al. ACL 2024; arXiv:2407.21489
  • fastcoref / F-coref (LingMess) — github.com/shon-otmazgin/fastcoref; Otmazgin et al. AACL 2022; arXiv:2209.04280
  • L2 Syntactic Complexity Analyzer (L2SCA) + Tregex — Lu 2010; personal.psu.edu/xxl13 (L2SCA); en.wikipedia.org/wiki/L2_Syntactic_Complexity_Analyzer
  • textstat (Python) — github.com/textstat/textstat
  • Dialogue act classifier (DialogTag / DistilBERT-SwDA / silicone-finetuned) — github.com/bhavitvyas/DialogTag; SwDA/SILICONE benchmark; Raheja & Tetreault N19-1373

High-level semantics, discourse & narrative

This subclass covers meaning at the sentence/passage/scene level: dense semantic embeddings, topic structure, semantic coherence/similarity over time, discourse relations, and narrative structure (arcs, turning points, summaries, LLM-derived tags). For a movie/audio-story timeline the practical pipeline is: align a transcript (with word/utterance timestamps from ASR), window it into rolling segments (e.g. per-sentence, per-utterance, or sliding N-second windows), then emit per-segment features. The dominant, most flexible feature source in 2024-2026 is dense passage embeddings from instruction-tuned encoders (Qwen3-Embedding, E5/multilingual-e5, GTE, BGE, plus API options like OpenAI/Voyage/Gemini), from which you derive coherence (cosine similarity between adjacent windows), drift, and topic clusters. BERTopic gives interpretable topics-over-time. Instruction-tuned LLMs (Llama-3, Qwen2.5, GPT-4o-class) used as zero/few-shot feature extractors now cover the harder, more abstract signals — turning points, discourse relations, event/scene segmentation, narrative tags, and structured summaries — that no specialized supervised model does robustly. Note: in this neuroimaging context, the LAST-token/last-layer hidden states of autoregressive LLMs (GPT-2 through Llama-3) are themselves a primary per-word/per-TR feature and the current standard for naturalistic language-comprehension encoding models.

ToolMeasuresPer-timepoint outputModalityGranularityLocalRatingRec
Qwen3-Embedding (0.6B / 4B / 8B)Instruction-tuned dense semantic embedding of a sentence/passage; supports task-specific instructions prepended to the text. Best open-weight model on MTEB-multilingual as of mid-2025 (8B = 70.58).Per-window L2-normalized embedding vector (1024-dim for 0.6B, up to 4096-dim for 8B; Matryoshka-truncatable). Derived per-timepoint signals: cosine similarity to adjacent window (local coherence), cosine to a running mean (semantic drift/novelty), distance to topic/scene centroids, per-window similarity to a fixed semantic probe (e.g. ‘fear’, ‘social interaction’).transcriptper-utterance / per-sentence / per-sliding-window (set by how transcript is segmented)yes-gpubest-in-classinclude
multilingual-e5-large-instruct / e5-mistral-7b-instructGeneral-purpose instruction-tuned passage embeddings; strong, very widely used, well-documented baseline. e5-mistral is a 7B decoder-as-embedder; multilingual-e5-large is a compact 560M encoder.Per-window embedding (1024-dim for multilingual-e5-large; 4096-dim for e5-mistral). Same derived signals as Qwen3 (adjacent-window cosine coherence, drift, probe similarity, cluster assignment).transcriptper-utterance / per-sentence / per-sliding-windowyes-gpustrongalternative
GTE (gte-Qwen2-7B-instruct / gte-large-en-v1.5) and BGE (bge-m3, bge-large-en-v1.5)Two additional top-tier open embedding families. gte-Qwen2-7B-instruct is a high-MTEB instruction embedder; bge-m3 is notable for multi-functionality (dense + sparse + ColBERT multi-vector) and 8k context, useful for embedding longer passages/scenes.Per-window dense embedding (1024-dim bge-large/gte-large; up to 3584/4096 for 7B variants). bge-m3 additionally yields sparse lexical weights and token-level multi-vectors. Derived: coherence, drift, lexical-overlap-vs-semantic divergence.transcriptper-utterance / per-sentence / per-sliding-window / per-sceneyes-gpustrongalternative
OpenAI text-embedding-3-large / Voyage-3 / Gemini Embedding (API)Commercial managed embeddings. Convenient, no local GPU; Gemini Embedding and Voyage-3 currently top several leaderboards. text-embedding-3-large is widely used but not updated since Jan 2024 and now matched/beaten by open models.Per-window embedding (3072-dim openai-3-large, dimension-reducible; 1024/2048 Voyage; ~3072 Gemini). Same derived coherence/drift/probe signals.transcriptper-utterance / per-sentence / per-sliding-windowapi-onlyusablealternative
BERTopic (with dynamic / topics-over-time)Neural topic modeling: clusters embeddings (UMAP+HDBSCAN) and labels clusters with class-based TF-IDF; topics_over_time recomputes topic representations per time bin without refitting, giving an interpretable topic timeline.Per-window: hard topic assignment (topic id) and soft topic-probability distribution; per-time-bin: topic prevalence/frequency series and time-varying top keywords per topic. Yields a categorical topic label plus a continuous topic-activation vector per timepoint.transcriptper-window (assignment) + per-time-bin (prevalence series)yes-cpubest-in-classinclude
Semantic coherence / drift over time (sliding-window cosine pipeline)Derived analysis layer (not a model): from any sentence-embedding stream, compute local semantic coherence, topical drift, novelty, and recurrence over the timeline. Mirrors classic latent-semantic coherence measures used in psycholinguistics/clinical NLP, modernized with transformer embeddings.Per-timepoint scalars: cosine(window_t, window_{t-1}) = local coherence; cosine(window_t, running-mean) = drift/integration; 1-max-similarity-to-past = novelty; mean similarity within a lag window = coherence-at-lag; segmentation boundary score (similarity trough) for event/scene cuts.transcriptper-window / per-second (after resampling to the stimulus timeline)yes-cpubest-in-classinclude
Autoregressive LLM hidden-state extractor (GPT-2, Llama-3-8B, Qwen2.5-7B) for encoding modelsContextualized per-word/per-token representations from a causal LM as the stimulus is read word-by-word. In neuroimaging this is the standard high-level-semantic feature for naturalistic language comprehension; layer activations predict comprehension and brain responses.Per-token hidden-state vector at a chosen layer (e.g. 768-dim GPT-2, 4096-dim Llama-3-8B); next-word surprisal/entropy (-log p); per-token contextual embedding. Aggregated to per-word then averaged within each TR/second for the stimulus timeline.transcriptper-word (timestamp-aligned) then resampled per-second / per-TRyes-gpubest-in-classinclude
Instruction-tuned LLM as zero/few-shot feature extractor (Llama-3.1-8B-Instruct / Qwen2.5-7B-Instruct local; GPT-4o / Claude API)Prompt an instruction-tuned LLM over a transcript window to emit structured high-level semantic/narrative tags that no specialized supervised model covers robustly: scene/topic labels, narrative-stage classification, turning-point likelihood, discourse-relation between adjacent segments, character/event mentions, abstractness, and structured summaries.Per-window structured tags (JSON): categorical narrative stage (setup/conflict/climax/resolution), turning-point flag + type, discourse relation label (cause/contrast/elaboration), valence/tension Likert score, topic/theme label, entity/event list, one-line summary. Also ‘interpretable embeddings’ = vector of yes/no answers to a fixed question battery (Benara/Gao 2024).transcriptper-window / per-scene / per-utteranceyes-gpustronginclude
DMRST / neural RST discourse parserSupervised rhetorical-structure-theory parsing: segments text into elementary discourse units (EDUs) and builds a labeled discourse tree (nuclearity + relation labels) within a passage. The structured, theory-grounded alternative to asking an LLM for discourse relations.Per-passage: EDU segmentation boundaries; discourse-tree edges with relation labels (Elaboration, Contrast, Cause, Background, ~18-30 relation classes) and nuclearity (nucleus/satellite). Per-timepoint derivable: discourse-boundary indicator, local tree depth, relation-type at each boundary.transcriptper-EDU / per-sentence (within passage windows)yes-gpuusableinclude-if-resources
Supervised narrative turning-point / story-arc model (TRIPOD / Papalampidi-style; sentiment-arc tooling)Identifies screenplay/story turning points (Opportunity, Change of Plans, Point of No Return, Major Setback, Climax) and/or computes the emotional/sentiment arc (Reagan ‘six story shapes’) across the narrative.Per-scene/per-segment: turning-point probability for each of 5 TP types; normalized story position; continuous sentiment/emotional-arc value (smoothed valence trajectory); arc-shape class. Yields a tension/arc scalar per timepoint plus sparse turning-point markers.transcriptper-scene / per-segment (smoothed to a continuous arc)yes-gpuusablealternative

Recommended (best-in-class): Qwen3-Embedding-0.6B (lab default open encoder; scale to 4B/8B if GPU allows) as the backbone for all semantic features; Sliding-window cosine coherence/drift pipeline on top of those embeddings to produce per-second time-resolved scalars; BERTopic with topics-over-time for interpretable topic timelines (reuses the same embeddings); Autoregressive LLM hidden-state + surprisal extractor (GPT-2 / Llama-3.1-8B) for word-level / per-TR comprehension features (the neuroimaging standard); Instruction-tuned LLM (Llama-3.1-8B-Instruct / Qwen2.5-7B-Instruct local, or GPT-4o/Claude API) as a zero/few-shot extractor for narrative stage, turning points, discourse relations, and structured tags

Likely redundant:

  • multilingual-e5, GTE, BGE — pick ONE primary open encoder; the others are interchangeable alternatives to Qwen3-Embedding, not separate features
  • OpenAI/Voyage/Gemini embedding APIs — superseded for most needs by open encoders (Qwen3/E5); use only if a leaderboard-topping API embedding is required and off-site transcript transfer is acceptable
  • Supervised RST parser (DMRST) and supervised turning-point models — largely subsumed by the instruction-tuned LLM extractor, which is more flexible on spoken transcripts; keep the supervised ones only when standardized, reproducible discourse labels are specifically required
  • Standalone raw-embedding clustering — superseded by BERTopic, which wraps clustering with labeling and dynamic topics-over-time
References
  • Qwen3-Embedding (0.6B / 4B / 8B) — github.com/QwenLM/Qwen3-Embedding; huggingface.co/Qwen/Qwen3-Embedding-0.6B; MTEB/MMTEB
  • multilingual-e5-large-instruct / e5-mistral-7b-instruct — huggingface.co/intfloat/multilingual-e5-large-instruct; arXiv:2212.03533, 2401.00368
  • GTE (gte-Qwen2-7B-instruct / gte-large-en-v1.5) and BGE (bge-m3, bge-large-en-v1.5) — huggingface.co/Alibaba-NLP/gte-Qwen2-7B-instruct; huggingface.co/BAAI/bge-m3
  • OpenAI text-embedding-3-large / Voyage-3 / Gemini Embedding (API) — platform.openai.com/docs/guides/embeddings; docs.voyageai.com; ai.google.dev embeddings
  • BERTopic (with dynamic / topics-over-time) — github.com/MaartenGr/BERTopic; arXiv:2203.05794; maartengr.github.io/BERTopic/getting_started/topicsovertime
  • Semantic coherence / drift over time (sliding-window cosine pipeline) — Standard sliding-window cosine; cf. coherence/tangentiality NLP literature; TextTiling for segmentation
  • Autoregressive LLM hidden-state extractor (GPT-2, Llama-3-8B, Qwen2.5-7B) for encoding models — Caucheteux & King 2022; Goldstein et al. 2022; ‘Narratives’ fMRI dataset (Nastase et al.); biorxiv 2021.04.20.440622
  • Instruction-tuned LLM as zero/few-shot feature extractor (Llama-3.1-8B-Instruct / Qwen2.5-7B-Instruct local; GPT-4o / Claude API) — Benara/Gao ‘QA-Emb / Crafting Interpretable Embeddings by Asking LLMs Questions’ arXiv:2405.16714; Papalampidi turning-point work; Story Ribbons arXiv:2508.06772
  • DMRST / neural RST discourse parser — Liu et al. DMRST (arXiv:2110.04518 / 2012.01704); eRST (Computational Linguistics 2025); GUM/RST-DT corpora
  • Supervised narrative turning-point / story-arc model (TRIPOD / Papalampidi-style; sentiment-arc tooling) — Papalampidi et al. TRIPOD ‘Movie Plot Analysis via Turning Points’; Reagan et al. ‘emotional arcs of stories’; arXiv:2511.11857; culturalanalytics.org Beyond Plot