Big Five (OCEAN) Personality Profiling
Overview
Infer Big Five personality trait positions from linguistic markers in a text corpus, then map each trait to concrete writing style constraints for voice replication. The core principle: personality influences word choice in measurable but modest ways -- the mean absolute correlation between Big Five traits and LIWC categories is ~0.14 (Yarkoni, 2010), with the strongest single correlation at ~0.23. This means text-based personality inference reveals tendencies, never diagnoses. Treat all outputs as relative positions on a continuum with wide confidence bands, not as fixed personality scores.
Research foundation: The 2022 meta-analysis by Stachl et al. in Psychological Bulletin (N = 85,724 across 26 studies) established that 20 linguistic categories constitute a "kernel of truth" correlating with both self- and observer-reported Big Five traits. Self-report correlations are small (|r| = .08-.14); observer-report correlations are small-to-medium (|r| = .18-.39). The 52 LIWC categories collectively explain ~5.1% of self-reported personality variance, but ~38.5% of observer-reported variance.
When to Use
- Characterizing an author's personality tendencies from a corpus of their writing
- Building a personality profile to inform writing style replication or voice matching
- Quantifying linguistic markers associated with each OCEAN dimension
- Comparing a writing sample's trait indicators against population baselines
- Feeding trait positions into archetype classification or persona construction
When NOT to use:
- Diagnosing personality disorders or clinical conditions (this is NOT a clinical tool)
- Making hiring, screening, or gatekeeping decisions based on inferred traits
- Corpus contains fewer than 1,000 words (see Insufficient Data Handling)
- Text is translated, heavily edited by others, or ghostwritten (author signal is diluted)
- Single-context writing only (e.g., all work emails) -- context constrains language and masks personality
digraph personality_decision {
rankdir=TB;
"Enough text?\n(1000+ words)" [shape=diamond];
"Multiple contexts\nor topics?" [shape=diamond];
"Clinical/hiring\npurpose?" [shape=diamond];
"Proceed with\nfull analysis" [shape=box];
"Report insufficient\ndata" [shape=box];
"Proceed with\ncontext caveat" [shape=box];
"STOP: Not appropriate\nfor this use case" [shape=box];
"Enough text?\n(1000+ words)" -> "Multiple contexts\nor topics?" [label="yes"];
"Enough text?\n(1000+ words)" -> "Report insufficient\ndata" [label="no"];
"Multiple contexts\nor topics?" -> "Clinical/hiring\npurpose?" [label="yes"];
"Multiple contexts\nor topics?" -> "Proceed with\ncontext caveat" [label="no, single context"];
"Clinical/hiring\npurpose?" -> "STOP: Not appropriate\nfor this use case" [label="yes"];
"Clinical/hiring\npurpose?" -> "Proceed with\nfull analysis" [label="no"];
}
Quick Reference
The Five Traits and Their Linguistic Markers
| Trait |
High-Trait Linguistic Indicators |
Low-Trait Linguistic Indicators |
| Openness (O) |
Articles, prepositions, long words (6+ chars), insight words ("think", "know", "consider"), tentative language, abstract/intellectual vocabulary, cultural references, varied vocabulary (high type-token ratio) |
Short words, concrete/simple vocabulary, low type-token ratio, few insight words, past-tense orientation |
| Conscientiousness (C) |
Achievement words ("earn", "win", "completed"), exclusion words ("but", "except", "without"), negations used for precision, formal structure, longer sentences, organized discourse markers |
Fewer achievement words, more filler words, shorter sentences, informal structure, present-tense hedging |
| Extraversion (E) |
Social words ("friend", "talk", "party"), positive emotion words, 1st person plural ("we", "us"), references to people/groups, exclamation marks, informal/conversational tone, shorter words |
Fewer social references, more articles/prepositions (task-oriented), longer words, formal tone, 1st person singular, fewer exclamations |
| Agreeableness (A) |
Positive emotion words, affirmation ("agree", "wonderful", "great"), 1st person singular (expressing empathy), words about family/home/friends, fewer swear words, hedging/softening language |
Negative emotion words, swear words, words about money/death, direct/blunt phrasing, fewer affirmations, competitive language |
| Neuroticism (N) |
1st person singular ("I", "me", "my"), negative emotion words ("awful", "worried", "terrible"), anxiety words, sadness words, anger words, more past tense, hedging/uncertainty markers |
Fewer 1st person singular, fewer negative emotion words, more present tense, confident/certain language, fewer anxiety/worry words |
Key Metric Thresholds
| Parameter |
Value |
Source |
| Minimum corpus size (basic) |
1,000 words |
IBM Watson Personality Insights research |
| Minimum corpus size (reliable) |
3,000+ words |
IBM Watson validation studies |
| Optimal corpus size |
5,000-10,000+ words |
Yarkoni (2010): bloggers averaged 115,000 words |
| Expected correlation strength |
r = 0.08-0.23 |
Stachl et al. (2022) meta-analysis |
| Variance explained (self-report) |
~5.1% |
52 LIWC categories combined |
| Variance explained (observer) |
~38.5% |
52 LIWC categories combined |
| Population baseline |
Score 50 on 0-100 scale |
By definition, population mean is the midpoint |
| Confidence band (typical) |
+/- 15-20 points |
On a 0-100 normalized scale |
Workflow
Copy this checklist and track progress:
Big Five Personality Profiling Progress:
- [ ] Step 1: Validate corpus suitability and size
- [ ] Step 2: Compute linguistic marker frequencies per trait
- [ ] Step 3: Score each trait dimension (raw indicators)
- [ ] Step 4: Normalize scores and compute confidence bands
- [ ] Step 5: Map trait positions to writing style constraints
- [ ] Step 6: Generate the personality-informed writing profile
- [ ] Step 7: Write findings to docs/analysis/15-big-five-personality.md
Step 1: Validate Corpus Suitability
Before analysis, verify the corpus can support personality inference.
Suitability checks:
| Check |
Pass Condition |
Fail Action |
| Word count |
1,000+ words total |
Below 1,000: STOP. Report insufficient data. Do not compute trait scores. |
| Word count confidence |
3,000+ words for moderate confidence |
1,000-3,000: Proceed but flag ALL scores as "low confidence." |
| Language |
Predominantly English |
Non-English text invalidates LIWC-based marker lists. Flag or exclude. |
| Authorship |
Single author or known author set |
Mixed/unknown authorship dilutes signal. Document limitation. |
| Context diversity |
Writing spans 2+ topics or contexts |
Single-context writing (all work emails, all game reviews) constrains language. Trait scores reflect the context, not the person. Flag prominently. |
| Editing level |
Minimally edited, natural writing |
Heavily edited/ghostwritten text reflects editorial voice, not author personality. |
| Temporal span |
Multiple writing occasions preferred |
A single long document from one sitting may reflect mood, not trait. |
If corpus fails suitability: Report the failure. State what was checked, what failed, and why personality inference is unreliable for this corpus. Do not force analysis on unsuitable data.
Step 2: Compute Linguistic Marker Frequencies
For each trait dimension, count occurrences of validated linguistic markers across the corpus.
Marker categories to measure (per LIWC-validated research):
# Validated marker categories derived from Pennebaker & King (1999),
# Yarkoni (2010), and Stachl et al. (2022) meta-analysis.
# These are CATEGORY-LEVEL indicators, not exhaustive word lists.
TRAIT_MARKERS = {
'openness': {
'positive_indicators': [
'articles (a, an, the)', # r ~ .10-.15
'prepositions', # r ~ .08-.12
'long words (6+ characters)', # vocabulary complexity
'insight words (think, know, consider, understand)',
'tentative words (maybe, perhaps, guess)',
'high type-token ratio', # vocabulary diversity
'abstract nouns',
'cultural/intellectual references',
],
'negative_indicators': [
'present-tense verbs (overuse)',
'concrete/simple vocabulary',
'low type-token ratio',
'home/family words (inversely correlated)',
],
},
'conscientiousness': {
'positive_indicators': [
'achievement words (earn, win, complete, success)',
'exclusion words (but, except, without)', # precision
'negations used for precision',
'longer average sentence length',
'discourse markers (therefore, however, furthermore)',
'future-tense verbs',
'organized paragraph structure',
],
'negative_indicators': [
'filler words (um, like, basically)',
'informal abbreviations',
'very short sentences (fragmented)',
'present-tense hedging',
],
},
'extraversion': {
'positive_indicators': [
'social words (friend, talk, share, together)',
'positive emotion words (happy, great, love, wonderful)',
'1st person plural (we, us, our)',
'references to people and groups',
'exclamation marks',
'informal/conversational register',
'shorter average word length',
],
'negative_indicators': [
'articles (task-focused writing)', # inversely correlated
'long words',
'1st person singular (I-focused)',
'formal register',
'prepositions (complex structure)',
],
},
'agreeableness': {
'positive_indicators': [
'positive emotion words',
'affirmation/agreement words (agree, wonderful, thank)',
'family words (home, mother, friend)',
'social process words',
'hedging/softening (perhaps, might, I think)',
'compliments and praise',
'inclusive language (we, together)',
],
'negative_indicators': [
'swear words',
'anger words',
'death/violence references',
'money/power words',
'direct commands/imperatives',
'competitive language',
],
},
'neuroticism': {
'positive_indicators': [ # HIGH neuroticism markers
'1st person singular (I, me, my, mine)', # strongest marker
'negative emotion words (awful, terrible, worried)',
'anxiety words (nervous, afraid, tense)',
'sadness words (cry, grief, sad)',
'anger words (hate, annoyed, furious)',
'past-tense verbs',
'certainty-reducing hedges (I guess, maybe, not sure)',
],
'negative_indicators': [ # LOW neuroticism (emotional stability)
'positive emotion words',
'present-tense verbs',
'certainty words (always, definitely, clearly)',
'fewer self-references',
],
},
}
Measurement approach:
- Tokenize the corpus (preserve case for emphasis detection, then lowercase for counting)
- Count words falling into each marker category using a validated word list (LIWC-22 if available, or open alternatives like VADER lexicon for sentiment categories, NRC EmoLex for emotion categories)
- Compute the frequency rate per marker category:
count / total_words * 100
- Track structural markers separately: average sentence length, type-token ratio, punctuation patterns, pronoun ratios
import re
from collections import Counter
def compute_basic_markers(text):
"""Compute foundational linguistic markers for personality inference.
This provides the raw measurements; trait scoring is in Step 3."""
words = text.lower().split()
total_words = len(words)
if total_words == 0:
return None
unique_words = set(words)
sentences = re.split(r'[.!?]+', text)
sentences = [s.strip() for s in sentences if s.strip()]
# Pronoun categories
i_pronouns = {'i', 'me', 'my', 'mine', 'myself'}
we_pronouns = {'we', 'us', 'our', 'ours', 'ourselves'}
# Word length distribution
long_words = [w for w in words if len(w) >= 6]
markers = {
'total_words': total_words,
'unique_words': len(unique_words),
'type_token_ratio': len(unique_words) / total_words,
'avg_word_length': sum(len(w) for w in words) / total_words,
'avg_sentence_length': total_words / max(len(sentences), 1),
'long_word_pct': len(long_words) / total_words * 100,
'i_pronoun_pct': sum(1 for w in words if w in i_pronouns) / total_words * 100,
'we_pronoun_pct': sum(1 for w in words if w in we_pronouns) / total_words * 100,
'exclamation_rate': text.count('!') / max(len(sentences), 1),
'question_rate': text.count('?') / max(len(sentences), 1),
}
return markers
Step 3: Score Each Trait Dimension
Convert raw marker frequencies into relative trait positions. Each trait is scored on a continuum, NOT as a binary classification.
Scoring approach:
For each trait, compute a weighted composite from its marker categories. The weights reflect the meta-analytic correlation strengths from Stachl et al. (2022).
Scoring heuristic (when validated tools like LIWC-22 are unavailable):
For each trait dimension:
- Count the frequency of positive indicators (markers associated with HIGH trait levels)
- Count the frequency of negative indicators (markers associated with LOW trait levels)
- Compute a directional score:
(positive_rate - negative_rate) / (positive_rate + negative_rate)
- This yields a raw score from -1.0 (strongly low-trait) to +1.0 (strongly high-trait)
- Center of 0.0 = indeterminate / population average
Trait scoring table:
| Trait |
Primary Markers (highest r) |
Secondary Markers |
Weight Split |
| Openness |
Long words, type-token ratio, articles |
Insight words, tentative language, prepositions |
60% primary / 40% secondary |
| Conscientiousness |
Achievement words, exclusion words, sentence length |
Discourse markers, future tense, negation precision |
60% / 40% |
| Extraversion |
Social words, positive emotion, we-pronouns |
Exclamation rate, informal register, short words |
60% / 40% |
| Agreeableness |
Positive emotion, affirmation, low swearing |
Family words, hedging, inclusive language |
60% / 40% |
| Neuroticism |
I-pronouns, negative emotion, anxiety words |
Past tense, sadness words, anger words |
60% / 40% |
Step 4: Normalize Scores and Compute Confidence Bands
Normalization:
Convert raw directional scores (-1.0 to +1.0) to a 0-100 scale centered at 50:
normalized_score = 50 + (raw_score * 50)
Where 50 = population average (indeterminate), 0 = extreme low-trait, 100 = extreme high-trait.
Confidence bands:
The confidence band width depends on corpus size and context diversity:
| Corpus Size |
Context Diversity |
Confidence Band |
| 1,000-2,000 words |
Single context |
+/- 25 points (extremely wide; results are suggestive only) |
| 1,000-2,000 words |
Multiple contexts |
+/- 20 points |
| 3,000-5,000 words |
Single context |
+/- 20 points |
| 3,000-5,000 words |
Multiple contexts |
+/- 15 points |
| 5,000-10,000 words |
Multiple contexts |
+/- 12 points |
| 10,000+ words |
Multiple contexts |
+/- 10 points (practical floor -- text-based inference has inherent limits) |
Interpreting positions:
| Normalized Score |
Position Label |
Meaning |
| 0-20 |
Very Low |
Strong low-trait indicators; well below population average |
| 20-35 |
Low |
Below population average |
| 35-50 |
Low-Average |
Slightly below to average |
| 50 |
Average / Indeterminate |
No directional signal; could be truly average or insufficient data |
| 50-65 |
High-Average |
Slightly above average |
| 65-80 |
High |
Above population average |
| 80-100 |
Very High |
Strong high-trait indicators; well above population average |
Midpoint scores (40-60) require special handling: If a trait scores in the 40-60 range, the confidence band likely spans from "low" to "high." Report this as "indeterminate" rather than "average." Average and indeterminate are different claims -- "average" implies knowledge of position; "indeterminate" correctly states the data cannot distinguish.
Step 5: Map Trait Positions to Writing Style Constraints
This is the critical translation step: converting trait scores into actionable writing constraints that enable voice replication.
Openness mapping:
| Score Range |
Writing Constraints |
| High (65+) |
Use varied, sophisticated vocabulary. Include abstract concepts and intellectual framing. Employ tentative/exploratory language ("perhaps", "consider", "one might argue"). Reference ideas, culture, philosophy. Longer, more complex sentence structures. |
| Average (35-65) |
Mix of concrete and abstract. Standard vocabulary without being either simplistic or deliberately ornate. Balanced sentence complexity. |
| Low (0-35) |
Prefer concrete, familiar vocabulary. Short, direct sentences. Focus on tangible/practical topics. Avoid abstract theorizing. Straightforward phrasing. |
Conscientiousness mapping:
| Score Range |
Writing Constraints |
| High (65+) |
Structured, organized prose with clear paragraph progression. Use discourse markers ("therefore", "however", "in addition"). Achievement-oriented framing. Precise word choice with qualifying exclusions ("except", "unless"). Formal register. |
| Average (35-65) |
Moderate structure. Mix of formal and informal. Some organizational markers. |
| Low (0-35) |
Looser structure, more stream-of-consciousness. Casual tone. Shorter sentences. Fewer organizational markers. More present-tense, less future-planning language. |
Extraversion mapping:
| Score Range |
Writing Constraints |
| High (65+) |
Conversational, energetic tone. Frequent references to people, social events, group activities. Use "we/us" framing. Positive emotion words. Exclamation marks (sparingly). Shorter, punchier sentences. Informal register. |
| Average (35-65) |
Balanced social and task-oriented content. Mix of "I" and "we." Moderate emotional expression. |
| Low (0-35) |
Task-oriented, analytical tone. Fewer social references. More "I" than "we." Longer, more complex sentences. Restrained emotional expression. Formal or neutral register. |
Agreeableness mapping:
| Score Range |
Writing Constraints |
| High (65+) |
Warm, affirming tone. Hedge assertions ("I think", "it seems"). Express agreement and appreciation. Avoid blunt negative judgments. Inclusive language. Softened disagreements ("I see your point, but..."). No profanity. |
| Average (35-65) |
Balanced directness and diplomacy. Occasional hedging. Can disagree openly but not harshly. |
| Low (0-35) |
Direct, blunt tone. State opinions without hedging. Comfortable with disagreement and critique. May use stronger/coarser language. Challenge-oriented phrasing. Competitive framing. |
Neuroticism mapping (inverted as Emotional Stability for constraint clarity):
| Score Range (Neuroticism) |
Writing Constraints |
| High N / Low Stability (65+) |
More self-referential ("I feel", "I worry"). Express uncertainty and doubt. Use hedging about outcomes. Negative emotion vocabulary is natural and frequent. Past-tense reflection. Qualify positive statements. |
| Average (35-65) |
Balanced emotional expression. Mix of positive and negative. Moderate self-reference. |
| Low N / High Stability (0-35) |
Confident, assured tone. Fewer self-references. Primarily positive or neutral emotional vocabulary. Present-tense, forward-looking. Minimal anxiety or doubt markers. Certainty language ("clearly", "definitely"). |
Step 6: Generate the Personality-Informed Writing Profile
Synthesize the five trait positions and their writing constraints into a unified writing profile. The profile should resolve constraint conflicts between traits (e.g., high Openness suggests complex sentences, but high Extraversion suggests shorter sentences -- resolve toward moderate complexity with varied rhythm).
Profile structure:
## Writing Voice Profile
### Trait Summary
| Trait | Score | Position | Confidence |
|-------|-------|----------|------------|
| Openness | [X] | [label] | +/- [N] |
| Conscientiousness | [X] | [label] | +/- [N] |
| Extraversion | [X] | [label] | +/- [N] |
| Agreeableness | [X] | [label] | +/- [N] |
| Neuroticism | [X] | [label] | +/- [N] |
### Composite Writing Constraints
- **Vocabulary level:** [simple / moderate / sophisticated / varied]
- **Sentence complexity:** [short-direct / moderate / long-complex / varied-rhythm]
- **Emotional tone:** [restrained / balanced / expressive / warm / intense]
- **Social orientation:** [task-focused / balanced / people-focused]
- **Formality:** [casual / moderate / formal / context-dependent]
- **Assertion style:** [hedged / balanced / direct / blunt]
- **Temporal orientation:** [past-reflective / present-focused / future-oriented]
- **Self-reference density:** [low / moderate / high]
Resolving trait conflicts:
When two traits push writing constraints in opposite directions, resolve by:
- Prioritize the stronger-signal trait (the one further from 50 with the narrower confidence band)
- Document the tension in the profile ("High Openness suggests complex vocabulary, but high Extraversion favors conversational brevity -- resolve toward varied vocabulary in casual structures")
- Never silently drop a constraint -- if a conflict exists, name it
Step 7: Write the Report
Write all findings to docs/analysis/15-big-five-personality.md.
Report Output Template
The final report MUST be written to docs/analysis/15-big-five-personality.md with this structure:
# Big Five (OCEAN) Personality Profile
## Methodology
- **Approach:** Linguistic marker frequency analysis mapped to Big Five personality dimensions
- **Corpus:** [N words scored, N documents/texts, date range, source description]
- **Marker framework:** LIWC-validated categories (Pennebaker & King 1999; Yarkoni 2010; Stachl et al. 2022)
- **Scoring method:** Directional composite scoring from marker frequencies, normalized to 0-100 scale
- **Confidence calibration:** Based on corpus size ([N] words) and context diversity ([single/multiple])
## Corpus Suitability Assessment
- **Word count:** [N] words ([sufficient / insufficient / marginal])
- **Language:** [English / mixed]
- **Authorship:** [Single / multiple / unknown]
- **Context diversity:** [Single context / multiple contexts -- list them]
- **Editing level:** [Natural / lightly edited / heavily edited]
- **Temporal span:** [Single occasion / multiple occasions over N days/months/years]
- **Overall suitability:** [Suitable / suitable with caveats / unsuitable]
## Trait Scores
| Trait | Raw Score | Normalized (0-100) | Position | Confidence Band | Interpretation |
|-------|-----------|--------------------|-----------|--------------------|----------------|
| Openness | [+/-X.XX] | [0-100] | [label] | +/- [N] | [1-sentence interpretation] |
| Conscientiousness | [+/-X.XX] | [0-100] | [label] | +/- [N] | [1-sentence interpretation] |
| Extraversion | [+/-X.XX] | [0-100] | [label] | +/- [N] | [1-sentence interpretation] |
| Agreeableness | [+/-X.XX] | [0-100] | [label] | +/- [N] | [1-sentence interpretation] |
| Neuroticism | [+/-X.XX] | [0-100] | [label] | +/- [N] | [1-sentence interpretation] |
## Linguistic Evidence per Trait
### Openness
- **Marker frequencies:** [table of measured indicator rates vs. corpus baseline]
- **Key evidence:** [most prominent indicators and their rates]
- **Confidence notes:** [what strengthens or weakens confidence in this score]
### Conscientiousness
[Same structure]
### Extraversion
[Same structure]
### Agreeableness
[Same structure]
### Neuroticism
[Same structure]
## Writing Style Constraints (for Voice Replication)
### Composite Profile
| Dimension | Constraint | Derived From |
|-----------|-----------|--------------|
| Vocabulary level | [constraint] | [trait(s)] |
| Sentence complexity | [constraint] | [trait(s)] |
| Emotional tone | [constraint] | [trait(s)] |
| Social orientation | [constraint] | [trait(s)] |
| Formality | [constraint] | [trait(s)] |
| Assertion style | [constraint] | [trait(s)] |
| Temporal orientation | [constraint] | [trait(s)] |
| Self-reference density | [constraint] | [trait(s)] |
### Trait Conflict Resolutions
[Document any conflicts between trait-derived constraints and how they were resolved]
### Exemplar Sentences
[3-5 sentences that demonstrate the constrained writing style, drawn from or inspired by the corpus]
## Limitations and Caveats
- Text-based personality inference captures tendencies, not diagnoses. The strongest individual LIWC-trait correlation is ~0.23 (Yarkoni, 2010).
- LIWC categories collectively explain ~5.1% of self-reported personality variance (Stachl et al., 2022). Results are probabilistic indicators, not deterministic measures.
- Writing context strongly affects language: the same person writes differently in email vs. social media vs. academic papers. Scores reflect the writing context as much as the person.
- [Corpus-specific limitations from Step 1]
- [Confidence band acknowledgment: scores of X and Y overlap at their confidence intervals, meaning they may not be truly different]
- These results should NOT be used for clinical assessment, hiring decisions, or any evaluative purpose. They are intended solely for writing style characterization.
## Population Baseline Comparison
- All scores are normed against a theoretical population mean of 50.
- Without a matched comparison corpus, absolute positions should be interpreted cautiously.
- The profile is most useful as a RELATIVE description (which traits are strongest/weakest for this author) rather than an absolute placement.
## References
- Pennebaker, J.W. & King, L.A. (1999). Linguistic styles: Language use as an individual difference. *Journal of Personality and Social Psychology*, 77(6), 1296-1312.
- Yarkoni, T. (2010). Personality in 100,000 Words: A large-scale analysis of personality and word use among bloggers. *Journal of Research in Personality*, 44(3), 363-373.
- Stachl, C., et al. (2022). The kernel of truth in text-based personality assessment: A meta-analysis of the relations between the Big Five and LIWC. *Psychological Bulletin*.
- Hirsh, J.B. & Peterson, J.B. (2009). Personality and language use in self-narratives. *Journal of Research in Personality*, 43(3), 524-527.
- Boyd, R.L. & Pennebaker, J.W. (2017). Language-based personality: A new approach to personality in a digital world. *Current Opinion in Behavioral Sciences*, 18, 63-68.
- Tausczik, Y.R. & Pennebaker, J.W. (2010). The psychological meaning of words: LIWC and computerized text analysis methods. *Journal of Language and Social Psychology*, 29(1), 24-54.
Good Patterns
- Use validated marker lists from meta-analytic research (Stachl et al. 2022, Yarkoni 2010) rather than intuition-based word lists
- Report confidence intervals on every trait score -- never present a point estimate without a band
- Treat results as tendencies ("the writing suggests moderate openness") not diagnoses ("this person is open")
- Map traits to writing constraints -- the practical output is a replicable writing profile, not a personality label
- Compare against population baselines -- raw marker frequencies without normalization are uninterpretable
- Document corpus limitations prominently, not as a buried footnote
- Score all five traits even when some are indeterminate -- an indeterminate score is information ("the data does not distinguish this trait")
- Resolve trait conflicts explicitly when mapping to writing constraints -- never silently drop conflicting evidence
Anti-Patterns
| Anti-Pattern |
Why It Fails |
Instead |
| Claiming diagnostic accuracy |
Text-personality correlations max at r = .23; 95% of variance is NOT explained |
Report correlations, confidence bands, and the "tendencies not diagnoses" framing |
| Using fewer than 1,000 words |
Below 1,000 words, marker frequencies are dominated by noise |
Require 1,000-word minimum; flag 1,000-3,000 as low confidence |
| Treating OCEAN scores as fixed personality |
Scores reflect THIS corpus in THIS context at THIS time |
Frame as "writing-derived trait indicators" not "personality scores" |
| Ignoring context effects |
A professional email corpus will score low-Extraversion regardless of actual personality |
Document context, flag single-context corpora, note which traits are most context-dependent |
| Using unvalidated word lists |
Intuitive word lists may not correlate with actual personality traits |
Use LIWC-validated categories or lists derived from published research |
| Conflating online writing with offline personality |
Online self-presentation is curated and context-specific |
Note that writing-derived profiles reflect presented identity, not private experience |
| Presenting scores without confidence bounds |
A score of 72 means nothing without knowing it could be 57-87 |
Always pair scores with confidence bands |
| Scoring only 1-2 traits |
Partial profiles invite over-interpretation of the measured traits |
Score all five; mark indeterminate traits as such |
| Binary trait classification |
"Extraverted" vs "Introverted" loses the continuum |
Use position labels (Low / Low-Average / Average / High-Average / High / Very High) |
| Ignoring the "kernel of truth" meta-analysis |
Cherry-picking individual studies inflates expected accuracy |
Anchor expectations to the meta-analytic effect sizes |
Boundaries
This skill SHOULD produce:
- Trait position scores (0-100) for all five OCEAN dimensions with confidence bands
- Linguistic marker frequency tables showing evidence per trait
- Writing style constraints derived from trait positions
- Composite writing voice profile for style replication
- Explicit documentation of corpus limitations, confidence levels, and methodological caveats
- Written report at
docs/analysis/15-big-five-personality.md
This skill should NOT:
- Diagnose personality traits, disorders, or clinical conditions
- Claim clinical validity or psychometric equivalence with validated personality instruments (NEO-PI-R, BFI-2)
- Be used for hiring, screening, admissions, or any evaluative decision about a person
- Present scores without confidence bounds
- Ignore that writing context affects language (professional email vs. casual social media vs. creative writing)
- Claim accuracy beyond what meta-analytic evidence supports (~5% of self-reported variance explained)
- Produce a profile from fewer than 1,000 words
- Treat a single writing context as representative of whole personality
- Conflate "presented writing identity" with "actual personality"
Insufficient Data Handling
digraph insufficient_data {
rankdir=TB;
node [shape=diamond, style=filled, fillcolor="#f0f0f0"];
start [label="Total word count?", shape=diamond];
tiny [label="< 1,000 words", shape=box, fillcolor="#ffcccc"];
small [label="1,000-3,000 words", shape=box, fillcolor="#fff3cc"];
moderate [label="3,000-5,000 words", shape=box, fillcolor="#ffffcc"];
good [label="5,000+ words", shape=box, fillcolor="#ccffcc"];
start -> tiny [label="< 1,000"];
start -> small [label="1,000-3,000"];
start -> moderate [label="3,000-5,000"];
start -> good [label="5,000+"];
tiny_action [label="STOP: Report insufficient data.\nDo NOT compute trait scores.\nReport only raw marker counts.", shape=box, fillcolor="#ffcccc"];
small_action [label="Compute scores with\nLOW CONFIDENCE flag on every trait.\nConfidence band: +/- 20-25 points.\nSkip writing constraint mapping.", shape=box, fillcolor="#fff3cc"];
moderate_action [label="Full analysis.\nModerate confidence.\nBand: +/- 15 points.\nMap writing constraints with caveats.", shape=box, fillcolor="#ffffcc"];
good_action [label="Full analysis pipeline.\nBand: +/- 10-12 points.\nFull writing constraint mapping.", shape=box, fillcolor="#ccffcc"];
tiny -> tiny_action;
small -> small_action;
moderate -> moderate_action;
good -> good_action;
}
| Condition |
Action |
| Corpus < 1,000 words |
STOP. Do NOT compute trait scores. Report only: raw word count, language, and a statement that the corpus is too small for personality inference. List raw marker frequencies without interpreting them as trait indicators. |
| Corpus 1,000-3,000 words |
Compute scores but flag EVERY trait as "low confidence." Use +/- 20-25 point confidence bands. Skip writing constraint mapping (too unreliable). Report scores as "preliminary indicators only." |
| Corpus 3,000-5,000 words |
Full analysis with moderate confidence. Use +/- 15 point confidence bands. Map writing constraints but caveat that they reflect limited data. |
| Corpus 5,000+ words |
Full analysis pipeline. Use +/- 10-12 point bands. Reliability improves marginally beyond 10,000 words due to inherent method limits. |
| Single-context corpus |
Widen confidence bands by 5 points. Note prominently that trait scores reflect the writing context as much as the person. Extraversion and Agreeableness are most affected by context. |
| Highly uniform topic |
All writing about one narrow topic (e.g., all game reviews) constrains vocabulary and tone. Openness and Conscientiousness scores are least reliable here. Flag in report. |
| Multiple traits score 40-60 |
If 3+ traits are in the 40-60 range, the corpus may lack sufficient personality signal. Report as "insufficient differentiation" rather than "average personality." Consider whether context uniformity is suppressing signal. |
| All traits cluster on one side |
If all five traits score above 65 or below 35, check for a systematic bias (e.g., all positive/enthusiastic writing inflates E, A, and O simultaneously). Note the clustering and investigate whether context explains it. |
Common Mistakes
| Mistake |
Fix |
| Reporting "Extraversion: 73" without confidence band |
Always report "73 +/- 15" or "73 (range: 58-88)" |
| Using OCEAN as a personality diagnosis |
Frame as "writing-derived trait indicators reflecting linguistic patterns in this corpus" |
| Analyzing a corpus under 1,000 words |
Stop and report insufficient data. Do not compute scores. |
| Treating a single-context corpus as personality ground truth |
Flag single-context prominently; note which traits are most context-dependent |
| Scoring only the "interesting" traits |
Score all five. Indeterminate is information, not absence. |
| Mapping writing constraints from low-confidence scores |
Only map writing constraints when confidence is moderate or higher (3,000+ words) |
| Ignoring that I-pronoun frequency has multiple interpretations |
High I-pronouns correlate with both Neuroticism AND depression AND self-awareness AND intimate writing style. Do not over-interpret. |
| Presenting the profile as stable/permanent |
Personality traits are relatively stable, but linguistic expression of them varies by context, mood, and audience |
| Using the profile for evaluative judgments |
This is a writing style tool, not a character assessment tool |
| Skipping the population baseline comparison |
Without baseline comparison, raw scores are uninterpretable. Always note that 50 = theoretical population mean. |
References
- Pennebaker, J.W. & King, L.A. (1999). Linguistic styles: Language use as an individual difference. Journal of Personality and Social Psychology, 77(6), 1296-1312.
- Yarkoni, T. (2010). Personality in 100,000 Words. Journal of Research in Personality, 44(3), 363-373.
- Stachl, C., et al. (2022). The kernel of truth in text-based personality assessment: A meta-analysis. Psychological Bulletin.
- Hirsh, J.B. & Peterson, J.B. (2009). Personality and language use in self-narratives. Journal of Research in Personality, 43(3), 524-527.
- Boyd, R.L. & Pennebaker, J.W. (2017). Language-based personality: A new approach. Current Opinion in Behavioral Sciences, 18, 63-68.
- Tausczik, Y.R. & Pennebaker, J.W. (2010). The psychological meaning of words. Journal of Language and Social Psychology, 29(1), 24-54.
- LIWC-22 Manual: Development and Psychometrics.
- IBM Watson Personality Insights: Validation and Methodology.
- Frontiers in Psychology: Linguistic measures of personality in group discussions (2022).
1---2name: big-five-personality3description: Use when inferring Big Five (OCEAN) personality traits from a text corpus, mapping linguistic markers to personality dimensions, converting trait profiles into writing style constraints for voice replication, or needing to characterize an author's personality tendencies from their writing patterns4---56# Big Five (OCEAN) Personality Profiling78## Overview910Infer Big Five personality trait positions from linguistic markers in a text corpus, then map each trait to concrete writing style constraints for voice replication. The core principle: **personality influences word choice in measurable but modest ways** -- the mean absolute correlation between Big Five traits and LIWC categories is ~0.14 (Yarkoni, 2010), with the strongest single correlation at ~0.23. This means text-based personality inference reveals *tendencies*, never *diagnoses*. Treat all outputs as relative positions on a continuum with wide confidence bands, not as fixed personality scores.1112**Research foundation:** The 2022 meta-analysis by Stachl et al. in *Psychological Bulletin* (N = 85,724 across 26 studies) established that 20 linguistic categories constitute a "kernel of truth" correlating with both self- and observer-reported Big Five traits. Self-report correlations are small (|r| = .08-.14); observer-report correlations are small-to-medium (|r| = .18-.39). The 52 LIWC categories collectively explain ~5.1% of self-reported personality variance, but ~38.5% of observer-reported variance.1314## When to Use1516- Characterizing an author's personality tendencies from a corpus of their writing17- Building a personality profile to inform writing style replication or voice matching18- Quantifying linguistic markers associated with each OCEAN dimension19- Comparing a writing sample's trait indicators against population baselines20- Feeding trait positions into archetype classification or persona construction2122**When NOT to use:**2324- Diagnosing personality disorders or clinical conditions (this is NOT a clinical tool)25- Making hiring, screening, or gatekeeping decisions based on inferred traits26- Corpus contains fewer than 1,000 words (see Insufficient Data Handling)27- Text is translated, heavily edited by others, or ghostwritten (author signal is diluted)28- Single-context writing only (e.g., all work emails) -- context constrains language and masks personality2930```dot31digraph personality_decision {32 rankdir=TB;33 "Enough text?\n(1000+ words)" [shape=diamond];34 "Multiple contexts\nor topics?" [shape=diamond];35 "Clinical/hiring\npurpose?" [shape=diamond];36 "Proceed with\nfull analysis" [shape=box];37 "Report insufficient\ndata" [shape=box];38 "Proceed with\ncontext caveat" [shape=box];39 "STOP: Not appropriate\nfor this use case" [shape=box];4041 "Enough text?\n(1000+ words)" -> "Multiple contexts\nor topics?" [label="yes"];42 "Enough text?\n(1000+ words)" -> "Report insufficient\ndata" [label="no"];43 "Multiple contexts\nor topics?" -> "Clinical/hiring\npurpose?" [label="yes"];44 "Multiple contexts\nor topics?" -> "Proceed with\ncontext caveat" [label="no, single context"];45 "Clinical/hiring\npurpose?" -> "STOP: Not appropriate\nfor this use case" [label="yes"];46 "Clinical/hiring\npurpose?" -> "Proceed with\nfull analysis" [label="no"];47}48```4950## Quick Reference5152### The Five Traits and Their Linguistic Markers5354| Trait | High-Trait Linguistic Indicators | Low-Trait Linguistic Indicators |55|-------|----------------------------------|--------------------------------|56| **Openness (O)** | Articles, prepositions, long words (6+ chars), insight words ("think", "know", "consider"), tentative language, abstract/intellectual vocabulary, cultural references, varied vocabulary (high type-token ratio) | Short words, concrete/simple vocabulary, low type-token ratio, few insight words, past-tense orientation |57| **Conscientiousness (C)** | Achievement words ("earn", "win", "completed"), exclusion words ("but", "except", "without"), negations used for precision, formal structure, longer sentences, organized discourse markers | Fewer achievement words, more filler words, shorter sentences, informal structure, present-tense hedging |58| **Extraversion (E)** | Social words ("friend", "talk", "party"), positive emotion words, 1st person plural ("we", "us"), references to people/groups, exclamation marks, informal/conversational tone, shorter words | Fewer social references, more articles/prepositions (task-oriented), longer words, formal tone, 1st person singular, fewer exclamations |59| **Agreeableness (A)** | Positive emotion words, affirmation ("agree", "wonderful", "great"), 1st person singular (expressing empathy), words about family/home/friends, fewer swear words, hedging/softening language | Negative emotion words, swear words, words about money/death, direct/blunt phrasing, fewer affirmations, competitive language |60| **Neuroticism (N)** | 1st person singular ("I", "me", "my"), negative emotion words ("awful", "worried", "terrible"), anxiety words, sadness words, anger words, more past tense, hedging/uncertainty markers | Fewer 1st person singular, fewer negative emotion words, more present tense, confident/certain language, fewer anxiety/worry words |6162### Key Metric Thresholds6364| Parameter | Value | Source |65|-----------|-------|--------|66| **Minimum corpus size (basic)** | 1,000 words | IBM Watson Personality Insights research |67| **Minimum corpus size (reliable)** | 3,000+ words | IBM Watson validation studies |68| **Optimal corpus size** | 5,000-10,000+ words | Yarkoni (2010): bloggers averaged 115,000 words |69| **Expected correlation strength** | r = 0.08-0.23 | Stachl et al. (2022) meta-analysis |70| **Variance explained (self-report)** | ~5.1% | 52 LIWC categories combined |71| **Variance explained (observer)** | ~38.5% | 52 LIWC categories combined |72| **Population baseline** | Score 50 on 0-100 scale | By definition, population mean is the midpoint |73| **Confidence band (typical)** | +/- 15-20 points | On a 0-100 normalized scale |7475## Workflow7677Copy this checklist and track progress:7879```80Big Five Personality Profiling Progress:81- [ ] Step 1: Validate corpus suitability and size82- [ ] Step 2: Compute linguistic marker frequencies per trait83- [ ] Step 3: Score each trait dimension (raw indicators)84- [ ] Step 4: Normalize scores and compute confidence bands85- [ ] Step 5: Map trait positions to writing style constraints86- [ ] Step 6: Generate the personality-informed writing profile87- [ ] Step 7: Write findings to docs/analysis/15-big-five-personality.md88```8990### Step 1: Validate Corpus Suitability9192Before analysis, verify the corpus can support personality inference.9394**Suitability checks:**9596| Check | Pass Condition | Fail Action |97|-------|---------------|-------------|98| **Word count** | 1,000+ words total | Below 1,000: STOP. Report insufficient data. Do not compute trait scores. |99| **Word count confidence** | 3,000+ words for moderate confidence | 1,000-3,000: Proceed but flag ALL scores as "low confidence." |100| **Language** | Predominantly English | Non-English text invalidates LIWC-based marker lists. Flag or exclude. |101| **Authorship** | Single author or known author set | Mixed/unknown authorship dilutes signal. Document limitation. |102| **Context diversity** | Writing spans 2+ topics or contexts | Single-context writing (all work emails, all game reviews) constrains language. Trait scores reflect the context, not the person. Flag prominently. |103| **Editing level** | Minimally edited, natural writing | Heavily edited/ghostwritten text reflects editorial voice, not author personality. |104| **Temporal span** | Multiple writing occasions preferred | A single long document from one sitting may reflect mood, not trait. |105106**If corpus fails suitability:** Report the failure. State what was checked, what failed, and why personality inference is unreliable for this corpus. Do not force analysis on unsuitable data.107108### Step 2: Compute Linguistic Marker Frequencies109110For each trait dimension, count occurrences of validated linguistic markers across the corpus.111112**Marker categories to measure (per LIWC-validated research):**113114```python115# Validated marker categories derived from Pennebaker & King (1999),116# Yarkoni (2010), and Stachl et al. (2022) meta-analysis.117# These are CATEGORY-LEVEL indicators, not exhaustive word lists.118119TRAIT_MARKERS = {120 'openness': {121 'positive_indicators': [122 'articles (a, an, the)', # r ~ .10-.15123 'prepositions', # r ~ .08-.12124 'long words (6+ characters)', # vocabulary complexity125 'insight words (think, know, consider, understand)',126 'tentative words (maybe, perhaps, guess)',127 'high type-token ratio', # vocabulary diversity128 'abstract nouns',129 'cultural/intellectual references',130 ],131 'negative_indicators': [132 'present-tense verbs (overuse)',133 'concrete/simple vocabulary',134 'low type-token ratio',135 'home/family words (inversely correlated)',136 ],137 },138 'conscientiousness': {139 'positive_indicators': [140 'achievement words (earn, win, complete, success)',141 'exclusion words (but, except, without)', # precision142 'negations used for precision',143 'longer average sentence length',144 'discourse markers (therefore, however, furthermore)',145 'future-tense verbs',146 'organized paragraph structure',147 ],148 'negative_indicators': [149 'filler words (um, like, basically)',150 'informal abbreviations',151 'very short sentences (fragmented)',152 'present-tense hedging',153 ],154 },155 'extraversion': {156 'positive_indicators': [157 'social words (friend, talk, share, together)',158 'positive emotion words (happy, great, love, wonderful)',159 '1st person plural (we, us, our)',160 'references to people and groups',161 'exclamation marks',162 'informal/conversational register',163 'shorter average word length',164 ],165 'negative_indicators': [166 'articles (task-focused writing)', # inversely correlated167 'long words',168 '1st person singular (I-focused)',169 'formal register',170 'prepositions (complex structure)',171 ],172 },173 'agreeableness': {174 'positive_indicators': [175 'positive emotion words',176 'affirmation/agreement words (agree, wonderful, thank)',177 'family words (home, mother, friend)',178 'social process words',179 'hedging/softening (perhaps, might, I think)',180 'compliments and praise',181 'inclusive language (we, together)',182 ],183 'negative_indicators': [184 'swear words',185 'anger words',186 'death/violence references',187 'money/power words',188 'direct commands/imperatives',189 'competitive language',190 ],191 },192 'neuroticism': {193 'positive_indicators': [ # HIGH neuroticism markers194 '1st person singular (I, me, my, mine)', # strongest marker195 'negative emotion words (awful, terrible, worried)',196 'anxiety words (nervous, afraid, tense)',197 'sadness words (cry, grief, sad)',198 'anger words (hate, annoyed, furious)',199 'past-tense verbs',200 'certainty-reducing hedges (I guess, maybe, not sure)',201 ],202 'negative_indicators': [ # LOW neuroticism (emotional stability)203 'positive emotion words',204 'present-tense verbs',205 'certainty words (always, definitely, clearly)',206 'fewer self-references',207 ],208 },209}210```211212**Measurement approach:**2132141. **Tokenize** the corpus (preserve case for emphasis detection, then lowercase for counting)2152. **Count** words falling into each marker category using a validated word list (LIWC-22 if available, or open alternatives like VADER lexicon for sentiment categories, NRC EmoLex for emotion categories)2163. **Compute** the frequency rate per marker category: `count / total_words * 100`2174. **Track** structural markers separately: average sentence length, type-token ratio, punctuation patterns, pronoun ratios218219```python220import re221from collections import Counter222223def compute_basic_markers(text):224 """Compute foundational linguistic markers for personality inference.225 This provides the raw measurements; trait scoring is in Step 3."""226 words = text.lower().split()227 total_words = len(words)228 if total_words == 0:229 return None230231 unique_words = set(words)232 sentences = re.split(r'[.!?]+', text)233 sentences = [s.strip() for s in sentences if s.strip()]234235 # Pronoun categories236 i_pronouns = {'i', 'me', 'my', 'mine', 'myself'}237 we_pronouns = {'we', 'us', 'our', 'ours', 'ourselves'}238239 # Word length distribution240 long_words = [w for w in words if len(w) >= 6]241242 markers = {243 'total_words': total_words,244 'unique_words': len(unique_words),245 'type_token_ratio': len(unique_words) / total_words,246 'avg_word_length': sum(len(w) for w in words) / total_words,247 'avg_sentence_length': total_words / max(len(sentences), 1),248 'long_word_pct': len(long_words) / total_words * 100,249 'i_pronoun_pct': sum(1 for w in words if w in i_pronouns) / total_words * 100,250 'we_pronoun_pct': sum(1 for w in words if w in we_pronouns) / total_words * 100,251 'exclamation_rate': text.count('!') / max(len(sentences), 1),252 'question_rate': text.count('?') / max(len(sentences), 1),253 }254 return markers255```256257### Step 3: Score Each Trait Dimension258259Convert raw marker frequencies into relative trait positions. Each trait is scored on a continuum, NOT as a binary classification.260261**Scoring approach:**262263For each trait, compute a weighted composite from its marker categories. The weights reflect the meta-analytic correlation strengths from Stachl et al. (2022).264265**Scoring heuristic (when validated tools like LIWC-22 are unavailable):**266267For each trait dimension:2681. Count the frequency of positive indicators (markers associated with HIGH trait levels)2692. Count the frequency of negative indicators (markers associated with LOW trait levels)2703. Compute a directional score: `(positive_rate - negative_rate) / (positive_rate + negative_rate)`2714. This yields a raw score from -1.0 (strongly low-trait) to +1.0 (strongly high-trait)2725. Center of 0.0 = indeterminate / population average273274**Trait scoring table:**275276| Trait | Primary Markers (highest r) | Secondary Markers | Weight Split |277|-------|----------------------------|-------------------|--------------|278| **Openness** | Long words, type-token ratio, articles | Insight words, tentative language, prepositions | 60% primary / 40% secondary |279| **Conscientiousness** | Achievement words, exclusion words, sentence length | Discourse markers, future tense, negation precision | 60% / 40% |280| **Extraversion** | Social words, positive emotion, we-pronouns | Exclamation rate, informal register, short words | 60% / 40% |281| **Agreeableness** | Positive emotion, affirmation, low swearing | Family words, hedging, inclusive language | 60% / 40% |282| **Neuroticism** | I-pronouns, negative emotion, anxiety words | Past tense, sadness words, anger words | 60% / 40% |283284### Step 4: Normalize Scores and Compute Confidence Bands285286**Normalization:**287288Convert raw directional scores (-1.0 to +1.0) to a 0-100 scale centered at 50:289290```291normalized_score = 50 + (raw_score * 50)292```293294Where 50 = population average (indeterminate), 0 = extreme low-trait, 100 = extreme high-trait.295296**Confidence bands:**297298The confidence band width depends on corpus size and context diversity:299300| Corpus Size | Context Diversity | Confidence Band |301|-------------|-------------------|-----------------|302| 1,000-2,000 words | Single context | +/- 25 points (extremely wide; results are suggestive only) |303| 1,000-2,000 words | Multiple contexts | +/- 20 points |304| 3,000-5,000 words | Single context | +/- 20 points |305| 3,000-5,000 words | Multiple contexts | +/- 15 points |306| 5,000-10,000 words | Multiple contexts | +/- 12 points |307| 10,000+ words | Multiple contexts | +/- 10 points (practical floor -- text-based inference has inherent limits) |308309**Interpreting positions:**310311| Normalized Score | Position Label | Meaning |312|-----------------|---------------|---------|313| 0-20 | Very Low | Strong low-trait indicators; well below population average |314| 20-35 | Low | Below population average |315| 35-50 | Low-Average | Slightly below to average |316| 50 | Average / Indeterminate | No directional signal; could be truly average or insufficient data |317| 50-65 | High-Average | Slightly above average |318| 65-80 | High | Above population average |319| 80-100 | Very High | Strong high-trait indicators; well above population average |320321**Midpoint scores (40-60) require special handling:** If a trait scores in the 40-60 range, the confidence band likely spans from "low" to "high." Report this as "indeterminate" rather than "average." Average and indeterminate are different claims -- "average" implies knowledge of position; "indeterminate" correctly states the data cannot distinguish.322323### Step 5: Map Trait Positions to Writing Style Constraints324325This is the critical translation step: converting trait scores into actionable writing constraints that enable voice replication.326327**Openness mapping:**328329| Score Range | Writing Constraints |330|-------------|-------------------|331| High (65+) | Use varied, sophisticated vocabulary. Include abstract concepts and intellectual framing. Employ tentative/exploratory language ("perhaps", "consider", "one might argue"). Reference ideas, culture, philosophy. Longer, more complex sentence structures. |332| Average (35-65) | Mix of concrete and abstract. Standard vocabulary without being either simplistic or deliberately ornate. Balanced sentence complexity. |333| Low (0-35) | Prefer concrete, familiar vocabulary. Short, direct sentences. Focus on tangible/practical topics. Avoid abstract theorizing. Straightforward phrasing. |334335**Conscientiousness mapping:**336337| Score Range | Writing Constraints |338|-------------|-------------------|339| High (65+) | Structured, organized prose with clear paragraph progression. Use discourse markers ("therefore", "however", "in addition"). Achievement-oriented framing. Precise word choice with qualifying exclusions ("except", "unless"). Formal register. |340| Average (35-65) | Moderate structure. Mix of formal and informal. Some organizational markers. |341| Low (0-35) | Looser structure, more stream-of-consciousness. Casual tone. Shorter sentences. Fewer organizational markers. More present-tense, less future-planning language. |342343**Extraversion mapping:**344345| Score Range | Writing Constraints |346|-------------|-------------------|347| High (65+) | Conversational, energetic tone. Frequent references to people, social events, group activities. Use "we/us" framing. Positive emotion words. Exclamation marks (sparingly). Shorter, punchier sentences. Informal register. |348| Average (35-65) | Balanced social and task-oriented content. Mix of "I" and "we." Moderate emotional expression. |349| Low (0-35) | Task-oriented, analytical tone. Fewer social references. More "I" than "we." Longer, more complex sentences. Restrained emotional expression. Formal or neutral register. |350351**Agreeableness mapping:**352353| Score Range | Writing Constraints |354|-------------|-------------------|355| High (65+) | Warm, affirming tone. Hedge assertions ("I think", "it seems"). Express agreement and appreciation. Avoid blunt negative judgments. Inclusive language. Softened disagreements ("I see your point, but..."). No profanity. |356| Average (35-65) | Balanced directness and diplomacy. Occasional hedging. Can disagree openly but not harshly. |357| Low (0-35) | Direct, blunt tone. State opinions without hedging. Comfortable with disagreement and critique. May use stronger/coarser language. Challenge-oriented phrasing. Competitive framing. |358359**Neuroticism mapping (inverted as Emotional Stability for constraint clarity):**360361| Score Range (Neuroticism) | Writing Constraints |362|---------------------------|-------------------|363| High N / Low Stability (65+) | More self-referential ("I feel", "I worry"). Express uncertainty and doubt. Use hedging about outcomes. Negative emotion vocabulary is natural and frequent. Past-tense reflection. Qualify positive statements. |364| Average (35-65) | Balanced emotional expression. Mix of positive and negative. Moderate self-reference. |365| Low N / High Stability (0-35) | Confident, assured tone. Fewer self-references. Primarily positive or neutral emotional vocabulary. Present-tense, forward-looking. Minimal anxiety or doubt markers. Certainty language ("clearly", "definitely"). |366367### Step 6: Generate the Personality-Informed Writing Profile368369Synthesize the five trait positions and their writing constraints into a unified writing profile. The profile should resolve constraint conflicts between traits (e.g., high Openness suggests complex sentences, but high Extraversion suggests shorter sentences -- resolve toward moderate complexity with varied rhythm).370371**Profile structure:**372373```markdown374## Writing Voice Profile375376### Trait Summary377| Trait | Score | Position | Confidence |378|-------|-------|----------|------------|379| Openness | [X] | [label] | +/- [N] |380| Conscientiousness | [X] | [label] | +/- [N] |381| Extraversion | [X] | [label] | +/- [N] |382| Agreeableness | [X] | [label] | +/- [N] |383| Neuroticism | [X] | [label] | +/- [N] |384385### Composite Writing Constraints386- **Vocabulary level:** [simple / moderate / sophisticated / varied]387- **Sentence complexity:** [short-direct / moderate / long-complex / varied-rhythm]388- **Emotional tone:** [restrained / balanced / expressive / warm / intense]389- **Social orientation:** [task-focused / balanced / people-focused]390- **Formality:** [casual / moderate / formal / context-dependent]391- **Assertion style:** [hedged / balanced / direct / blunt]392- **Temporal orientation:** [past-reflective / present-focused / future-oriented]393- **Self-reference density:** [low / moderate / high]394```395396**Resolving trait conflicts:**397398When two traits push writing constraints in opposite directions, resolve by:3991. **Prioritize the stronger-signal trait** (the one further from 50 with the narrower confidence band)4002. **Document the tension** in the profile ("High Openness suggests complex vocabulary, but high Extraversion favors conversational brevity -- resolve toward varied vocabulary in casual structures")4013. **Never silently drop a constraint** -- if a conflict exists, name it402403### Step 7: Write the Report404405Write all findings to `docs/analysis/15-big-five-personality.md`.406407## Report Output Template408409The final report MUST be written to `docs/analysis/15-big-five-personality.md` with this structure:410411```markdown412# Big Five (OCEAN) Personality Profile413414## Methodology415- **Approach:** Linguistic marker frequency analysis mapped to Big Five personality dimensions416- **Corpus:** [N words scored, N documents/texts, date range, source description]417- **Marker framework:** LIWC-validated categories (Pennebaker & King 1999; Yarkoni 2010; Stachl et al. 2022)418- **Scoring method:** Directional composite scoring from marker frequencies, normalized to 0-100 scale419- **Confidence calibration:** Based on corpus size ([N] words) and context diversity ([single/multiple])420421## Corpus Suitability Assessment422- **Word count:** [N] words ([sufficient / insufficient / marginal])423- **Language:** [English / mixed]424- **Authorship:** [Single / multiple / unknown]425- **Context diversity:** [Single context / multiple contexts -- list them]426- **Editing level:** [Natural / lightly edited / heavily edited]427- **Temporal span:** [Single occasion / multiple occasions over N days/months/years]428- **Overall suitability:** [Suitable / suitable with caveats / unsuitable]429430## Trait Scores431432| Trait | Raw Score | Normalized (0-100) | Position | Confidence Band | Interpretation |433|-------|-----------|--------------------|-----------|--------------------|----------------|434| Openness | [+/-X.XX] | [0-100] | [label] | +/- [N] | [1-sentence interpretation] |435| Conscientiousness | [+/-X.XX] | [0-100] | [label] | +/- [N] | [1-sentence interpretation] |436| Extraversion | [+/-X.XX] | [0-100] | [label] | +/- [N] | [1-sentence interpretation] |437| Agreeableness | [+/-X.XX] | [0-100] | [label] | +/- [N] | [1-sentence interpretation] |438| Neuroticism | [+/-X.XX] | [0-100] | [label] | +/- [N] | [1-sentence interpretation] |439440## Linguistic Evidence per Trait441442### Openness443- **Marker frequencies:** [table of measured indicator rates vs. corpus baseline]444- **Key evidence:** [most prominent indicators and their rates]445- **Confidence notes:** [what strengthens or weakens confidence in this score]446447### Conscientiousness448[Same structure]449450### Extraversion451[Same structure]452453### Agreeableness454[Same structure]455456### Neuroticism457[Same structure]458459## Writing Style Constraints (for Voice Replication)460461### Composite Profile462| Dimension | Constraint | Derived From |463|-----------|-----------|--------------|464| Vocabulary level | [constraint] | [trait(s)] |465| Sentence complexity | [constraint] | [trait(s)] |466| Emotional tone | [constraint] | [trait(s)] |467| Social orientation | [constraint] | [trait(s)] |468| Formality | [constraint] | [trait(s)] |469| Assertion style | [constraint] | [trait(s)] |470| Temporal orientation | [constraint] | [trait(s)] |471| Self-reference density | [constraint] | [trait(s)] |472473### Trait Conflict Resolutions474[Document any conflicts between trait-derived constraints and how they were resolved]475476### Exemplar Sentences477[3-5 sentences that demonstrate the constrained writing style, drawn from or inspired by the corpus]478479## Limitations and Caveats480- Text-based personality inference captures tendencies, not diagnoses. The strongest individual LIWC-trait correlation is ~0.23 (Yarkoni, 2010).481- LIWC categories collectively explain ~5.1% of self-reported personality variance (Stachl et al., 2022). Results are probabilistic indicators, not deterministic measures.482- Writing context strongly affects language: the same person writes differently in email vs. social media vs. academic papers. Scores reflect the writing context as much as the person.483- [Corpus-specific limitations from Step 1]484- [Confidence band acknowledgment: scores of X and Y overlap at their confidence intervals, meaning they may not be truly different]485- These results should NOT be used for clinical assessment, hiring decisions, or any evaluative purpose. They are intended solely for writing style characterization.486487## Population Baseline Comparison488- All scores are normed against a theoretical population mean of 50.489- Without a matched comparison corpus, absolute positions should be interpreted cautiously.490- The profile is most useful as a RELATIVE description (which traits are strongest/weakest for this author) rather than an absolute placement.491492## References493- Pennebaker, J.W. & King, L.A. (1999). Linguistic styles: Language use as an individual difference. *Journal of Personality and Social Psychology*, 77(6), 1296-1312.494- Yarkoni, T. (2010). Personality in 100,000 Words: A large-scale analysis of personality and word use among bloggers. *Journal of Research in Personality*, 44(3), 363-373.495- Stachl, C., et al. (2022). The kernel of truth in text-based personality assessment: A meta-analysis of the relations between the Big Five and LIWC. *Psychological Bulletin*.496- Hirsh, J.B. & Peterson, J.B. (2009). Personality and language use in self-narratives. *Journal of Research in Personality*, 43(3), 524-527.497- Boyd, R.L. & Pennebaker, J.W. (2017). Language-based personality: A new approach to personality in a digital world. *Current Opinion in Behavioral Sciences*, 18, 63-68.498- Tausczik, Y.R. & Pennebaker, J.W. (2010). The psychological meaning of words: LIWC and computerized text analysis methods. *Journal of Language and Social Psychology*, 29(1), 24-54.499```500501## Good Patterns502503- **Use validated marker lists** from meta-analytic research (Stachl et al. 2022, Yarkoni 2010) rather than intuition-based word lists504- **Report confidence intervals** on every trait score -- never present a point estimate without a band505- **Treat results as tendencies** ("the writing suggests moderate openness") not diagnoses ("this person is open")506- **Map traits to writing constraints** -- the practical output is a replicable writing profile, not a personality label507- **Compare against population baselines** -- raw marker frequencies without normalization are uninterpretable508- **Document corpus limitations** prominently, not as a buried footnote509- **Score all five traits** even when some are indeterminate -- an indeterminate score is information ("the data does not distinguish this trait")510- **Resolve trait conflicts explicitly** when mapping to writing constraints -- never silently drop conflicting evidence511512## Anti-Patterns513514| Anti-Pattern | Why It Fails | Instead |515|--------------|-------------|---------|516| Claiming diagnostic accuracy | Text-personality correlations max at r = .23; 95% of variance is NOT explained | Report correlations, confidence bands, and the "tendencies not diagnoses" framing |517| Using fewer than 1,000 words | Below 1,000 words, marker frequencies are dominated by noise | Require 1,000-word minimum; flag 1,000-3,000 as low confidence |518| Treating OCEAN scores as fixed personality | Scores reflect THIS corpus in THIS context at THIS time | Frame as "writing-derived trait indicators" not "personality scores" |519| Ignoring context effects | A professional email corpus will score low-Extraversion regardless of actual personality | Document context, flag single-context corpora, note which traits are most context-dependent |520| Using unvalidated word lists | Intuitive word lists may not correlate with actual personality traits | Use LIWC-validated categories or lists derived from published research |521| Conflating online writing with offline personality | Online self-presentation is curated and context-specific | Note that writing-derived profiles reflect presented identity, not private experience |522| Presenting scores without confidence bounds | A score of 72 means nothing without knowing it could be 57-87 | Always pair scores with confidence bands |523| Scoring only 1-2 traits | Partial profiles invite over-interpretation of the measured traits | Score all five; mark indeterminate traits as such |524| Binary trait classification | "Extraverted" vs "Introverted" loses the continuum | Use position labels (Low / Low-Average / Average / High-Average / High / Very High) |525| Ignoring the "kernel of truth" meta-analysis | Cherry-picking individual studies inflates expected accuracy | Anchor expectations to the meta-analytic effect sizes |526527## Boundaries528529**This skill SHOULD produce:**530- Trait position scores (0-100) for all five OCEAN dimensions with confidence bands531- Linguistic marker frequency tables showing evidence per trait532- Writing style constraints derived from trait positions533- Composite writing voice profile for style replication534- Explicit documentation of corpus limitations, confidence levels, and methodological caveats535- Written report at `docs/analysis/15-big-five-personality.md`536537**This skill should NOT:**538- Diagnose personality traits, disorders, or clinical conditions539- Claim clinical validity or psychometric equivalence with validated personality instruments (NEO-PI-R, BFI-2)540- Be used for hiring, screening, admissions, or any evaluative decision about a person541- Present scores without confidence bounds542- Ignore that writing context affects language (professional email vs. casual social media vs. creative writing)543- Claim accuracy beyond what meta-analytic evidence supports (~5% of self-reported variance explained)544- Produce a profile from fewer than 1,000 words545- Treat a single writing context as representative of whole personality546- Conflate "presented writing identity" with "actual personality"547548## Insufficient Data Handling549550```dot551digraph insufficient_data {552 rankdir=TB;553 node [shape=diamond, style=filled, fillcolor="#f0f0f0"];554555 start [label="Total word count?", shape=diamond];556 tiny [label="< 1,000 words", shape=box, fillcolor="#ffcccc"];557 small [label="1,000-3,000 words", shape=box, fillcolor="#fff3cc"];558 moderate [label="3,000-5,000 words", shape=box, fillcolor="#ffffcc"];559 good [label="5,000+ words", shape=box, fillcolor="#ccffcc"];560561 start -> tiny [label="< 1,000"];562 start -> small [label="1,000-3,000"];563 start -> moderate [label="3,000-5,000"];564 start -> good [label="5,000+"];565566 tiny_action [label="STOP: Report insufficient data.\nDo NOT compute trait scores.\nReport only raw marker counts.", shape=box, fillcolor="#ffcccc"];567 small_action [label="Compute scores with\nLOW CONFIDENCE flag on every trait.\nConfidence band: +/- 20-25 points.\nSkip writing constraint mapping.", shape=box, fillcolor="#fff3cc"];568 moderate_action [label="Full analysis.\nModerate confidence.\nBand: +/- 15 points.\nMap writing constraints with caveats.", shape=box, fillcolor="#ffffcc"];569 good_action [label="Full analysis pipeline.\nBand: +/- 10-12 points.\nFull writing constraint mapping.", shape=box, fillcolor="#ccffcc"];570571 tiny -> tiny_action;572 small -> small_action;573 moderate -> moderate_action;574 good -> good_action;575}576```577578| Condition | Action |579|-----------|--------|580| **Corpus < 1,000 words** | STOP. Do NOT compute trait scores. Report only: raw word count, language, and a statement that the corpus is too small for personality inference. List raw marker frequencies without interpreting them as trait indicators. |581| **Corpus 1,000-3,000 words** | Compute scores but flag EVERY trait as "low confidence." Use +/- 20-25 point confidence bands. Skip writing constraint mapping (too unreliable). Report scores as "preliminary indicators only." |582| **Corpus 3,000-5,000 words** | Full analysis with moderate confidence. Use +/- 15 point confidence bands. Map writing constraints but caveat that they reflect limited data. |583| **Corpus 5,000+ words** | Full analysis pipeline. Use +/- 10-12 point bands. Reliability improves marginally beyond 10,000 words due to inherent method limits. |584| **Single-context corpus** | Widen confidence bands by 5 points. Note prominently that trait scores reflect the writing context as much as the person. Extraversion and Agreeableness are most affected by context. |585| **Highly uniform topic** | All writing about one narrow topic (e.g., all game reviews) constrains vocabulary and tone. Openness and Conscientiousness scores are least reliable here. Flag in report. |586| **Multiple traits score 40-60** | If 3+ traits are in the 40-60 range, the corpus may lack sufficient personality signal. Report as "insufficient differentiation" rather than "average personality." Consider whether context uniformity is suppressing signal. |587| **All traits cluster on one side** | If all five traits score above 65 or below 35, check for a systematic bias (e.g., all positive/enthusiastic writing inflates E, A, and O simultaneously). Note the clustering and investigate whether context explains it. |588589## Common Mistakes590591| Mistake | Fix |592|---------|-----|593| Reporting "Extraversion: 73" without confidence band | Always report "73 +/- 15" or "73 (range: 58-88)" |594| Using OCEAN as a personality diagnosis | Frame as "writing-derived trait indicators reflecting linguistic patterns in this corpus" |595| Analyzing a corpus under 1,000 words | Stop and report insufficient data. Do not compute scores. |596| Treating a single-context corpus as personality ground truth | Flag single-context prominently; note which traits are most context-dependent |597| Scoring only the "interesting" traits | Score all five. Indeterminate is information, not absence. |598| Mapping writing constraints from low-confidence scores | Only map writing constraints when confidence is moderate or higher (3,000+ words) |599| Ignoring that I-pronoun frequency has multiple interpretations | High I-pronouns correlate with both Neuroticism AND depression AND self-awareness AND intimate writing style. Do not over-interpret. |600| Presenting the profile as stable/permanent | Personality traits are relatively stable, but linguistic expression of them varies by context, mood, and audience |601| Using the profile for evaluative judgments | This is a writing style tool, not a character assessment tool |602| Skipping the population baseline comparison | Without baseline comparison, raw scores are uninterpretable. Always note that 50 = theoretical population mean. |603604## References605606- Pennebaker, J.W. & King, L.A. (1999). Linguistic styles: Language use as an individual difference. *Journal of Personality and Social Psychology*, 77(6), 1296-1312.607- [Yarkoni, T. (2010). Personality in 100,000 Words. *Journal of Research in Personality*, 44(3), 363-373.](https://pmc.ncbi.nlm.nih.gov/articles/PMC2885844/)608- [Stachl, C., et al. (2022). The kernel of truth in text-based personality assessment: A meta-analysis. *Psychological Bulletin*.](https://research.tilburguniversity.edu/en/publications/the-kernel-of-truth-in-text-based-personality-assessment-a-meta-a)609- Hirsh, J.B. & Peterson, J.B. (2009). Personality and language use in self-narratives. *Journal of Research in Personality*, 43(3), 524-527.610- Boyd, R.L. & Pennebaker, J.W. (2017). Language-based personality: A new approach. *Current Opinion in Behavioral Sciences*, 18, 63-68.611- Tausczik, Y.R. & Pennebaker, J.W. (2010). The psychological meaning of words. *Journal of Language and Social Psychology*, 29(1), 24-54.612- [LIWC-22 Manual: Development and Psychometrics.](https://www.liwc.app/static/documents/LIWC-22%20Manual%20-%20Development%20and%20Psychometrics.pdf)613- [IBM Watson Personality Insights: Validation and Methodology.](https://developer.ibm.com/watson/blog/2016/08/31/ibm-watson-personality-insights-has-a-new-model-support-of-shorter-text-and-precision-improvement/)614- [Frontiers in Psychology: Linguistic measures of personality in group discussions (2022).](https://www.frontiersin.org/journals/psychology/articles/10.3389/fpsyg.2022.887616/full)