Psychological Text Analysis with Contextualized Construct Representation

How to use the CCR Platform

A guide to running a Contextualized Construct Representation (CCR) analysis: upload your texts, choose a psychological construct, and get per-text scores you can inspect, export, and reproduce. No coding required.

What the platform does

CCR measures how strongly a piece of text reflects a psychological construct (for example individualism, moral concern, depression, or gratitude) without relying on word counts or keyword lists. You provide a set of questionnaire-style items that define the construct - either from a validated scale in the built-in library, or your own. The platform embeds each item and each of your texts with a sentence-embedding language model, then scores every text by its semantic similarity (cosine) to the items. Higher similarity means the text more strongly reflects the construct.

The pipeline is based on Atari et al. (2023) and follows the reference ccr_wrapper implementation, so scores are comparable to the published method. Everything runs on this server: your text is never sent to a third-party AI service for embedding.

Accounts (optional, but recommended)

You can try a small analysis without signing in. A free account lifts the anonymous limits and, importantly, keeps your datasets and runs instead of deleting the upload after each analysis. Sign in from the top right (email and password, or Google where enabled).

Signed outFree account
Upload size5 MB50 MB
Rows per file200up to 50,000
Runs per day3, then sign inunlimited
Runs keptnone (upload deleted after each run)saved
AI-drafted itemsnot availableavailable (daily cap)

Sample datasets: try it without your own data

New to CCR and don't have a corpus handy? Download one of these ready-to-run example files, upload it in Step 1, and pick the suggested construct. They are small synthetic demo texts made by the lab for trying the platform, not research data.

DatasetWhat is in itGood to pair with
sample_corpus.csv About 60 short first-person texts about life satisfaction and wellbeing Search the library for Satisfaction With Life
moral_foundations_demo.csv About 40 texts expressing moral concern (mostly care and harm) Search for Care (MFQ-2)
large_demo.csv About 800 short everyday texts, a bigger corpus to feel real run times Any construct; try PANAS positive or negative affect
long_documents_demo.csv About 10 long multi-paragraph texts Any construct; useful for seeing the truncation warning

Each file has one text per row (a text column) and the platform detects the text column for you. When you choose a construct, prefer a validated scale from the library whenever one exists.

Running an analysis, step by step

  1. Create a project

    A project holds your datasets and runs. Name it after your study. Use the sidebar to switch between projects or create a new one.

  2. Upload your corpus (Step 1)

    Upload a CSV or Excel file with one text per row - tweets, essays, open-ended survey answers, transcripts. Extra columns (IDs, conditions, demographics) are fine; they pass through untouched into the results file. The platform suggests which column holds the text; confirm or change it. No corpus of your own yet? Start with a sample dataset.

  3. Choose your construct(s) (Step 2)

    Pick from the library of validated scales, or add your own. You can select several constructs (up to 10) to score them together in one run and see how they correlate in your texts. See Constructs below for all four ways to add one, including drafting items with AI.

  4. Pick a model and language (Step 3)

    Choose the embedding model and the corpus language. Start with MiniLM (the CCR reference model) for English. Scores are only comparable within the same model, never across model families. See Models.

  5. Run, and read the warnings first

    Press Run. When it finishes, read the amber warnings panel before anything else: it flags things like empty or duplicate rows, texts that were too short, texts longer than the model's window (truncated), or a mismatch between your corpus language and the model. Warnings never change your scores - they tell you how to read them.

  6. Inspect the results

    Each run shows a score distribution (histogram plus mean, SD, min, max), the per-item loadings (how each questionnaire item contributed), and the top- and bottom-scoring texts. If the top texts do not look like your construct, trust that instinct. Multi-construct runs add a correlation card showing the Pearson correlation between constructs across your texts.

  7. Export and reproduce

    Download the results CSV (your columns plus per-item similarities and the CCR score), the run metadata, and a script that reproduces the numbers on your own machine. See Exports and reproducibility.

Constructs: four ways to add one

A construct is a set of short questionnaire-style items. There are four ways to provide them:

Drafting construct items with AI

For a construct with no validated questionnaire, describe it (name plus a few sentences) and the platform drafts candidate items for you to review. This is a starting point, not a validated scale: you review, edit, and delete items before saving, and everything the construct touches is labeled "AI-generated - not validated" in the picker, in the results, and in the exported metadata.

DetailValue
ModelClaude Haiku 4.5
Prompt versionv1 (recorded on every draft, so a run's provenance names the exact instructions used)
Item styleFirst-person, positively-keyed statements only (no reverse-scored items in this version), plain language, one idea per item
Items per draft5 to 20 (default 10)
Daily limita per-account daily cap
Where it runsThe drafting model is a hosted language model (the construct name and description you type are sent to it). This is the only step that uses an external model; your uploaded corpus is embedded locally and is never sent anywhere.

The exact model name, provider, and prompt version shown above are read live from this instance, so they always match what actually drafts your items. The same details are stamped onto every saved AI construct and carried into run metadata and the reproduction script.

Read AI-drafted scores with caution. These items are drafted by a language model and have not been psychometrically validated. Review every item, remove weak ones, and prefer a validated scale from the library whenever one exists. A validation study (AI-drafted vs. validated scale items on the same texts) is planned before these are recommended for real analyses.

Exports and reproducibility

Every run is designed to be auditable and reproducible outside the platform. From the results page you can download:

Running the reproduction script

The script re-embeds your items and texts and recomputes the scores with the same model and settings, on any machine, with no access to this platform. It embeds the construct items verbatim from the run, so the numbers reproduce offline. From the script's header (which lists the exact commands with your run id and file name):

pip install -r requirements-repro_<run-id>.txt
python reproduce_analysis_<run-id>.py your_corpus.csv

The reproduced values match the exported CSV to within about 1e-5 with the real models. Because the script carries the model revision and the construct snapshot, it is also a durable record of exactly how a result was produced - useful for a methods section or a reviewer. If the run used AI-drafted items, the script and metadata carry that provenance too, so the caveat travels with the numbers.

Models available

Chosen on the Step 3 card. Larger models are slower and, the first time anyone selects one on this instance, take a couple of extra minutes to download before the run starts; after that they stay warm. Scores are comparable only within the same model.

ModelBest forNotes
MiniLM L6 v2 (default)English, general useFast; the CCR reference model. Start here.
E5 Large v2English, higher qualityStronger but noticeably slower.
Multilingual E5 Base50+ languagesUse for non-English corpora.
PsyEmbedding BERT / RoBERTa / GTE / E5 LargePsychological textLab fine-tunes for psychology research. English; heavier, so the first run downloads a larger model.

Your data and privacy

The embedding models run on this server - your uploaded text is never sent to a third-party AI service. The one exception is the optional AI item-drafting feature, where only the construct name and description you type (never your corpus) are sent to the drafting model. Signed-out uploads are deleted after each analysis; signed-in datasets and runs are kept until you delete them. Please avoid uploading sensitive or identifiable data.

Open-source disclaimer. This is open-source software: use at your own risk. It is provided "as is", without warranties or guarantees of accuracy, reliability, security, fitness for a particular purpose, or continued support. Users are responsible for validating outputs, protecting their data, and determining whether the software is appropriate for their intended use. The authors and contributors are not liable for losses or damages resulting from its use.

Questions or feedback

This platform is built and maintained by the Culture & Morality Lab (PI: Mohammad Atari) at the University of Massachusetts Amherst. For suggestions, questions, bugs, and ideas, reach the maintainer at devaanand@umass.edu.

↑ Top
Link copied