Automated Intelligence Tests
Minimal Python package providing automated tests of associative and creative ability, for both
human and artificial intelligence. Each test exposes the same two calls: instruct() builds the
stimuli and prompt, evaluate() scores the responses.
| Test | Name | instruct |
evaluate |
|---|---|---|---|
cat |
Convergent Association Task | yes | proximity score (GloVe) |
dat |
Divergent Association Task | yes | Olson score (GloVe) |
aut |
Alternative Uses Task | yes | not implemented yet |
wrt |
Creative Writing Task | yes | not implemented yet |
Install
pip install git+https://github.com/dtzx00/Automated-Intelligence-Tests.git
Once published to PyPI: pip install automated-intelligence-tests.
Dependencies (glove-word-embeddings, numpy) are declared in pyproject.toml and installed
automatically — no separate requirements step. Python 3.9+.
For local development:
git clone https://github.com/dtzx00/Automated-Intelligence-Tests.git
cd Automated-Intelligence-Tests
pip install -e .
Quickstart
import automated_intelligence_tests as ait
ait.list_available_tests() # {"CAT": "Convergent Association Task", ...}
# 1. Build the stimuli and prompt
task = ait.instruct("cat", n_items=10, seed=42)
print(task["instructions"]) # give this to a person or a model
print(task["response_format"]) # the shape the answer should come back in
# 2. Fill in "word_user" for each item, then score
responses = {
"wordset_1": {"word_1": "television", "word_2": "lake", "word_user": "reflection"},
# ...
}
result = ait.evaluate("cat", responses)
print(result["score"], result["n_valid"])
instruct() returns a dict with test, instructions, response_format, and the test's own
stimuli. evaluate() returns a dict with score (None if nothing scorable), n_valid, and
per-test detail.
API
ait.list_available_tests() # -> {short_name: long_name} for every test
ait.instruct(test, **kwargs) # test in {"cat", "dat", "aut", "wrt"}
ait.call_test_instruction("DAT", **kwargs) # same as instruct(), case-insensitive name
ait.evaluate(test, responses, **kwargs)
Sub-packages can also be used directly:
from automated_intelligence_tests.cat import instruct, evaluate.
| Test | instruct arguments |
evaluate arguments |
|---|---|---|
cat |
single_item=False, n_items=10, seed=None |
responses, model_key="glove-840b-300d" |
dat |
n_words=10 |
responses, model_key=..., minimum=7 |
aut |
object=None, seed=None |
raises NotImplementedError |
wrt |
cues=None, seed=None |
raises NotImplementedError |
CAT samples word pairs from a fixed list of 8,069 English word pairs at cosine distance 0.85–0.95, the
instrument's difficulty control. No word repeats within an assessment. single_item=True returns
one pair with the pair embedded in the instruction text, for one-call-per-item delivery.
DAT takes either a list of words or a {"word_1": ..., ...} dict.
AUT samples a common object (brick, paperclip, …) unless one is given.
WRT samples three cue words unless they are given.
Scoring
- CAT — mean cosine similarity between the participant's word and each of the two cue words,
averaged over items. Higher = stronger convergent association. Invalid or unembeddable words are
marked
valid: Falseand excluded rather than penalised. - DAT — Olson's procedure exactly: mean pairwise cosine distance of the first 7 unique valid
words, ×100. Returns
score: Noneif fewer than 7 valid words are given.
Both use glove-word-embeddings, default model
glove-840b-300d. The first evaluate() call downloads the embedding file and caches it under
~/.cache/glove-word-embeddings; later calls are offline. Other keys (glove-6b-300d,
wiki-news-300d-1m, the flair-olson-* set, …) can be passed via model_key.
Layout
automated_intelligence_tests/
__init__.py dispatcher: list_available_tests() / instruct() / evaluate()
cat/ dat/ per test: instruct.py, evaluate.py, metadata.json,
aut/ wrt/ readme.md, example.ipynb
cat/data/cat_word_pairs_en.txt CAT word-pair list
Each test folder carries a metadata.json holding its short name, long name and description.
That file is what list_available_tests() reads, so dropping in a new test folder with one makes
it discoverable automatically. Each also has its own readme.md and a runnable example.ipynb.
License
MIT
Metadata
Release files for automated-intelligence-tests 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| automated_intelligence_tests-0.1.2.tar.gz | 87.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| automated_intelligence_tests-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 176.6 kB
Release files / automated_intelligence_tests-0.1.2.tar.gz
| Download URL | automated_intelligence_tests-0.1.2.tar.gz |
|---|---|
| Size | 87.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
24fdc1f9a614297ab4cf85f82e63711343313fb635bf80bc427213a58e944f3e
|
|
BLAKE2b-256 checksum How to use checksums |
3215fa881a4cdec350cdcd6a246374a8b52893cf0875b7ff987961e0692b8def
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.16
|
Release files / automated_intelligence_tests-0.1.2-py3-none-any.whl
| Download URL | automated_intelligence_tests-0.1.2-py3-none-any.whl |
|---|---|
| Size | 89.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
468f869c532feea3886f08a5e28a09e7bcb9b0a459b1e009235a1c3eef9a98b4
|
|
BLAKE2b-256 checksum How to use checksums |
1719a83d8b39d14d024a62b821dde2e6dbfd3fdddc0b71d18a6d4ad36c433a0c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.16
|