Files
AI/tests/test_perfume_extractor.py
LASTA_DEV01\lasta 4158789869 [crawler]
2026-05-08 17:41:15 +09:00

32 lines
1.2 KiB
Python

from crawler_platform.app.config.loader import ProjectConfig, SourceConfig
from crawler_platform.app.domains.perfume.extractor import PerfumeRuleBasedExtractor
def test_perfume_rule_based_extractor_maps_claims():
config = ProjectConfig(
project_name="perfume_subscription",
domain="perfume",
target_entities=["Perfume", "Brand", "Note"],
fields=["name", "brand", "top_notes", "middle_notes", "base_notes"],
sources=[SourceConfig(name="official_brand_site", trust_level=0.95)],
ontology={"aliases": {"top_notes": "hasTopNote"}},
)
text = """
Neroli Summer Eau de Parfum
Brand: Example Maison
Top notes: Bergamot, Neroli
Middle notes: Jasmine
Base notes: Musk
A fresh daily perfume for summer office wear. Price $89.
"""
bundle = PerfumeRuleBasedExtractor().extract(text, config)
predicates = {claim.predicate for claim in bundle.claims}
entity_names = {entity.name for entity in bundle.entities}
assert "Neroli Summer Eau de Parfum" in entity_names
assert "Bergamot" in entity_names
assert "hasTopNote" in predicates
assert "suitableForSeason" in predicates
assert "hasPrice" in predicates