* 2. Include this script: * 3. Create charts with minimal configuration - colors are auto-applied! */ (function() { 'use strict'; // ========================================================================== // READ COLORS FROM CSS CUSTOM PROPERTIES // This ensures chart colors stay in sync with the theme // ========================================================================== /** * Get a CSS custom property value from :root */ function getCSSVar(name, fallback = '') { if (typeof getComputedStyle === 'undefined') return fallback; const value = getComputedStyle(document.documentElement).getPropertyValue(name).trim(); return value || fallback; } /** * Build palette from CSS custom properties (with fallbacks) */ function buildPaletteFromCSS() { return { // Primary brand colors dartmouthGreen: getCSSVar('--dartmouth-green', '#00693e'), textPrimary: getCSSVar('--text-primary', '#0a2518'), textSecondary: getCSSVar('--text-secondary', '#0a3d23'), // Chart colors (from CSS --chart-color-N variables) chartColors: [ getCSSVar('--chart-color-1', '#00693e'), getCSSVar('--chart-color-2', '#267aba'), getCSSVar('--chart-color-3', '#ffa00f'), getCSSVar('--chart-color-4', '#9d162e'), getCSSVar('--chart-color-5', '#8a6996'), getCSSVar('--chart-color-6', '#a5d75f'), getCSSVar('--chart-color-7', '#003c73'), getCSSVar('--chart-color-8', '#d94415'), getCSSVar('--chart-color-9', '#643c20'), getCSSVar('--chart-color-10', '#c4dd88'), getCSSVar('--chart-color-11', '#f5dc69'), getCSSVar('--chart-color-12', '#424141'), ], // Background colors (semi-transparent versions) chartBgColors: [ getCSSVar('--chart-bg-1', 'rgba(0, 105, 62, 0.5)'), getCSSVar('--chart-bg-2', 'rgba(38, 122, 186, 0.5)'), getCSSVar('--chart-bg-3', 'rgba(255, 160, 15, 0.5)'), getCSSVar('--chart-bg-4', 'rgba(157, 22, 46, 0.5)'), getCSSVar('--chart-bg-5', 'rgba(138, 105, 150, 0.5)'), getCSSVar('--chart-bg-6', 'rgba(165, 215, 95, 0.5)'), ], // Semantic colors positive: getCSSVar('--chart-positive', '#00693e'), negative: getCSSVar('--chart-negative', '#9d162e'), neutral: getCSSVar('--chart-neutral', '#424141'), highlight: getCSSVar('--chart-highlight', '#ffa00f'), // Grid and axis colors gridLight: getCSSVar('--chart-grid-light', 'rgba(0, 105, 62, 0.1)'), gridMedium: getCSSVar('--chart-grid-medium', 'rgba(0, 105, 62, 0.15)'), gridDark: getCSSVar('--chart-grid-dark', 'rgba(0, 105, 62, 0.2)'), axisColor: getCSSVar('--chart-axis-color', '#0a2518'), // Font fontFamily: getCSSVar('--chart-font-family', "'Avenir LT Std', 'Avenir', 'Avenir Next', -apple-system, BlinkMacSystemFont, sans-serif"), }; } // Initialize palette (will be populated when DOM is ready) let CDL_PALETTE = null; // For convenience, expose primary chart colors array let CHART_COLORS = null; // ========================================================================== // FONT CONFIGURATION // Responsive font sizes based on typical Marp slide dimensions (1280x720) // ========================================================================== const FONT_CONFIG = { sizes: { title: 22, // Chart title subtitle: 18, // Subtitle legend: 16, // Legend labels axisTitle: 18, // Axis titles axisTicks: 16, // Axis tick labels tooltip: 14, // Tooltip text dataLabels: 14, // Data labels on charts }, weight: { normal: 400, medium: 500, bold: 600, }, }; // ========================================================================== // HELPER FUNCTIONS // ========================================================================== /** * Ensure palette is initialized */ function ensurePalette() { if (!CDL_PALETTE) { CDL_PALETTE = buildPaletteFromCSS(); CHART_COLORS = CDL_PALETTE.chartColors; } return CDL_PALETTE; } /** * Get color for a dataset at given index * Cycles through palette if more datasets than colors */ function getColor(index) { ensurePalette(); return CHART_COLORS[index % CHART_COLORS.length]; } /** * Get color with alpha transparency */ function getColorWithAlpha(color, alpha) { // Handle hex colors if (color.startsWith('#')) { const r = parseInt(color.slice(1, 3), 16); const g = parseInt(color.slice(3, 5), 16); const b = parseInt(color.slice(5, 7), 16); return `rgba(${r}, ${g}, ${b}, ${alpha})`; } // Handle rgba colors if (color.startsWith('rgba')) { return color.replace(/[\d.]+\)$/, `${alpha})`); } return color; } /** * Generate colors for all datasets in chart data * Automatically assigns colors if not specified */ function autoAssignColors(data, chartType) { if (!data || !data.datasets) return data; data.datasets.forEach((dataset, index) => { const baseColor = getColor(index); // Only assign colors if not already specified switch (chartType) { case 'bar': case 'horizontalBar': if (!dataset.backgroundColor) { dataset.backgroundColor = baseColor; } if (!dataset.borderColor) { dataset.borderColor = baseColor; } if (dataset.borderWidth === undefined) { dataset.borderWidth = 2; } break; case 'line': if (!dataset.borderColor) { dataset.borderColor = baseColor; } if (!dataset.backgroundColor) { dataset.backgroundColor = getColorWithAlpha(baseColor, 0.1); } if (dataset.borderWidth === undefined) { dataset.borderWidth = 3; } if (dataset.pointRadius === undefined) { dataset.pointRadius = 6; } if (!dataset.pointBackgroundColor) { dataset.pointBackgroundColor = baseColor; } if (dataset.tension === undefined) { dataset.tension = 0.3; } break; case 'scatter': case 'bubble': if (!dataset.backgroundColor) { dataset.backgroundColor = baseColor; } if (!dataset.borderColor) { dataset.borderColor = baseColor; } if (dataset.pointRadius === undefined) { dataset.pointRadius = 15; } if (dataset.pointHoverRadius === undefined) { dataset.pointHoverRadius = 18; } break; case 'pie': case 'doughnut': case 'polarArea': // For pie charts, we need multiple colors for one dataset if (!dataset.backgroundColor) { const numItems = dataset.data ? dataset.data.length : 6; dataset.backgroundColor = []; for (let i = 0; i < numItems; i++) { dataset.backgroundColor.push(getColor(i)); } } if (!dataset.borderColor) { dataset.borderColor = '#d8d8d8'; // Slide background } if (dataset.borderWidth === undefined) { dataset.borderWidth = 2; } break; case 'radar': if (!dataset.borderColor) { dataset.borderColor = baseColor; } if (!dataset.backgroundColor) { dataset.backgroundColor = getColorWithAlpha(baseColor, 0.2); } if (dataset.borderWidth === undefined) { dataset.borderWidth = 2; } if (dataset.pointRadius === undefined) { dataset.pointRadius = 4; } if (!dataset.pointBackgroundColor) { dataset.pointBackgroundColor = baseColor; } break; default: // Generic color assignment if (!dataset.backgroundColor) { dataset.backgroundColor = baseColor; } if (!dataset.borderColor) { dataset.borderColor = baseColor; } } }); return data; } // ========================================================================== // CHART.JS GLOBAL DEFAULTS // ========================================================================== function applyGlobalDefaults() { if (typeof Chart === 'undefined') { console.warn('Chart.js not loaded. chart-defaults.js requires Chart.js to be loaded first.'); return false; } // Ensure palette is loaded from CSS const palette = ensurePalette(); // Font defaults Chart.defaults.font.family = palette.fontFamily; Chart.defaults.font.size = FONT_CONFIG.sizes.axisTicks; Chart.defaults.color = palette.textPrimary; // Responsive defaults Chart.defaults.responsive = true; Chart.defaults.maintainAspectRatio = false; // Animation (subtle) Chart.defaults.animation.duration = 400; // Plugin defaults // Legend Chart.defaults.plugins.legend.labels.font = { family: palette.fontFamily, size: FONT_CONFIG.sizes.legend, weight: FONT_CONFIG.weight.normal, }; Chart.defaults.plugins.legend.labels.color = palette.textPrimary; Chart.defaults.plugins.legend.labels.usePointStyle = true; Chart.defaults.plugins.legend.labels.padding = 20; // Title Chart.defaults.plugins.title.font = { family: palette.fontFamily, size: FONT_CONFIG.sizes.title, weight: FONT_CONFIG.weight.medium, }; Chart.defaults.plugins.title.color = palette.textPrimary; // Tooltip Chart.defaults.plugins.tooltip.backgroundColor = palette.textPrimary; Chart.defaults.plugins.tooltip.titleFont = { family: palette.fontFamily, size: FONT_CONFIG.sizes.tooltip, weight: FONT_CONFIG.weight.medium, }; Chart.defaults.plugins.tooltip.bodyFont = { family: palette.fontFamily, size: FONT_CONFIG.sizes.tooltip, }; Chart.defaults.plugins.tooltip.cornerRadius = 4; Chart.defaults.plugins.tooltip.padding = 10; // Scale defaults (for cartesian charts) // These need to be applied per-scale type const scaleDefaults = { grid: { color: palette.gridLight, lineWidth: 1, }, border: { color: palette.gridDark, width: 1, }, ticks: { font: { family: palette.fontFamily, size: FONT_CONFIG.sizes.axisTicks, }, color: palette.textPrimary, }, title: { font: { family: palette.fontFamily, size: FONT_CONFIG.sizes.axisTitle, weight: FONT_CONFIG.weight.normal, }, color: palette.textPrimary, }, }; // Apply scale defaults to linear scale if (Chart.defaults.scales && Chart.defaults.scales.linear) { if (Chart.defaults.scales.linear.grid) Object.assign(Chart.defaults.scales.linear.grid, scaleDefaults.grid); if (Chart.defaults.scales.linear.border) Object.assign(Chart.defaults.scales.linear.border, scaleDefaults.border); if (Chart.defaults.scales.linear.ticks) Object.assign(Chart.defaults.scales.linear.ticks, scaleDefaults.ticks); if (Chart.defaults.scales.linear.title) Object.assign(Chart.defaults.scales.linear.title, scaleDefaults.title); } // Apply scale defaults to category scale if (Chart.defaults.scales && Chart.defaults.scales.category) { if (Chart.defaults.scales.category.grid) Object.assign(Chart.defaults.scales.category.grid, scaleDefaults.grid); if (Chart.defaults.scales.category.border) Object.assign(Chart.defaults.scales.category.border, scaleDefaults.border); if (Chart.defaults.scales.category.ticks) Object.assign(Chart.defaults.scales.category.ticks, scaleDefaults.ticks); if (Chart.defaults.scales.category.title) Object.assign(Chart.defaults.scales.category.title, scaleDefaults.title); } // Apply scale defaults to logarithmic scale if (Chart.defaults.scales && Chart.defaults.scales.logarithmic) { if (Chart.defaults.scales.logarithmic.grid) Object.assign(Chart.defaults.scales.logarithmic.grid, scaleDefaults.grid); if (Chart.defaults.scales.logarithmic.border) Object.assign(Chart.defaults.scales.logarithmic.border, scaleDefaults.border); if (Chart.defaults.scales.logarithmic.ticks) Object.assign(Chart.defaults.scales.logarithmic.ticks, scaleDefaults.ticks); if (Chart.defaults.scales.logarithmic.title) Object.assign(Chart.defaults.scales.logarithmic.title, scaleDefaults.title); } // Apply scale defaults to radial scale (for radar charts) if (Chart.defaults.scales && Chart.defaults.scales.radialLinear) { if (Chart.defaults.scales.radialLinear.grid) Chart.defaults.scales.radialLinear.grid.color = palette.gridLight; if (Chart.defaults.scales.radialLinear.angleLines) Chart.defaults.scales.radialLinear.angleLines.color = palette.gridMedium; if (Chart.defaults.scales.radialLinear.pointLabels) { Chart.defaults.scales.radialLinear.pointLabels.font = { family: palette.fontFamily, size: FONT_CONFIG.sizes.axisTicks, }; Chart.defaults.scales.radialLinear.pointLabels.color = palette.textPrimary; } } return true; } // ========================================================================== // CHART WRAPPER FOR AUTO-STYLING // ========================================================================== /** * Wrap the Chart constructor to automatically apply CDL styling */ function wrapChartConstructor() { if (typeof Chart === 'undefined') return; const OriginalChart = Chart; // Create a wrapper that auto-applies colors window.Chart = function(ctx, config) { // Auto-assign colors if not specified if (config && config.data) { config.data = autoAssignColors(config.data, config.type); } // Merge default options for specific chart types if (config && config.options) { config.options = applyChartTypeDefaults(config.type, config.options); } // Call original constructor return new OriginalChart(ctx, config); }; // Copy static properties and methods Object.setPrototypeOf(window.Chart, OriginalChart); Object.assign(window.Chart, OriginalChart); // Preserve the prototype chain window.Chart.prototype = OriginalChart.prototype; } /** * Apply chart-type specific defaults */ function applyChartTypeDefaults(chartType, userOptions) { const options = { ...userOptions }; switch (chartType) { case 'bar': case 'horizontalBar': // Bar chart defaults if (!options.scales) options.scales = {}; if (!options.scales.x) options.scales.x = {}; if (!options.scales.y) options.scales.y = {}; // Hide x-axis grid for cleaner look if (options.scales.x.grid === undefined) { options.scales.x.grid = { display: false }; } break; case 'line': // Line chart defaults if (!options.interaction) { options.interaction = { intersect: false, mode: 'index' }; } break; case 'pie': case 'doughnut': // Pie/doughnut defaults if (!options.plugins) options.plugins = {}; if (options.plugins.legend === undefined) { const palette = ensurePalette(); options.plugins.legend = { position: 'right', labels: { font: { family: palette.fontFamily, size: FONT_CONFIG.sizes.legend, }, color: palette.textPrimary, padding: 15, }, }; } break; case 'radar': // Radar chart defaults - keep as-is, scale defaults applied globally break; case 'scatter': case 'bubble': // Scatter/bubble defaults if (!options.scales) options.scales = {}; if (!options.scales.x) options.scales.x = {}; if (!options.scales.y) options.scales.y = {}; break; } return options; } // ========================================================================== // CONVENIENCE FUNCTIONS FOR USERS // Exposed on window.CDLChart for easy access // ========================================================================== window.CDLChart = { // Color palette access (getters to ensure lazy initialization) get colors() { return ensurePalette().chartColors; }, get palette() { return ensurePalette(); }, // Get specific color by index getColor: getColor, // Get color with transparency getColorWithAlpha: getColorWithAlpha, // Get array of colors for a specific count getColors: function(count) { ensurePalette(); const result = []; for (let i = 0; i < count; i++) { result.push(getColor(i)); } return result; }, // Font configuration fonts: FONT_CONFIG, // Quick chart creation helpers // These create minimal config that auto-applies all styling /** * Create a simple bar chart * @param {string} canvasId - Canvas element ID * @param {string[]} labels - X-axis labels * @param {number[]} data - Data values * @param {object} options - Optional overrides */ bar: function(canvasId, labels, data, options = {}) { return new Chart(document.getElementById(canvasId), { type: 'bar', data: { labels: labels, datasets: [{ data: data }], }, options: { plugins: { legend: { display: false } }, ...options, }, }); }, /** * Create a simple line chart * @param {string} canvasId - Canvas element ID * @param {string[]} labels - X-axis labels * @param {Array} datasets - Array of {label, data} objects * @param {object} options - Optional overrides */ line: function(canvasId, labels, datasets, options = {}) { return new Chart(document.getElementById(canvasId), { type: 'line', data: { labels: labels, datasets: datasets.map(ds => ({ label: ds.label, data: ds.data, fill: ds.fill !== undefined ? ds.fill : true, })), }, options: options, }); }, /** * Create a simple pie chart * @param {string} canvasId - Canvas element ID * @param {string[]} labels - Slice labels * @param {number[]} data - Data values * @param {object} options - Optional overrides */ pie: function(canvasId, labels, data, options = {}) { return new Chart(document.getElementById(canvasId), { type: 'pie', data: { labels: labels, datasets: [{ data: data }], }, options: options, }); }, /** * Create a simple scatter chart * @param {string} canvasId - Canvas element ID * @param {Array} datasets - Array of {label, data: [{x, y}]} objects * @param {object} options - Optional overrides */ scatter: function(canvasId, datasets, options = {}) { return new Chart(document.getElementById(canvasId), { type: 'scatter', data: { datasets: datasets.map(ds => ({ label: ds.label, data: ds.data, })), }, options: options, }); }, /** * Create a doughnut chart * @param {string} canvasId - Canvas element ID * @param {string[]} labels - Slice labels * @param {number[]} data - Data values * @param {object} options - Optional overrides */ doughnut: function(canvasId, labels, data, options = {}) { return new Chart(document.getElementById(canvasId), { type: 'doughnut', data: { labels: labels, datasets: [{ data: data }], }, options: options, }); }, /** * Create a radar chart * @param {string} canvasId - Canvas element ID * @param {string[]} labels - Axis labels * @param {Array} datasets - Array of {label, data} objects * @param {object} options - Optional overrides */ radar: function(canvasId, labels, datasets, options = {}) { return new Chart(document.getElementById(canvasId), { type: 'radar', data: { labels: labels, datasets: datasets.map(ds => ({ label: ds.label, data: ds.data, })), }, options: options, }); }, }; // ========================================================================== // INITIALIZATION // ========================================================================== function initialize() { // Wait for Chart.js to be available if (typeof Chart !== 'undefined') { applyGlobalDefaults(); wrapChartConstructor(); console.log('CDL Chart defaults applied successfully.'); return true; } else { // Chart.js not yet loaded - wait and retry let retries = 0; const maxRetries = 50; // 5 seconds max wait const checkInterval = setInterval(function() { retries++; if (typeof Chart !== 'undefined') { clearInterval(checkInterval); applyGlobalDefaults(); wrapChartConstructor(); console.log('CDL Chart defaults applied successfully (after waiting for Chart.js).'); } else if (retries >= maxRetries) { clearInterval(checkInterval); console.warn('Chart.js not found after waiting. CDL Chart defaults not applied.'); } }, 100); return false; } } // Initialize IMMEDIATELY - this must run BEFORE any chart creation scripts // Chart.js CDN should be loaded before this script initialize(); })();
PSYC 51.07: Models of Language and Communication - Week 4

Cognitive Models of Semantic Representation

Lecture 14: How Humans Represent Meaning

PSYC 51.07: Models of Language and Communication - Week 4

Winter 2026

Winter 2026
PSYC 51.07: Models of Language and Communication - Week 4

Today's Lecture 📋

  1. 🧠 Human vs. Computational Semantics
  2. 🔬 Cognitive Theories of Meaning
  3. 🌐 Embodied & Grounded Cognition
  4. 📊 Semantic Similarity: What Does It Mean?
  5. 🔍 Empirical Evidence from Cognitive Science
  6. 🤖 Bridging the Gap: Models Meet Minds

Goal: Understand what computational models are really learning

Winter 2026
PSYC 51.07: Models of Language and Communication - Week 4

The Fundamental Question 🤔

What does "meaning" actually mean?

Computational View:

  • Vectors in high-dimensional space
  • Learned from text co-occurrence
  • Distributional patterns
  • Statistical relationships
  • "You shall know a word by the company it keeps"

Human View:

  • Sensory experiences
  • Emotional associations
  • Physical grounding
  • Social context
  • Multimodal integration
  • Embodied understanding

This lecture explores the relationship between computational and cognitive semantics

Winter 2026
PSYC 51.07: Models of Language and Communication - Week 4

How Do Humans Represent Meaning? 🧠

Example: The word "coffee"

What comes to YOUR mind?

  • Visual: brown liquid, mug, steam, beans
  • Olfactory: aroma, roasted smell
  • Gustatory: bitter taste, smooth texture
  • Tactile: hot, warm cup, liquid
  • Auditory: brewing sounds, pouring
  • Motor: lifting cup, drinking motion
  • Contextual: morning routine, work, café
  • Emotional: comfort, alertness, pleasure
  • Social: conversations, meetings
  • Cultural: Starbucks, espresso, traditions

Word2Vec representation:

coffee = [0.23, -0.45, 0.67, 0.12, -0.89, ...]

(300 numbers learned from text)

What's missing?

  • No sensory grounding
  • No embodied experience
  • No emotional content
  • No perceptual features
  • No action affordances
  • Purely linguistic
The Grounding Problem

Computational models lack the rich, multimodal, embodied understanding that humans have.

Winter 2026
PSYC 51.07: Models of Language and Communication - Week 4

The Symbol Grounding Problem 🔗

Harnad (1990): Can symbols have intrinsic meaning?

The Chinese Room (Searle, 1980):


1Input:  你好吗?
2
3[Rule Book: If see 你好吗
4            output 我很好]
5
6Output: 我很好
7
8Correct response! But no
9understanding of Chinese.

Analogy to LLMs:


1Input:  "Is a penguin a bird?"
2
3[Pattern: "X is a bird" often
4 follows penguins in text]
5
6Output: "Yes, a penguin is a bird"
7
8Correct! But does it "know" birds?

Symbol Systems:

  • Symbols refer to other symbols
  • Purely syntactic manipulation
  • No connection to world

Grounded Systems:

  • Symbols connected to perception
  • A child learns "dog" by:
    • SEEING dogs
    • PETTING dogs
    • HEARING barking
    • Being LICKED by dogs

The word "dog" is grounded in experience!

References: Searle (1980). "Minds, Brains, and Programs"; Harnad (1990). "The Symbol Grounding Problem"

Winter 2026
PSYC 51.07: Models of Language and Communication - Week 4

Embodied Cognition Theory 🏃

Meaning arises from bodily experience and sensorimotor interaction

Key Principles:

  1. Embodiment: Cognition shaped by body
  2. Situatedness: Meaning context-dependent
  3. Enactivism: Knowing through doing
  4. Grounding: Concepts tied to perception/action

Neuroscience Evidence:


1Reading "kick the ball":
2→ Motor cortex activates
3→ Leg area specifically!
4
5Reading "pick up the cup":
6→ Hand area activates
7→ Even without moving!

Conceptual Metaphors (Lakoff & Johnson):


1Physical → Abstract mapping:
2
3"WARM personality" ← holding warm drink
4                     primes positive judgments!
5
6"HIGH status" ← up = good, down = bad
7               (heads held high)
8
9"GRASPING an idea" ← physical grasping
10                     simulated mentally
11
12"Heavy heart" ← weight = emotional burden

These metaphors are NOT in Word2Vec!
Models learn word patterns, not embodied experience.

Reference: Barsalou (2008). "Grounded Cognition"

Winter 2026
PSYC 51.07: Models of Language and Communication - Week 4

The Distributional Hypothesis Revisited 📖

"You shall know a word by the company it keeps"

--- J.R. Firth (1957)

Strong version: Word meaning IS distributional patterns

Weak version: Distributional patterns REFLECT meaning

Supports:

  • Works remarkably well in practice
  • Captures semantic similarity
  • Enables analogical reasoning
  • Scales to huge vocabularies
  • Unsupervised learning
  • Aligned with usage-based linguistics

Limitations:

  • Correlation causation
  • Lacks perceptual grounding
  • No embodied understanding
  • Missing common sense
  • Can't handle novel situations
  • Reflects training data biases
Key Question

Is distributional semantics sufficient for meaning, or just a useful approximation?

Reference: Boleda (2020). "Distributional Semantics and Linguistic Theory"

Winter 2026
PSYC 51.07: Models of Language and Communication - Week 4

What Does "Semantic Similarity" Really Mean? 🔍

Different types of similarity:

Taxonomic (IS-A):


1dog ↔ cat: Both are animals
2         Similarity: HIGH

Thematic (GOES-WITH):


1dog ↔ leash: Co-occur in events
2            Relatedness: HIGH
3            Similarity: LOW!

Test Yourself:


1Which is more SIMILAR to "coffee"?
2A) tea      ← Same category (beverages)
3B) cup      ← Co-occurs (thematic)
4
5Answer: A (tea) is more SIMILAR
6        B (cup) is more RELATED

What Word2Vec Says:


1# Word2Vec often gets this wrong!
2model.similarity('coffee', 'cup')   # 0.65
3model.similarity('coffee', 'tea')   # 0.62
4
5# Cup ranked higher due to co-occurrence!
6# But tea is categorically more similar

SimLex-999 vs WordSim-353:

Pair SimLex WordSim
car-auto 0.96 0.92
car-road 0.23 0.73

SimLex measures true SIMILARITY.
WordSim measures RELATEDNESS.

Models score better on WordSim!

Reference: Hill et al. (2015). "SimLex-999: Evaluating Semantic Models with Genuine Similarity Estimation"

Winter 2026
PSYC 51.07: Models of Language and Communication - Week 4

Semantic Projection: Recovering Human Knowledge 🔬

Grand et al. (2022): Can we extract human-like features from embeddings?

The Experiment:

  1. Collect human ratings on perceptual features
    • Is it edible?
  • Is it heavy?
  • Is it alive?
  • Can you hold it?
  1. Train linear projections from word embeddings
  2. Test if embeddings predict human ratings

Key Findings:

  • Embeddings encode surprisingly rich knowledge
  • Can predict perceptual features
  • Even vision and motor properties!
  • Better with larger models

1$[0.23, -0.45, ..., 0.12] -> Perceptual Features -> Size: 0.7 -> Edible: 0.1 -> Human -> Ratings

Interpretation:

  • Text co-occurrence captures real-world properties
  • Indirect grounding through language
  • But still not true perceptual grounding

Reference: Grand et al. (2022). "Semantic projection recovers rich human knowledge of multiple object features from word embeddings"

Winter 2026
PSYC 51.07: Models of Language and Communication - Week 4

Multimodal Models: Bridging the Gap 🌉

Combining language with perception

Vision-Language Models:

  • CLIP (OpenAI)
  • ALIGN (Google)
  • Flamingo (DeepMind)
  • GPT-4V (OpenAI)

Key Idea:

  • Learn joint embedding space
  • Text and images map to same space
  • Enables cross-modal understanding
  • Grounds language in vision

Training:

  • Image-caption pairs
  • Contrastive learning
  • Matching images to descriptions
  • Large-scale (400M+ pairs)

1Vision -> Encoder -> Text -> Encoder -> Similar!

Benefits:

  • Visual grounding
  • Zero-shot classification
  • Better generalization
  • More "human-like"

Reference: Radford et al. (2021). "Learning Transferable Visual Models From Natural Language Supervision" (CLIP)

Winter 2026
PSYC 51.07: Models of Language and Communication - Week 4

Conceptual Spaces Theory 🌌

Gärdenfors (2000): Meaning as geometry

Key Ideas:

  • Concepts represented in quality dimensions
  • Dimensions: color, size, temperature, etc.
  • Each dimension has a metric
  • Concepts are regions in space
  • Similarity = geometric proximity

Example: Colors

  • Hue, saturation, brightness
  • Natural categories (red, blue, green)
  • Fuzzy boundaries
  • Prototypes at centers

Relation to Embeddings:

  • Similar geometric structure
  • But learned dimensions
  • Not interpretable qualities
  • No grounding in perception

Reference: Gärdenfors (2000). "Conceptual Spaces: The Geometry of Thought"

Winter 2026
PSYC 51.07: Models of Language and Communication - Week 4

Lexical Semantic Theories 📚

How do linguists think about word meaning?

1. Feature-Based:

  • Words = bundles of features
  • bachelor = [+human, +male, +adult, -married]
  • Compositional
  • Logical

2. Prototype Theory:

  • Categories have best examples
  • Robin is a prototypical bird
  • Penguin is peripheral
  • Graded membership

3. Frame Semantics:

  • Words evoke conceptual frames
  • "Buy" activates commerce frame
  • Buyer, seller, goods, money
  • FrameNet resource

4. Construction Grammar:

  • Meaning from form-function pairings
  • Idioms, patterns
  • Usage-based

5. Word Sense Disambiguation:

  • Words have multiple senses
  • WordNet: hierarchical ontology
  • Bank (financial), Bank (riverside)
Question

Which theories align with distributional models?

Answer: Mostly usage-based views (Construction Grammar, Prototype Theory)

Struggle with: Feature analysis, Frame semantics

References: Fillmore (1982). "Frame Semantics"; Rosch (1975). "Cognitive Representations of Semantic Categories"

Winter 2026
PSYC 51.07: Models of Language and Communication - Week 4

Empirical Evidence from Neuroscience 🧬

What does the brain tell us about semantic representation?

fMRI Studies:

  • Can predict brain activity from word embeddings
  • Semantic information distributed across cortex
  • Different regions for different features
  • Temporal lobe: objects
  • Motor cortex: actions
  • Visual cortex: visual features

Findings:

  • Word2Vec correlates with neural patterns
  • But: imperfect match
  • Human brain uses multimodal integration
  • Language areas + sensory areas

Brain vs. Model Representations:

Distributed
Hierarchical
Context-sensitive ✓ (BERT)
Grounded
Fast

Key Insight:

  • Models capture some aspects
  • But miss crucial grounding
  • Convergent representation learning?
  • Or fundamentally different?

References: Mitchell et al. (2008). "Predicting Human Brain Activity Associated with the Meanings of Nouns"; Huth et al. (2016). "Natural speech reveals the semantic maps that tile human cerebral cortex"

Winter 2026
PSYC 51.07: Models of Language and Communication - Week 4

The "Stochastic Parrots" Debate 🦜

Bender et al. (2021): On the Dangers of Stochastic Parrots

The Argument:

  • LLMs learn form, not meaning
  • "Stochastic parrots" - repeating patterns
  • No understanding of world
  • No communicative intent
  • Risk: Mistaking fluency for understanding

Evidence:

  • Fail on simple reasoning
  • Sensitive to phrasing
  • Hallucinate facts
  • No common sense
  • Brittle to adversarial inputs

Counter-Arguments:

  • Emergent capabilities at scale
  • Performance on complex tasks
  • Transfer to new domains
  • Maybe understanding = prediction?
  • Pragmatic success criterion
The Core Question

Can meaning arise from form alone?

Or do we need grounding in:

  • Perception?
  • Action?
  • Social interaction?
  • Physical embodiment?

References: Bender & Koller (2020). "Climbing towards NLU"; Bender et al. (2021). "On the Dangers of Stochastic Parrots"

Winter 2026
PSYC 51.07: Models of Language and Communication - Week 4

Common Sense Reasoning 🤯

What humans know but models don't

Physical Intuition Failures:


1Q: "Can you fit an elephant
2    in a refrigerator?"
3
4GPT-3: "Yes, if you open the
5       door wide enough..."

Winograd Schema (reasoning):


1"The trophy doesn't fit in the
2 brown suitcase because it is
3 too [small/large]."
4
5What does "it" refer to?
6- "small" → suitcase
7- "large" → trophy
8
9Requires world knowledge!

Social Intuition Failures:


1Q: "John told Mary he loved her.
2    How did Mary feel?"
3
4Depends on context:
5- First date? → Surprised/happy
6- After argument? → Relieved
7- Unwanted? → Uncomfortable
8
9Models miss social nuance!

Why Models Struggle:

  • Physical/social knowledge rarely stated
  • Assumed as background knowledge
  • Requires embodied experience
  • Needs causal reasoning
Winter 2026
PSYC 51.07: Models of Language and Communication - Week 4

Compositionality: Phrases and Sentences 🧩

How do we combine word meanings?

The Problem:


1# Vector math doesn't work!
2vec("hot") + vec("dog")  vec("hot dog")
3
4# "hot dog" = food item
5# "hot" + "dog" = warm canine
6
7# Same issue:
8vec("red") + vec("herring")  vec("red herring")
9# red herring = distraction, not a fish!

Non-compositional Phrases:

  • Kick the bucket (= die)
  • Spill the beans (= reveal secret)
  • Break a leg (= good luck)

What Transformers Learn:


1Input: "break a leg"
2
3Attention sees this phrase
4often in "good luck" contexts
5
6Output: idiomatic meaning
7
8But fails on novel combinations!

The Negation Problem:


1# BERT struggles with negation
2sent1 = "The movie was good"
3sent2 = "The movie was not good"
4
5# Embeddings are very similar!
6# "not" should flip the meaning
7cosine_sim(sent1, sent2)  0.85
Winter 2026
PSYC 51.07: Models of Language and Communication - Week 4

Grand Discussion 💬

Do large language models "understand" language?

Arguments FOR:

  • Solve complex tasks
  • Generalize to new domains
  • Show emergent capabilities
  • Capture linguistic structure
  • Pragmatic criterion: if it works...
  • Maybe understanding = prediction
  • Human understanding also imperfect

"The question is not whether machines think, but whether they behave intelligently" - Turing

Arguments AGAINST:

  • No grounding in reality
  • No embodied experience
  • No intentionality
  • Brittle, exploit shortcuts
  • Hallucinate confidently
  • No causal reasoning
  • Missing common sense
  • Form without meaning

"Understanding requires grounding in perception and action" - Embodied cognition

Perhaps the wrong question?

Instead of "Do they understand?", ask: What do they represent? How does it differ from humans? What are the limits?

Winter 2026
PSYC 51.07: Models of Language and Communication - Week 4

Summary 🎯

What we learned today:

  1. Symbol Grounding: Computational models lack perceptual grounding
  2. Embodied Cognition: Human meaning tied to bodily experience
  3. Distributional Semantics: Powerful but incomplete theory
  4. Semantic Similarity: Multiple types, models capture some
  5. Empirical Evidence: Models align with neural patterns but miss multimodality
  6. Common Sense: Models struggle with physical and social reasoning
  7. Compositionality: Non-literal language remains challenging

The gap between computation and cognition remains, but we're making progress!

Winter 2026
PSYC 51.07: Models of Language and Communication - Week 4

Key References 📚

Foundational Papers:

  • Searle, J. (1980). "Minds, Brains, and Programs"
  • Harnad, S. (1990). "The Symbol Grounding Problem"
  • Barsalou, L. (2008). "Grounded Cognition"
  • Gärdenfors, P. (2000). "Conceptual Spaces: The Geometry of Thought"

Distributional Semantics:

  • Firth, J.R. (1957). "A Synopsis of Linguistic Theory"
  • Boleda, G. (2020). "Distributional Semantics and Linguistic Theory"
  • Hill et al. (2015). "SimLex-999"

Critical Perspectives:

  • Bender & Koller (2020). "Climbing towards NLU"
  • Bender et al. (2021). "On the Dangers of Stochastic Parrots"
Winter 2026
PSYC 51.07: Models of Language and Communication - Week 4

Questions? 🙋

Next Week:

Advanced Topics in Language Models

Scaling, emergent abilities, and the future of NLP

Winter 2026

Flowchart - see original for structure