fractus-vorax / tests /test_encode.py
thefinalboss's picture
Fractus-Vorax v1.0.0 — the takeover: sealed CTE brain + ingestion organs + mechanical speech (199 tests, honest floors)
1da7ac7 verified
Raw
History Blame Contribute Delete
2.27 kB
# tests/test_encode.py
import numpy as np
from fractus_vorax.compiler.atoms import Atom
from fractus_vorax.compiler.encode import (
char_ngrams,
encode_atom,
normalize,
slot_hv,
text_hv,
tokenize,
)
from fractus_vorax.hv import sim
def test_normalize():
assert normalize(" What IS The Capital? ") == "what is the capital"
def test_tokenize():
assert tokenize("What is the capital of France?") == ["what", "is", "the", "capital", "of", "france"]
def test_text_hv_identical_sentences():
a = text_hv("what is the capital of france")
b = text_hv("What IS the capital of France?")
assert np.array_equal(a, b)
def test_related_more_similar_than_unrelated():
q1 = text_hv("what is the capital of france")
q2 = text_hv("what is the capital of spain")
far = text_hv("quantum entanglement violates locality")
assert sim(q1, q2) > 0.3 # 5 tokens partagés sur 6
assert sim(q1, far) < 0.2 # quasi-orthogonal
assert sim(q1, q2) > sim(q1, far)
def test_encode_atom_deterministic():
atom = Atom("what is the capital of france", "paris", "cap.csv:2")
a1, v1 = encode_atom(atom)
a2, v2 = encode_atom(atom)
assert np.array_equal(a1, a2) and np.array_equal(v1, v2)
def test_encode_atom_addr_is_statement():
atom = Atom("who wrote hamlet", "william shakespeare", "s:1")
addr, value = encode_atom(atom)
assert np.array_equal(addr, text_hv("who wrote hamlet"))
assert not np.array_equal(value, addr) # le contexte change la valeur
def test_encode_atom_no_context_value_equals_addr():
atom = Atom("un fait nu", "", "s:1")
addr, value = encode_atom(atom)
assert np.array_equal(value, addr)
def test_char_ngrams_padded():
assert char_ngrams("ab") == ["#ab", "ab#"]
def test_char_ngrams_length_three():
assert char_ngrams("abcd") == ["#ab", "abc", "bcd", "cd#"]
def test_slot_hv_typo_similarity():
a = slot_hv("france", D=4096)
b = slot_hv("franca", D=4096)
c = slot_hv("japan", D=4096)
assert sim(a, b) > 0.4 # 3-grammes partagés
assert sim(a, c) < 0.2 # quasi-orthogonal
def test_slot_hv_deterministic():
assert np.array_equal(slot_hv("spain", D=2048), slot_hv("spain", D=2048))