From thought to language: Comparing schizophrenia spectrum disorders and Wernicke's aphasia with machine learning and LLMs.
The 9 matches
- [1] § Methods › Feature extraction › Syntactic features ↔ udstyle.py, lines 1–33 · score 0.97 · Lexical density, Normalized dependency distance, clause length, nominal modifiers, adjacent dependencies, complexity metrics
- [2] § Methods › Feature extraction › Syntactic features ↔ udstyle.py, lines 1–33 · score 0.62 · tag frequencies, complexity metrics, UDstyle, POS, lexical
- [3] § Results › Supervised machine learning using extracted features › Feature importance ↔ udstyle.py, lines 256–345 · score 0.59 · possessive nominal modifier, conjunction, pronoun, nmod, nouns, sentence
- [4] § Methods › Models for classification › Zero-shot classification. ↔ zeroshot/zeroshot.py, lines 1–48 · score 0.59 · Mistral Small, system prompts, instruction, models, transcript, classification
- [5] § Methods › Models for classification › Zero-shot classification. ↔ zeroshot/zeroshotPatient.py, lines 1–37 · score 0.58 · Mistral Small, system prompts, instruction, models, transcript, classification
- [6] § Methods › Feature extraction › Semantic features › Embeddings and cosine similarity. ↔ semantic.ipynb, lines 39–70 · score 0.57 · sentence embedding, 1–3, split, SBERT, variance, window
- [7] § Methods › Data and preprocessing ↔ zeroshot/zeroshot.py, lines 51–92 · score 0.57 · important event, picture descriptions, cat, match, HCA, transcripts
- [8] § Methods › Data and preprocessing ↔ zeroshot/zeroshotMinimal.py, lines 47–89 · score 0.57 · important event, picture descriptions, cat, match, HCA, transcripts
- [9] § Methods › Feature extraction › Semantic features › Embeddings and cosine similarity. ↔ semantic.ipynb, lines 72–80 · score 0.56 · pre trained, Word embedding, fastText, vectors
Paper
Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
Python · 394 lines · 14 KB · GPL-3.0 · 3 matches
- """Compute complexity metrics from Universal Dependencies.
- Usage: python3 udstyle.py [OPTIONS] FILE...
- --parse=LANG parse texts with Stanza; provide 2 letter language code
- --output=FILENAME write result to a tab-separated file.
- --persentence report per sentence results, not mean per document
- Reported metrics:
- - LEN: mean sentence length in words (excluding punctuation).
- - MDD: mean dependency distance (Gibson, 1998).
- - NDD: normalized dependency distance (Lei & Jockers, 2018).
- - ADJD: proportion of adjacent dependencies.
- - LEFT: dependency direction: proportion of left dependents.
- - MOD: nominal modifiers (Biber & Gray, 2010).
- - CLS: number of clauses per sentence.
- - CLL: average clause length (clauses/words)
- - LXD: lexical density: ratio of content words over total number of words
- - POS/DEP tag frequencies (only with --output)
- Example:
- $ python3 udstyle.py UD_Dutch-LassySmall/*.conllu
- LEN MDD NDD ADJD LEFT MOD CLS CLL LXD
- dev.conllu 14.182 2.461 0.926 0.500 0.459 0.052 2.223 9.190 0.603
- test.conllu 11.434 2.192 0.807 0.547 0.412 0.074 1.771 9.013 0.657
- train.conllu 11.027 2.172 0.775 0.564 0.391 0.072 1.863 8.107 0.645
- """
- import os
- import sys
- import getopt
- import subprocess
- from math import log, sqrt
- from contextlib import contextmanager
- from collections import Counter
- import pandas as pd
- # TODO: extract POS and syntactic n-grams frequencies
- # TODO: POS surprisal, requires training e.g. n-gram model on corpus
- # Constants for field numbers:
- ID, FORM, LEMMA, UPOS, XPOS, FEATS, HEAD, DEPREL, DEPS, MISC = range(10)
- # https://universaldependencies.org/format.html
- # ID: Word index, integer starting at 1 for each new sentence; may be a range
- # for multiword tokens; may be a decimal number for empty nodes (decimal
- # numbers can be lower than 1 but must be greater than 0).
- # FORM: Word form or punctuation symbol.
- # LEMMA: Lemma or stem of word form.
- # UPOS: Universal part-of-speech tag.
- # XPOS: Language-specific part-of-speech tag; underscore if not available.
- # FEATS: List of morphological features from the universal feature inventory or
- # from a defined language-specific extension; underscore if not
- # available.
- # HEAD: Head of the current word, which is either a value of ID or zero (0).
- # DEPREL: Universal dependency relation to the HEAD (root iff HEAD = 0) or a
- # defined language-specific subtype of one.
- # DEPS: Enhanced dependency graph in the form of a list of head-deprel pairs.
- # MISC: Any other annotation.
- def which(program, exception=True):
- """Return first match for program in search path.
- :param exception: By default, ValueError is raised when program not found.
- Pass False to return None in this case."""
- for path in os.environ.get('PATH', os.defpath).split(":"):
- if path and os.path.exists(os.path.join(path, program)):
- return os.path.join(path, program)
- if exception:
- raise ValueError('%r not found in path; please install it.' % program)
- @contextmanager
- def genericdecompressor(cmd, filename, encoding='utf8'):
- """Run command line decompressor on file and return file object.
- :param cmd: executable in path with gzip-like command line interface;
- e.g., ``gzip, zstd, lz4, bzip2, lzop``
- :param filename: the file to decompress.
- :param encoding: if None, mode is binary; otherwise, text.
- :raises ValueError: if command returns an error.
- :returns: a file-like object that must be used in a with-statement;
- supports .read() and iteration, but not seeking."""
- with subprocess.Popen(
- [which(cmd), '--decompress', '--stdout', '--quiet', filename],
- stdout=subprocess.PIPE, stderr=subprocess.PIPE,
- encoding=encoding) as proc:
- # FIXME: should use select to avoid deadlocks due to OS pipe buffers
- # filling up and blocking the child process.
- yield proc.stdout
- retcode = proc.wait()
- if retcode: # FIXME: retcode 2 means warning. allow warnings?
- raise ValueError('non-zero exit code %s from compressor %s:\n%r'
- % (retcode, cmd, proc.stderr.read()))
- def openread(filename, encoding='utf8'):
- """Open stdin/file for reading; decompress gz/lz4/zst files on-the-fly.
- :param encoding: if None, mode is binary; otherwise, text."""
- mode = 'rb' if encoding is None else 'rt'
- if filename == '-': # TODO: decompress stdin on-the-fly
- return open(sys.stdin.fileno(), mode=mode, encoding=encoding)
- if not isinstance(filename, int):
- if filename.endswith('.gz'):
- return genericdecompressor('gzip', filename, encoding)
- elif filename.endswith('.zst'):
- return genericdecompressor('zstd', filename, encoding)
- elif filename.endswith('.lz4'):
- return genericdecompressor('lz4', filename, encoding)
- return open(filename, mode=mode, encoding=encoding)
- def parsefiles(filenames, lang):
- """Parse UTF-8 encoded plain text files with Stanza if a corresponding
- .conllu file does not exist already."""
- nlp = None
- newfilenames = []
- for filename in filenames:
- conllu = '%s.conllu' % os.path.splitext(filename)[0]
- newfilenames.append(conllu)
- if (not os.path.exists(conllu)
- or os.stat(conllu).st_mtime < os.stat(filename).st_mtime):
- if nlp is None:
- import stanza
- from stanza.utils.conll import CoNLL
- try:
- nlp = stanza.Pipeline(lang)
- except FileNotFoundError:
- stanza.download(lang)
- nlp = stanza.Pipeline(lang)
- with open(filename, encoding='utf8') as inp:
- doc = nlp(inp.read())
- # TODO: preserve paragraph breaks
- CoNLL.write_doc2conll(doc, conllu)
- return newfilenames
- def conllureader(filename, excludepunct=False):
- """Load corpus. Returns list of lists of lists:
- sentences[sentno][tokenno][fieldno]"""
- result = []
- sent = []
- with openread(filename) as inp:
- for line in inp:
- if line == '\n':
- if sent:
- try:
- result.append(renumber(sent))
- except KeyError:
- pass
- sent = []
- elif line.startswith('#'): # ignore all comments
- pass
- else:
- fields = line[:-1].split('\t')
- if '.' in fields[ID]: # skip empty nodes
- continue
- elif excludepunct and fields[UPOS] == 'PUNCT':
- continue
- elif '-' in fields[ID]: # multiword tokens
- fields[ID] = int(fields[ID][:fields[ID].index('-')])
- else: # normal tokens
- fields[ID] = int(fields[ID])
- try:
- fields[HEAD] = int(fields[HEAD])
- except ValueError:
- continue
- sent.append(fields)
- if not result:
- raise ValueError('no sentences; not a valid .conllu file?')
- return result
- def renumber(sent):
- """Fix non-contiguous IDs because of multiword tokens or removed tokens"""
- mapping = {line[ID]: n for n, line in enumerate(sent, 1)}
- mapping[0] = 0
- for line in sent:
- line[ID] = mapping[line[ID]]
- line[HEAD] = mapping[line[HEAD]]
- return sent
- def mean(iterable):
- """Arithmetic mean."""
- seq = list(iterable) # accept generators
- return sum(seq) / len(seq)
- def analyze(filename, excludepunct=True, persentence=False):
- """Return a dict {featname: vector, ...} describing UD file.
- Each feature vector has a value for each sentence."""
- sentences = conllureader(filename, excludepunct=excludepunct)
- result = complexitymetrics(sentences)
- if persentence:
- result['sent'] = [' '.join(line[FORM] for line in sent)
- for sent in sentences]
- result['filename'] = filename
- return result
- # Get macro average over the per-sentence scores.
- # Might want to look at standard deviation and other aspects of the
- # distribution. TODO: offer micro average as well.
- for a, b in result.items():
- result[a] = sum(b) / len(b)
- result.update(counttags(sentences))
- return result
- def complexitymetrics(sentences):
- """Return dict of complexity metrics with results for each sentence."""
- result = {}
- result['LEN'] = [len(sent) for sent in sentences]
- # Ignore certain relations, following Chen and Gerdes (2017, p. 57)
- # http://www.aclweb.org/anthology/W17-6508
- exclude = ('fixed', 'flat', 'conj', 'punct')
- # Gibson (1998) http://dx.doi.org/10.1016/S0010-0277(98)00034-1
- # Liu (2008) https://hdl.handle.net/10371/70907
- # mean dependency distance
- result['MDD'] = [
- mean(abs(line[ID] - line[HEAD]) for line in sent
- if line[DEPREL] not in exclude)
- for sent in sentences]
- # Lei & Jockers (2018): https://doi.org/10.1080/09296174.2018.1504615
- # normalized dependency distance
- result['NDD'] = [
- abs(log(mdd
- / sqrt(
- ([line[DEPREL] for line in sent].index('root') + 1)
- * len(sent))))
- for mdd, sent in zip(result['MDD'], sentences)]
- # proportion of adjacent dependencies
- # https://doi.org/10.1016/j.langsci.2016.09.006
- result['ADJD'] = [mean(abs(line[ID] - line[HEAD]) == 1 for line in sent)
- for sent in sentences]
- # dependency direction: proportion of left dependents
- # http://www.aclweb.org/anthology/W17-6508
- result['LEFT'] = [mean(line[ID] < line[HEAD] for line in sent)
- for sent in sentences]
- # nominal modifiers;
- # attempt to measure phrasal complexity (as opposed to clausal complexity).
- # see e.g. https://doi.org/10.1016/j.jeap.2010.01.001
- result['MOD'] = [mean(line[DEPREL] == 'nmod' for line in sent)
- for sent in sentences]
- # number of clauses per sentence; https://doi.org/10.1007/s11145-007-9107-5
- result['CLS'] = [1 + sum(line[UPOS] == 'VERB' for line in sent)
- for sent in sentences]
- # avg clause len (clauses/words) https://aclanthology.org/2020.lrec-1.883
- result['CLL'] = [
- len(sent) / max(1, sum(line[UPOS] == 'VERB' for line in sent))
- for sent in sentences]
- # lexical density: ratio of content words over total number of words
- # https://aclanthology.org/2020.lrec-1.883
- content = ('ADJ', 'ADV', 'INTJ', 'NOUN', 'PROPN', 'VERB')
- result['LXD'] = [sum(line[UPOS] in content for line in sent) / len(sent)
- for sent in sentences]
- return result
- def counttags(sentences):
- """Count POS and dependency tags; returns relative frequencies."""
- numtokens = sum(len(sent) for sent in sentences)
- postags = Counter(line[UPOS] for sent in sentences for line in sent)
- deptags = Counter(line[DEPREL] for sent in sentences for line in sent)
- tags = {a: postags[a] / numtokens for a in [
- 'ADJ', # adjective
- 'ADP', # adposition
- 'ADV', # adverb
- 'AUX', # auxiliary
- 'CCONJ', # coordinating conjunction
- 'DET', # determiner
- 'INTJ', # interjection
- 'NOUN', # noun
- 'NUM', # numeral
- 'PART', # particle
- 'PRON', # pronoun
- 'PROPN', # proper noun
- 'PUNCT', # punctuation
- 'SCONJ', # subordinating conjunction
- 'SYM', # symbol
- 'VERB', # verb
- 'X', # other
- ]}
- tags.update({a: deptags[a] / numtokens for a in [
- 'acl', # clausal modifier of noun (adnominal clause)
- 'acl:relcl', # relative clause modifier
- 'advcl', # adverbial clause modifier
- 'advmod', # adverbial modifier
- 'advmod:emph', # emphasizing word, intensifier
- 'advmod:lmod', # locative adverbial modifier
- 'amod', # adjectival modifier
- 'appos', # appositional modifier
- 'aux', # auxiliary
- 'aux:pass', # passive auxiliary
- 'case', # case marking
- 'cc', # coordinating conjunction
- 'cc:preconj', # preconjunct
- 'ccomp', # clausal complement
- 'clf', # classifier
- 'compound', # compound
- 'compound:lvc', # light verb construction
- 'compound:prt', # phrasal verb particle
- 'compound:redup', # reduplicated compounds
- 'compound:svc', # serial verb compounds
- 'conj', # conjunct
- 'cop', # copula
- 'csubj', # clausal subject
- 'csubj:pass', # clausal passive subject
- 'dep', # unspecified dependency
- 'det', # determiner
- 'det:numgov', # pronominal quantifier governing the case of the noun
- 'det:nummod', # pronominal quantifier agreeing in case with the noun
- 'det:poss', # possessive determiner
- 'discourse', # discourse element
- 'dislocated', # dislocated elements
- 'expl', # expletive
- 'expl:impers', # impersonal expletive
- 'expl:pass', # reflexive pronoun used in reflexive passive
- 'expl:pv', # reflexive clitic with an inherently reflexive verb
- 'fixed', # fixed multiword expression
- 'flat', # flat multiword expression
- 'flat:foreign', # foreign words
- 'flat:name', # names
- 'goeswith', # goes with
- 'iobj', # indirect object
- 'list', # list
- 'mark', # marker
- 'nmod', # nominal modifier
- 'nmod:poss', # possessive nominal modifier
- 'nmod:tmod', # temporal modifier
- 'nsubj', # nominal subject
- 'nsubj:pass', # passive nominal subject
- 'nummod', # numeric modifier
- 'nummod:gov', # numeric modifier governing the case of the noun
- 'obj', # object
- 'obl', # oblique nominal
- 'obl:agent', # agent modifier
- 'obl:arg', # oblique argument
- 'obl:lmod', # locative modifier
- 'obl:tmod', # temporal modifier
- 'orphan', # orphan
- 'parataxis', # parataxis
- 'punct', # punctuation
- 'reparandum', # overridden disfluency
- 'root', # root
- 'vocative', # vocative
- 'xcomp', # open clausal complement
- ]})
- return tags
- def compare(filenames, parse=None, excludepunct=True, persentence=False):
- """Collect statistics for multiple files.
- Returns a dataframe with one row per filename, with the mean score
- for each metric in the colmuns."""
- if parse:
- filenames = parsefiles(filenames, parse)
- if persentence:
- return pd.concat([
- pd.DataFrame(
- analyze(filename, excludepunct=excludepunct,
- persentence=persentence))
- for filename in filenames],
- ignore_index=True)
- return pd.DataFrame({
- os.path.basename(filename):
- analyze(filename, excludepunct=excludepunct)
- for filename in filenames}).T
- def main():
- """CLI."""
- try:
- opts, args = getopt.gnu_getopt(
- sys.argv[1:], '', ['output=', 'parse=', 'persentence'])
- opts = dict(opts)
- except getopt.GetoptError:
- print(__doc__)
- return
- if not args:
- print(__doc__)
- return
- result = compare(
- args, opts.get('--parse'), persentence='--persentence' in opts)
- if '--persentence' in opts:
- if '--output' in opts:
- result.to_csv(opts.get('--output'), sep='\t')
- else:
- print(result)
- elif '--output' in opts:
- result.to_csv(opts.get('--output'), sep='\t')
- else:
- selection = 'LEN MDD NDD ADJD LEFT MOD CLS CLL LXD'.split()
- print(result.loc[:, selection].round(3)) # skip tags
- if __name__ == '__main__':
- main()
udstyle.py at commit d628427, under GPL-3.0 · at the source
Overview
Abstract
Schizophrenia spectrum disorders (SSD) and Wernicke’s aphasia (WA) both disrupt meaningful speech, yet they arise from fundamentally different disturbances in thought and language. SSD is defined by formal thought disorder, in which disorganized thinking is inferred from abnormalities in speech, whereas WA reflects a primary breakdown of language implementation following focal brain damage. We investigated whether quantitative markers of lexical–semantic, syntactic structure, and semantic coherence in spontaneous speech can distinguish SSD, WA, and healthy controls.
Using Natural Language Processing techniques, we extracted syntactic, lexical and local semantic similarity features from spontaneous speech transcripts and used them in supervised machine learning models to classify diagnostic groups. In parallel, an instruction-tuned large language model (LLM) was used in a zero-shot setting to assign transcripts to diagnostic categories and to track the severity of language disturbance.
Our results showed a distinct linguistic pattern, particularly in syntactic and local semantic organization for WA, indicating a paradigmatic language disorder. By contrast, the same features were less effective in distinguishing SSD from matched controls, in line with the view that SSD reflects a more diffuse disturbance of thought that only partially manifests in surface language. Zero-shot LLM classifications approached the performance of supervised models for WA-related contrasts and were sensitive to graded language disturbance. At the same time, strong task and dataset effects underscored the need for carefully controlled speech elicitation. Together, these findings highlight both the promise and the limitations of automated language analysis for clinical diagnostics and for understanding speech and thought abnormalities.
Reproduced under the paper's license (CC BY), from the paper cited above.
Repositories
Its files are read in the Code ↔ Paper reader above, with 9 matches between paragraphs and lines of code.
P-Zande/ssd-vs-wa
a5cb25cf01f9733ec807ff019e2c47064df5baa8, 26 January 2026Availability: 1 check, the latest on 28 September 2026: the link answers
- 28 September 2026: the link answers
10 files
- helperFunctions.py, Python, 61 lines
- runningUDStyle.ipynb, Jupyter, 55 lines
- semantic.ipynb, Jupyter, 129 lines, 2 matches
- splitting.ipynb, Jupyter, 41 lines
- supervisedLearningExperi
ments.ipynb , Jupyter, 302 lines - zeroshot/
zeroshot.py , Python, 110 lines, 2 matches - zeroshot/
zeroshotMinimal.py , Python, 110 lines, 1 match - zeroshot/
zeroshotPatient.py , Python, 101 lines, 1 match - zeroshot/
zeroshotPatientMinimal.p , Python, 97 linesy - README.md, Text, 20 lines
andreasvc/udstyle
d628427dc0b3bb36872b48411f7bb7c59acdfd62, 18 June 2026Availability: 1 check, the latest on 28 September 2026: the link answers
- 28 September 2026: the link answers
3 files
- udstyle.py, Python, 394 lines, 3 matches
- LICENSE, License, 674 lines
- README.md, Text, 35 lines
Tracing map
Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.
What the map holds:
- 2 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 10 scripts, each with its path and the digest of its content;
- 9 matches between paragraphs of the paper and lines of the code (method lexical-v1);
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
No dataset and no data link were found in the paper.
Versions
The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.
Version 2, 28 September 2026
- Authors: added Perry van der Zande (0009-0000-2004-8341); removed Perry van der Zande
Version 1, 28 September 2026: the first record
Recorded: type, language, journal, volume, pages, dates, 3 authors, 5 keywords, 41 references.
Cite
This paper
van der Zande, P., van Cranenburgh, A., & Tsiwah, F. (2026). From thought to language: Comparing schizophrenia spectrum disorders and Wernicke's aphasia with machine learning and LLMs. Schizophrenia research. Cognition, 45, 100443. https://
BibTeX
@article{vanderzande2026
author = {van der Zande, Perry and van Cranenburgh, Andreas and Tsiwah, Frank},
title = {{From thought to language: Comparing schizophrenia spectrum disorders and Wernicke's aphasia with machine learning and LLMs}},
journal = {Schizophrenia research. Cognition},
year = {2026},
month = may,
volume = {45},
pages = {100443},
publisher = {Elsevier},
issn = {2215-0013},
doi = {10.1016/
url = {https://
pmid = {42238842},
pmcid = {PMC13226953}
}
RIS
TY - JOUR
AU - van der Zande, Perry
AU - van Cranenburgh, Andreas
AU - Tsiwah, Frank
TI - From thought to language: Comparing schizophrenia spectrum disorders and Wernicke's aphasia with machine learning and LLMs
T2 - Schizophrenia research. Cognition
J2 - Schizophr Res Cogn
PY - 2026
DA - 2026/
VL - 45
SP - 100443
SN - 2215-0013
PB - Elsevier
DO - 10.1016/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1016/
"type": "article-journal",
"title": "From thought to language: Comparing schizophrenia spectrum disorders and Wernicke's aphasia with machine learning and LLMs",
"container-title": "Schizophrenia research. Cognition",
"author": [
{
"family": "van der Zande",
"given": "Perry"
},
{
"family": "van Cranenburgh",
"given": "Andreas"
},
{
"family": "Tsiwah",
"given": "Frank"
}
],
"container-title-short":
"volume": "45",
"page": "100443",
"DOI": "10.1016/
"PMID": "42238842",
"PMCID": "PMC13226953",
"ISSN": "2215-0013",
"publisher": "Elsevier",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
5,
26
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.1038/s41467-026-75841-9 [code]
- Model-based semantic distance reveals adaptive coordination of distinct cognitive systems in flexible knowledge retrieval.Journal: Nature communicationsIn common: Hugging Face Transformers, PyTorch, pandas, 1 other tool, cognitive, 2 references
- [2] doi:10.7554/elife.107933 [code]
- Modality-agnostic decoding of vision and language from fMRI.Journal: eLifeIn common: Hugging Face Transformers, PyTorch, scikit-learn, 2 other tools, cognitive, 1 reference
- [3] doi:10.1016/j.isci.2026.116135 [code]
- Predicting ICU in-hospital mortality from text-encoded structured EHR data using adaptive transformer layer fusion.Journal: iScienceIn common: Hugging Face Transformers, PyTorch, scikit-learn, 2 other tools, 1 reference
- [4] doi:10.1038/s41467-026-74358-5 [code]
- Brain-inspired spatial intelligence for embodied agents.Journal: Nature communicationsIn common: Hugging Face Transformers, PyTorch, scikit-learn, 2 other tools, cognitive
- [5] doi:10.1038/s42003-026-10011-7 [code]
- Learning brain dynamics across distinct scaling regimes reveals psychiatric signatures.Journal: Communications biologyIn common: Hugging Face Transformers, PyTorch, scikit-learn, 2 other tools, cognitive
- [6] doi:10.1038/s42003-026-10169-0 [code]
- Shared representations in brains and models reveal a two-route cortical organization during scene perception.Journal: Communications biologyIn common: Hugging Face Transformers, PyTorch, scikit-learn, 2 other tools, cognitive
- [7] doi:10.1162/imag.a.1227 [code]
- Large language models reveal the neural tracking of linguistic context in attended and unattended multi-talker speech.Journal: Imaging neuroscience (Cambridge, Mass.)In common: Hugging Face Transformers, PyTorch, scikit-learn, 2 other tools, cognitive
- [8] doi:10.7554/elife.106543 [code]
- Stimulus dependencies-rather than next-word prediction-can explain pre-onset brain encoding in naturalistic listening designs.Journal: eLifeIn common: Hugging Face Transformers, PyTorch, scikit-learn, 2 other tools, cognitive
- [9] doi:10.1038/s41467-026-71267-5 [code]
- Human-like cognitive generalization for large models via mental representation-guided supervision.Journal: Nature communicationsIn common: Hugging Face Transformers, PyTorch, scikit-learn, 2 other tools, cognitive
- [10] doi:10.1162/nol.a.244 [code]
- A Novel Approach to Map the Causal Impact of Brain Stimulation on Semantic Processing With Language Models.Journal: Neurobiology of language (Cambridge, Mass.)In common: Hugging Face Transformers, PyTorch, scikit-learn, 1 other tool, 1 reference
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 2 repositories of the authors' code, each at its verified commit and with its license, 10 scripts, and 9 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:b61f34c5dce6da18…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
Request its removal
To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).
Discussion, reproductions, activity
Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
