Spaces:
Runtime error
Runtime error
| #\"\"\"Mappings for icosahedral and dodecahedral nodal structures with simple semantic embeddings.\"\"\" | |
| import networkx as nx | |
| import math | |
| from sentence_transformers import SentenceTransformer, util | |
| _embedder = SentenceTransformer('all-MiniLM-L6-v2') | |
| class BasePolyMap: | |
| def __init__(self, G): | |
| self.G = G | |
| self.node_texts = {n: f'node_{n}' for n in G.nodes()} | |
| self.emb = {n: _embedder.encode(self.node_texts[n]) for n in G.nodes()} | |
| def nodes(self): | |
| return list(self.G.nodes()) | |
| def closest_node(self, text): | |
| q = _embedder.encode(text) | |
| best = None; bsim = -1 | |
| for n, v in self.emb.items(): | |
| sim = util.cos_sim(q, v).item() | |
| if sim > bsim: | |
| best, bsim = n, sim | |
| return best | |
| class IcosaMap(BasePolyMap): | |
| def __init__(self): | |
| G = nx.icosahedral_graph() | |
| super().__init__(G) | |
| class DodecaMap(BasePolyMap): | |
| def __init__(self): | |
| G = nx.dodecahedral_graph() | |
| super().__init__(G) | |