diff --git a/crackle_planning/crackle_planning/_api.py b/crackle_planning/crackle_planning/_api.py index 8aa86bd..566833b 100644 --- a/crackle_planning/crackle_planning/_api.py +++ b/crackle_planning/crackle_planning/_api.py @@ -10,6 +10,14 @@ from rclpy.node import Node from rclpy.executors import MultiThreadedExecutor +# MOVE LATER +import numpy as np +import openai +from openai import OpenAI +from _keys import openai_key +os.environ["OPENAI_API_KEY"] = str(openai_key) +client = OpenAI(api_key=os.environ["OPENAI_API_KEY"]) + class PlannerAPI: def __init__(self, use_ros: bool): if use_ros: @@ -44,6 +52,45 @@ def _shutdown_ros(self): except Exception as e: print(f"[PlannerAPI] ROS shutdown warning: {e}") + # def find(self, object_name : str, mapped_objects): # This function is to locate the named object by matching it with the most similar mapped object + + # MOVE LATER + def embedding_from_string(text: str, model: str = "text-embedding-3-small") -> np.ndarray: + """Get an embedding as a NumPy vector.""" + resp = client.embeddings.create(model=model, input=text) + # print("str: ", text, " | embedding: ", np.array(resp.data[0].embedding, dtype=np.float32)) + return np.array(resp.data[0].embedding, dtype=np.float32) + + # MOVE LATER + def recommendations_from_strings( + strings: List[str], + index_of_source_string: int, + model: str = "text-embedding-3-small", + ) -> List[int]: + """Return nearest neighbors of a given string (including itself first).""" + + # 1) embeddings for all strings + embeddings = [embedding_from_string(s, model=model) for s in strings] + + # 2) source embedding + query = embeddings[index_of_source_string] + + # 3) cosine *distance* = 1 - cosine similarity + q_norm = np.linalg.norm(query) + distances = [] + for e in embeddings: + denom = q_norm * np.linalg.norm(e) + sim = float(query @ e / denom) if denom != 0 else 0.0 + distances.append(1.0 - sim) + + # 4) nearest neighbors = smallest distance first + indices_of_nearest_neighbors = list(np.argsort(distances)) + + closest_idx = indices_of_nearest_neighbors[1] + if distances[closest_idx] <= 0.5: + return strings[closest_idx] + return None + def pick_up(self, object_name : str): # This function allows us to pick up object at called object_name if (self.gripper_occupied): print("Gripper is already holding an object.") diff --git a/crackle_planning/crackle_planning/_llm.py b/crackle_planning/crackle_planning/_llm.py index 2e00026..f28ea61 100644 --- a/crackle_planning/crackle_planning/_llm.py +++ b/crackle_planning/crackle_planning/_llm.py @@ -153,7 +153,7 @@ def get_command(self, prompt: str, ros_interface: any = None): "Assume 'self' is already in scope so no need to pass it in. " "Do not redefine these. For example, if you were to pick up and " "place an object called 'x y', code would look like this:\n" - "api.pick_up(\"x_y\")\\api.place()" + "api.pick_up(\"x_y\")\\api.place()." ), }, "emotion": { diff --git a/crackle_planning/crackle_planning/lee_oh_v0.1.onnx b/crackle_planning/crackle_planning/lee_oh_v0.1.onnx new file mode 100644 index 0000000..4fa5174 Binary files /dev/null and b/crackle_planning/crackle_planning/lee_oh_v0.1.onnx differ diff --git a/crackle_planning/crackle_planning/lee_oh_v0.1.tflite b/crackle_planning/crackle_planning/lee_oh_v0.1.tflite new file mode 100644 index 0000000..60b1d17 Binary files /dev/null and b/crackle_planning/crackle_planning/lee_oh_v0.1.tflite differ diff --git a/crackle_planning/crackle_planning/lee_oh_v0.2.onnx b/crackle_planning/crackle_planning/lee_oh_v0.2.onnx new file mode 100644 index 0000000..ba8ceba Binary files /dev/null and b/crackle_planning/crackle_planning/lee_oh_v0.2.onnx differ diff --git a/crackle_planning/crackle_planning/lee_oh_v0.2.tflite b/crackle_planning/crackle_planning/lee_oh_v0.2.tflite new file mode 100644 index 0000000..25fbac3 Binary files /dev/null and b/crackle_planning/crackle_planning/lee_oh_v0.2.tflite differ diff --git a/crackle_planning/crackle_planning/lee_oh_v0.3.onnx b/crackle_planning/crackle_planning/lee_oh_v0.3.onnx new file mode 100644 index 0000000..282c05f Binary files /dev/null and b/crackle_planning/crackle_planning/lee_oh_v0.3.onnx differ diff --git a/crackle_planning/crackle_planning/lee_oh_v0.3.tflite b/crackle_planning/crackle_planning/lee_oh_v0.3.tflite new file mode 100644 index 0000000..2031c26 Binary files /dev/null and b/crackle_planning/crackle_planning/lee_oh_v0.3.tflite differ diff --git a/crackle_planning/crackle_planning/main.py b/crackle_planning/crackle_planning/main.py index c28c157..b947592 100644 --- a/crackle_planning/crackle_planning/main.py +++ b/crackle_planning/crackle_planning/main.py @@ -19,7 +19,7 @@ import pyaudio import os from _api import PlannerAPI -from planner import main_planner +# from planner import main_planner import wave from openai import OpenAI from _llm import GptAPI @@ -65,12 +65,12 @@ def __init__(self): # Path to your custom TFLite model custom_model_path = os.path.join( os.path.dirname(__file__), - "lee_oh.tflite", + "leeoh.tflite", ) print("custom_model_path:", custom_model_path) # Key you'll use in the prediction dict - self.WAKEWORD_NAME = "lee_oh" + self.WAKEWORD_NAME = "leeoh" from openwakeword.model import Model @@ -129,7 +129,7 @@ async def listening_thread(name: str, stop_event: asyncio.Event): audio = np.frombuffer(self._mic_stream.read(CHUNK), dtype=np.int16) prediction = self._owwModel.predict(audio) score = prediction[self.WAKEWORD_NAME] - #print(score) + if score > 0.1: print(f"Wake word detected with score {score:.3f}") self._state = CrackleState.LISTENING @@ -156,7 +156,7 @@ async def handle_task(self): # ... await asyncio.sleep(2) # Simulate task execution time print("Entering TASK state: Executing task...") - main_planner() #main_planner() + # main_planner() pass async def handle_resetting(self): diff --git a/crackle_planning/crackle_planning/ros_interface.py b/crackle_planning/crackle_planning/ros_interface.py index c36b4ac..00fed0d 100644 --- a/crackle_planning/crackle_planning/ros_interface.py +++ b/crackle_planning/crackle_planning/ros_interface.py @@ -4,6 +4,7 @@ import numpy as np from crackle_interfaces.srv import PickupObject, LookAt + from sensor_msgs.msg import Image from rclpy.callback_groups import ReentrantCallbackGroup from geometry_msgs.msg import Vector3Stamped diff --git a/crackle_planning/crackle_planning/test_embedding.py b/crackle_planning/crackle_planning/test_embedding.py new file mode 100644 index 0000000..0cca223 --- /dev/null +++ b/crackle_planning/crackle_planning/test_embedding.py @@ -0,0 +1,1054 @@ +import os +from typing import List +import numpy as np +import openai +from openai import OpenAI +from _keys import openai_key + +os.environ["OPENAI_API_KEY"] = str(openai_key) +client = OpenAI(api_key=os.environ["OPENAI_API_KEY"]) + +def embedding_from_string(text: str, model: str = "text-embedding-3-small") -> np.ndarray: + """Get an embedding as a NumPy vector.""" + resp = client.embeddings.create(model=model, input=text) + # print("str: ", text, " | embedding: ", np.array(resp.data[0].embedding, dtype=np.float32)) + return np.array(resp.data[0].embedding, dtype=np.float32) + + +def recommendations_from_strings( + strings: List[str], + index_of_source_string: int, + embeddings: List[str] = [], + model: str = "text-embedding-3-small", +) -> List[int]: + """Return nearest neighbors of a given string (including itself first).""" + + # 1) embeddings for all strings + if len(embeddings) == 0: + embeddings = [embedding_from_string(s, model=model) for s in strings] + + # 2) source embedding + query = embeddings[index_of_source_string] + + # 3) cosine *distance* = 1 - cosine similarity + q_norm = np.linalg.norm(query) + distances = [] + for e in embeddings: + denom = q_norm * np.linalg.norm(e) + sim = float(query @ e / denom) if denom != 0 else 0.0 + distances.append(1.0 - sim) + + # 4) nearest neighbors = smallest distance first + indices_of_nearest_neighbors = list(np.argsort(distances)) + + closest_idx = indices_of_nearest_neighbors[1] + return [strings[closest_idx], closest_idx, distances[closest_idx]] + + # if distances[closest_idx] <= 0.5: + # return strings[closest_idx] + # return None + +def big_test(strings): + embeddings = [embedding_from_string(s, model="text-embedding-3-small") for s in strings] + avg = 0 + for idx, s in enumerate(strings): + res = recommendations_from_strings(strings, idx, embeddings) + avg += res[2] + print(s, ": ", res) + avg /= len(strings) + print("AVERAGE DISTANCE: ", avg) + +def test_embedding(): + strings = [ + "apple", + "rust", + "velvet", + "moonlight", + "cobblestone", + "paperclip", + "toaster", + "pencil", + "snow", + "thunder", + "cactus", + "reef", + "saffron", + "marble", + "circuit", + "pickle", + "satellite", + "pyramid", + "lantern", + "invoice", + "stadium", + "chimney", + "harbor", + "jigsaw", + "cinnamon", + "umbrella", + "mustard", + "helmet", + "orchard", + "penguin", + "fjord", + "telescope", + "carnival", + "microscope", + "treaty", + "gravity", + "shoelace", + "mushroom", + "seashell", + "windmill", + "brochure", + "screwdriver", + "quartz", + "raven", + "anvil", + "luggage", + "pancake", + "basil", + "shampoo", + "accordion", + "violin", + "stethoscope", + "radiator", + "dragonfly", + "dandelion", + "octopus", + "sandpaper", + "notebook", + "candle", + "boulder", + "hinge", + "doorknob", + "horizon", + "tundra", + "volcano", + "semaphore", + "backpack", + "chalkboard", + "soybean", + "tangerine", + "avalanche", + "monsoon", + "hourglass", + "turnstile", + "wardrobe", + "suitcase", + "hedgehog", + "armadillo", + "lighthouse", + "riverbank", + "typewriter", + "teacup", + "peppermint", + "spatula", + "goggles", + "copper", + "platinum", + "mercury", + "nebula", + "asteroid", + "comet", + "tugboat", + "sailboat", + "iceberg", + "glacier", + "barnacle", + "tortoise", + "gazelle", + "sardine", + "parchment", + "blueprint", + "toolbox", + "mortar", + "pillowcase", + "thermostat", + "saxophone", + "stopwatch", + "handkerchief", + "barricade", + "aqueduct", + "cathedral", + "bunkhouse", + "meadow", + "canyon", + "gutter", + "stapler", + "keyhole", + "balcony", + "tapestry", + "popsicle", + "hazelnut", + "jellyfish", + "manatee", + "mongoose", + "fireplace", + "skylight", + "sundial", + "freight", + "coupon", + "microwave", + "icebox", + "bathrobe", + "corridor", + "sidewalk", + "handrail", + "boulevard", + "headstone", + "windchime", + "shoebox", + "hairpin", + "filament", + "wheelbarrow", + "gondola", + "wetsuit", + "snowshoe", + "velodrome", + "seasickness", + "frostbite", + "aftershock", + "newsletter", + "thesaurus", + "cardboard", + "bedframe", + "cutlery", + "saucepan", + "turnip", + "okra", + "coriander", + "marmalade", + "crouton", + "cheesecake", + "buttermilk", + "sourdough", + "trombone", + "xylophone", + "clarinet", + "metronome", + "blue jay", + "sea otter", + "stone bridge", + "glass jar", + "paper boat", + "gold coin", + "iron gate", + "silent engine", + "broken compass", + "dusty attic", + "ancient map", + "plastic spoon", + "electric kettle", + "ceramic mug", + "wooden plank", + "velvet curtain", + "crystal vase", + "granite slab", + "midnight train", + "neon sign", + "storm cellar", + "honey jar", + "sugar cube", + "salt shaker", + "pepper grinder", + "coffee bean", + "tea leaf", + "orange peel", + "lemon wedge", + "lime zest", + "cocoa powder", + "spice rack", + "kitchen sink", + "garden hose", + "water tower", + "radio tower", + "signal flare", + "safety pin", + "rubber band", + "sticky note", + "desk lamp", + "floor mat", + "window latch", + "door hinge", + "mail slot", + "ink bottle", + "paint brush", + "canvas frame", + "photo album", + "ticket stub", + "train platform", + "bus stop", + "parking meter", + "street vendor", + "market stall", + "fruit crate", + "fish market", + "bookstore", + "newsstand", + "toy chest", + "sock drawer", + "coat hanger", + "shoe rack", + "laundry basket", + "soap dish", + "bath towel", + "shower curtain", + "sink faucet", + "garden gate", + "flower pot", + "rose bush", + "pine cone", + "oak leaf", + "maple syrup", + "birch bark", + "moss patch", + "pond water", + "river delta", + "ocean current", + "coral reef", + "sand dune", + "cliff edge", + "cave entrance", + "mountain pass", + "forest canopy", + "prairie grass", + "desert mirage", + "arctic ice", + "tropical storm", + "quiet harbor", + "busy harbor", + "cargo ship", + "paper lantern", + "stone lantern", + "oil lantern", + "wax candle", + "scented candle", + "cold drizzle", + "warm breeze", + "sharp shadow", + "soft echo", + "steel beam", + "brick wall", + "glass ceiling", + "concrete pillar", + "painted fence", + "barbed wire", + "silk thread", + "cotton rope", + "nylon strap", + "leather belt", + "wool scarf", + "silver ring", + "brass key", + "copper wire", + "tin can", + "aluminum foil", + "ceramic tile", + "porcelain plate", + "stoneware bowl", + "plastic bin", + "cardboard box", + "wood crate", + "metal locker", + "office chair", + "conference table", + "library card", + "student badge", + "passport stamp", + "boarding pass", + "hotel keycard", + "parking permit", + "lab notebook", + "safety goggles", + "glove box", + "first aid kit", + "fire extinguisher", + "smoke alarm", + "carbon filter", + "air vent", + "water valve", + "pressure gauge", + "engine block", + "gearbox", + "drive shaft", + "brake pad", + "spark plug", + "fuel pump", + "battery pack", + "solar panel", + "wind turbine", + "hydro dam", + "power grid", + "control room", + "server rack", + "fiber optic", + "router", + "password", + "encryption key", + "backup drive", + "error log", + "audit trail", + "access badge", + "security camera", + "vault door", + "bank teller", + "coffee shop", + "music hall", + "movie poster", + "stage light", + "spotlight", + "drumstick", + "guitar pick", + "piano bench", + "sheet music", + "dance floor", + "ticket booth", + "street parade", + "carnival mask", + "paper crown", + "rubber duck", + "stuffed bear", + "toy robot", + "model rocket", + "kite string", + "board game", + "dice cup", + "playing card", + "chessboard", + "checkers piece", + "snow globe", + "beach ball", + "swimming pool", + "diving board", + "lifeguard chair", + "campfire", + "tent pole", + "sleeping bag", + "hiking boot", + "trail marker", + "compass rose", + "topographic map", + "storm cloud", + "rain barrel", + "ice crystal", + "frozen puddle", + "morning dew", + "evening fog", + "city skyline", + "country road", + "farmhouse", + "grain silo", + "tractor tire", + "barn door", + "hay bale", + "milk crate", + "butter churn", + "wheat field", + "corn stalk", + "pumpkin patch", + "apple orchard", + "vineyard row", + "wine bottle", + "cork stopper", + "crystal glass", + "bar counter", + "menu board", + "cash register", + "receipt printer", + "coin purse", + "leather wallet", + "paper receipt", + "shipping label", + "packing tape", + "bubble wrap", + "fragile sticker", + "delivery van", + "loading dock", + "warehouse aisle", + "pallet jack", + "forklift", + "work glove", + "hard hat", + "safety vest", + "tool belt", + "measuring tape", + "spirit level", + "sledgehammer", + "paint roller", + "plaster", + "cement mixer", + "blue tarp", + "rope ladder", + "fire escape", + "stairwell", + "elevator", + "hallway mirror", + "doorframe", + "baseboard", + "ceiling fan", + "window shade", + "curtain rod", + "potted fern", + "succulent", + "bonsai tree", + "herb garden", + "basil plant", + "mint sprig", + "rosemary twig", + "thyme bundle", + "cooking pot", + "ladle", + "whisk", + "rolling pin", + "cutting board", + "chef knife", + "bread loaf", + "cheese wheel", + "olive jar", + "pickle jar", + "tomato can", + "soup bowl", + "rice bag", + "bean sack", + "grain bin", + "spice tin", + "tea caddy", + "coffee grinder", + "espresso cup", + "napkin holder", + "table runner", + "place mat", + "centerpiece", + "flower vase", + "rose petal", + "lily stem", + "tulip bulb", + "sunflower", + "honeybee", + "butterfly", + "ladybug", + "dragonfly wing", + "ant hill", + "bird nest", + "feather", + "eggshell", + "seaglass", + "driftwood", + "shell necklace", + "pearl bead", + "stone pebble", + "river stone", + "lava rock", + "meteorite", + "fossil", + "amber shard", + "obsidian", + "jade pendant", + "opal", + "diamond", + "sapphire", + "emerald", + "ruby", + "gold nugget", + "silver ore", + "iron ore", + "coal seam", + "salt mine", + "ice cave", + "volcanic ash", + "smoke plume", + "steam vent", + "hot spring", + "cool stream", + "quiet lagoon", + "stormy sea", + "tidal pool", + "wave crest", + "shipwreck", + "anchor chain", + "life raft", + "compass", + "nautical chart", + "signal flag", + "captain's log", + "crew cabin", + "engine room", + "cargo hold", + "harbor pilot", + "customs form", + "trade route", + "rail switch", + "freight car", + "train whistle", + "station clock", + "platform bench", + "bus ticket", + "subway map", + "streetcar", + "bike lane", + "skateboard", + "helmet strap", + "knee pad", + "soccer ball", + "tennis racket", + "baseball glove", + "hockey puck", + "scoreboard", + "team jersey", + "coach clipboard", + "referee whistle", + "trophy case", + "medal ribbon", + "certificate", + "diploma", + "textbook", + "lecture hall", + "lab coat", + "microscope slide", + "test tube", + "petri dish", + "culture plate", + "pipette", + "centrifuge", + "chemical flask", + "oxygen tank", + "heart monitor", + "surgical mask", + "sterile gauze", + "bandage roll", + "medicine bottle", + "pill organizer", + "clinic hallway", + "waiting room", + "reception desk", + "appointment card", + "insurance form", + "patient chart", + "sticker label", + "barcode scanner", + "printer toner", + "paper tray", + "ink cartridge", + "staple remover", + "binder clip", + "spiral notebook", + "index card", + "sticky tab", + "highlighter", + "ballpoint pen", + "fountain pen", + "eraser", + "pencil sharpener", + "desk organizer", + "calendar page", + "hour hand", + "minute hand", + "alarm clock", + "digital clock", + "time zone", + "snowstorm", + "heatwave", + "sunrise", + "sunset", + "eclipse", + "starlight", + "milky way", + "space station", + "launch pad", + "rocket engine", + "capsule", + "orbital path", + "gravity well", + ] + unique_strings = [ + "apple", + "rust", + "velvet", + "moonlight", + "cobblestone", + "paperclip", + "toaster", + "pencil", + "snow", + "thunder", + "cactus", + "reef", + "saffron", + "marble", + "circuit", + "pickle", + "satellite", + "pyramid", + "lantern", + "invoice", + "stadium", + "chimney", + "harbor", + "jigsaw", + "cinnamon", + "umbrella", + "mustard", + "helmet", + "orchard", + "penguin", + "fjord", + "telescope", + "carnival", + "microscope", + "treaty", + "gravity", + "shoelace", + "mushroom", + "seashell", + "windmill", + "brochure", + "screwdriver", + "quartz", + "raven", + "anvil", + "luggage", + "pancake", + "basil", + "shampoo", + "accordion", + "violin", + "stethoscope", + "radiator", + "dragonfly", + "dandelion", + "octopus", + "sandpaper", + "notebook", + "candle", + "boulder", + "hinge", + "doorknob", + "horizon", + "tundra", + "volcano", + "semaphore", + "backpack", + "chalkboard", + "soybean", + "tangerine", + "avalanche", + "monsoon", + "hourglass", + "turnstile", + "wardrobe", + "suitcase", + "hedgehog", + "armadillo", + "lighthouse", + "riverbank", + "typewriter", + "teacup", + "peppermint", + "spatula", + "goggles", + "copper", + "platinum", + "mercury", + "nebula", + "asteroid", + "comet", + "tugboat", + "sailboat", + "iceberg", + "glacier", + "barnacle", + "tortoise", + "gazelle", + "sardine", + "parchment", + "blueprint", + "toolbox", + "mortar", + "pillowcase", + "thermostat", + "saxophone", + "stopwatch", + "handkerchief", + "barricade", + "aqueduct", + "cathedral", + "bunkhouse", + "meadow", + "canyon", + "gutter", + "stapler", + "keyhole", + "balcony", + "tapestry", + "popsicle", + "hazelnut", + "jellyfish", + "manatee", + "mongoose", + "fireplace", + "skylight", + "sundial", + "newsletter", + "thesaurus", + "cardboard", + "bedframe", + "cutlery", + "saucepan", + "turnip", + "okra", + "coriander", + "marmalade", + "crouton", + "cheesecake", + "buttermilk", + "sourdough", + "trombone", + "xylophone", + "clarinet", + "metronome", + "blue jay", # blue, jay (unique) + "stone bridge", # stone, bridge (unique) + "glass jar", # glass, jar (unique) + "paper boat", # paper, boat (unique) + "gold coin", # gold, coin (unique) + "iron gate", # iron, gate (unique) + "silent engine", # silent, engine (unique) + "broken compass", # broken, compass (unique) + "dusty attic", # dusty, attic (unique) + "ancient map", # ancient, map (unique) + "plastic spoon", # plastic, spoon (unique) + "electric kettle", # electric, kettle (unique) + "ceramic mug", # ceramic, mug (unique) + "wooden plank", # wooden, plank (unique) + "crystal vase", # crystal, vase (unique) + "granite slab", # granite, slab (unique) + "midnight train", # midnight, train (unique) + "neon sign", # neon, sign (unique) + "storm cellar", # storm, cellar (unique) + "honey vat", # honey, vat (unique) + "sugar cube", # sugar, cube (unique) + "salt shaker", # salt, shaker (unique) + "pepper grinder", # pepper, grinder (unique) + "coffee bean", # coffee, bean (unique) + "tea leaf", # tea, leaf (unique) + "orange peel", # orange, peel (unique) + "lemon wedge", # lemon, wedge (unique) + "lime zest", # lime, zest (unique) + "cocoa powder", # cocoa, powder (unique) + "spice rack", # spice, rack (unique) + "kitchen basin", # kitchen, basin (unique) + "garden hose", # garden, hose (unique) + "water tower", # water, tower (unique) + "radio mast", # radio, mast (unique) + "signal flare", # signal, flare (unique) + "safety pin", # safety, pin (unique) + "rubber band", # rubber, band (unique) + "sticky note", # sticky, note (unique) + "desk lamp", # desk, lamp (unique) + "floor mat", # floor, mat (unique) + "window latch", # window, latch (unique) + "mail slot", # mail, slot (unique) + "ink bottle", # ink, bottle (unique) + "paint brush", # paint, brush (unique) + "canvas frame", # canvas, frame (unique) + "photo album", # photo, album (unique) + "ticket stub", # ticket, stub (unique) + "bus stop", # bus, stop (unique) + "parking meter", # parking, meter (unique) + "street vendor", # street, vendor (unique) + "market stall", # market, stall (unique) + "fruit crate", # fruit, crate (unique) + "toy chest", # toy, chest (unique) + "sock drawer", # sock, drawer (unique) + "coat hanger", # coat, hanger (unique) + "shoe shelf", # shoe, shelf (unique) + "laundry basket", # laundry, basket (unique) + "soap dish", # soap, dish (unique) + "bath towel", # bath, towel (unique) + "shower curtain", # shower, curtain (unique) + "sink faucet", # sink, faucet (unique) + "flower pot", # flower, pot (unique) + "rose bush", # rose, bush (unique) + "pine cone", # pine, cone (unique) + "oak twig", # oak, twig (unique) + "maple syrup", # maple, syrup (unique) + "birch bark", # birch, bark (unique) + "moss patch", # moss, patch (unique) + "pond waterway", # pond, waterway (unique) + "river delta", # river, delta (unique) + "ocean current", # ocean, current (unique) + "sand dune", # sand, dune (unique) + "cliff edge", # cliff, edge (unique) + "cave entrance", # cave, entrance (unique) + "mountain pass", # mountain, pass (unique) + "forest canopy", # forest, canopy (unique) + "prairie grass", # prairie, grass (unique) + "desert mirage", # desert, mirage (unique) + "arctic ice", # arctic, ice (unique) + "tropical cyclone", # tropical, cyclone (unique) + ] + unrelated_strings = [ + "gavel", + "kelp", + "accordion", + "sunscreen", + "asteroid", + "linoleum", + "metaphor", + "tarmac", + "sourdough", + "thermostat", + "yurt", + "neutron", + "papyrus", + "anemone", + "calculus", + "saxophone", + "haystack", + "molecule", + "topaz", + "turnstile", + "velodrome", + "parachute", + "tundra", + "barcode", + "kiwi", + "eclipse", + "fishhook", + "candelabra", + "microchip", + "monastery", + "pesticide", + "ravioli", + "sandstone", + "bobsled", + "quarantine", + "sunsail", + "moccasin", + "manuscript", + "stalactite", + "watermark", + "diploma", + "tortoise", + "helium", + "saffron", + "catapult", + "quicksilver", + "basilisk", + "tapestry", + "taxidermy", + "hazelnut", + "hourglass", + "javelin", + "barometer", + "cottage", + "doughnut", + "avocado", + "glacier", + "ballet", + "wrench", + "firefly", + "circuitry", + "scarecrow", + "limestone", + "origami", + "cyanide", + "cobalt", + "marimba", + "solder", + "dandelion", + "bookkeeping", + "pinnacle", + "semaphore", + "magma", + "skeleton", + "rhinestone", + "gondola", + "tangerine", + "isotope", + "harpsichord", + "casserole", + "crossbow", + "vinegar", + "nebula", + "cobweb", + "ukulele", + "satchel", + "cathedral", + "algorithm", + "fuselage", + "sunspear", + "truffle", + "palisade", + "radiograph", + "handrail", + "hammock", + "inkwell", + "snowdrift", + "parliament", + "geode", + "marionette", + "detergent", + "stethoscope", + "carnival", + "clipboard", + "hydrangea", + "pomegranate", + "sphinx", + "keystone", + "polymer", + "mosaic", + "thunderclap", + "sundial", + "lanyard", + "icepick", + "pottery", + "quill", + "skylight", + "monolith", + "turnip", + "oxygen", + "refinery", + "mandolin", + "featherweight", + "saltpeter", + "aqueduct", + "typewriter", + "plankton", + "detonation", + "chandelier", + "hedgehog", + "velvet", + "radiator", + "hologram", + "honeycomb", + "mortgage", + "seismograph", + "whalebone", + "tollbooth", + "necktie", + "cassette", + "aardvark", + "pylon", + "marathon", + "soapstone", + "glyph", + ] + + print("STRINGS TEST") + print("------------") + big_test(strings) + + print("\nUNIQUE STRINGS TEST") + print("-------------------") + big_test(unique_strings) + + print("\nUNRELATED STRINGS TEST") + print("----------------------") + big_test(unrelated_strings) + + +if __name__ == "__main__": + print("Starting test...") + test_embedding() diff --git a/crackle_planning/crackle_planning/test_embedding_out.txt b/crackle_planning/crackle_planning/test_embedding_out.txt new file mode 100644 index 0000000..879f36a --- /dev/null +++ b/crackle_planning/crackle_planning/test_embedding_out.txt @@ -0,0 +1,982 @@ +Starting test... +STRINGS TEST +------------ +apple : ['apple orchard', 387, 0.37811189889907837] +rust : ['ruby', 489, 0.47461622953414917] +velvet : ['velvet curtain', 182, 0.17825794219970703] +moonlight : ['starlight', 592, 0.39033156633377075] +cobblestone : ['stone pebble', 477, 0.3134099841117859] +paperclip : ['hairpin', 139, 0.4812548756599426] +toaster : ['microwave', 129, 0.4673558473587036] +pencil : ['pencil sharpener', 579, 0.24245238304138184] +snow : ['snowstorm', 587, 0.3270763158798218] +thunder : ['storm cloud', 369, 0.49937009811401367] +cactus : ['succulent', 430, 0.36880600452423096] +reef : ['coral reef', 246, 0.4116673469543457] +saffron : ['coriander', 157, 0.5454502105712891] +marble : ['granite slab', 184, 0.4557529091835022] +circuit : ['power grid', 319, 0.5600559115409851] +pickle : ['pickle jar', 446, 0.4287481904029846] +satellite : ['space station', 594, 0.49940991401672363] +pyramid : ['pine cone', 238, 0.5487982332706451] +lantern : ['stone lantern', 260, 0.2141832709312439] +invoice : ['paper receipt', 398, 0.45290225744247437] +stadium : ['cathedral', 110, 0.5040689408779144] +chimney : ['fireplace', 124, 0.34978318214416504] +harbor : ['busy harbor', 257, 0.2866613268852234] +jigsaw : ['screwdriver', 41, 0.5433353185653687] +cinnamon : ['cocoa powder', 197, 0.512421578168869] +umbrella : ['monsoon', 71, 0.5119665265083313] +mustard : ['marmalade', 158, 0.4714513421058655] +helmet : ['helmet strap', 528, 0.32529187202453613] +orchard : ['apple orchard', 387, 0.2879102826118469] +penguin : ['hedgehog', 76, 0.5052554905414581] +fjord : ['glacier', 94, 0.4897375702857971] +telescope : ['microscope', 33, 0.4581800103187561] +carnival : ['carnival mask', 345, 0.28640180826187134] +microscope : ['microscope slide', 545, 0.19348573684692383] +treaty : ['coupon', 128, 0.5778746008872986] +gravity : ['gravity well', 599, 0.3988233804702759] +shoelace : ['shoe rack', 229, 0.4311023950576782] +mushroom : ['moss patch', 242, 0.5277422368526459] +seashell : ['seaglass', 473, 0.4332388639450073] +windmill : ['coupon', 128, 0.4873698949813843] +brochure : ['newsletter', 149, 0.47132086753845215] +screwdriver : ['spatula', 83, 0.4620317816734314] +quartz : ['sapphire', 487, 0.5137101411819458] +raven : ['dragonfly', 53, 0.6014375388622284] +anvil : ['windmill', 39, 0.5215529203414917] +luggage : ['suitcase', 75, 0.1785978078842163] +pancake : ['cheesecake', 160, 0.5341075658798218] +basil : ['basil plant', 433, 0.16149407625198364] +shampoo : ['soap dish', 231, 0.5305977165699005] +accordion : ['turnstile', 73, 0.4521508812904358] +violin : ['clarinet', 165, 0.4620087742805481] +stethoscope : ['saxophone', 105, 0.5152392387390137] +radiator : ['thermostat', 104, 0.3599817156791687] +dragonfly : ['dragonfly wing', 468, 0.1433979868888855] +dandelion : ['turnip', 155, 0.47053492069244385] +octopus : ['sea otter', 168, 0.4636939764022827] +sandpaper : ['paint brush', 213, 0.4809088110923767] +notebook : ['lab notebook', 299, 0.4217011332511902] +candle : ['wax candle', 262, 0.2718488574028015] +boulder : ['canyon', 113, 0.5694248080253601] +hinge : ['door hinge', 210, 0.23381435871124268] +doorknob : ['door hinge', 210, 0.3629996180534363] +horizon : ['sunrise', 589, 0.5284176170825958] +tundra : ['glacier', 94, 0.5361056327819824] +volcano : ['volcanic ash', 496, 0.3741932511329651] +semaphore : ['signal flag', 510, 0.4870358109474182] +backpack : ['suitcase', 75, 0.40817463397979736] +chalkboard : ['scoreboard', 534, 0.4364268183708191] +soybean : ['coffee bean', 192, 0.4852079153060913] +tangerine : ['orange peel', 194, 0.4616706967353821] +avalanche : ['volcano', 64, 0.4978712797164917] +monsoon : ['snowstorm', 587, 0.4718220829963684] +hourglass : ['hour hand', 582, 0.5046133995056152] +turnstile : ['accordion', 49, 0.4521508812904358] +wardrobe : ['suitcase', 75, 0.476107656955719] +suitcase : ['luggage', 45, 0.1785978078842163] +hedgehog : ['penguin', 29, 0.5052554905414581] +armadillo : ['tortoise', 96, 0.524960845708847] +lighthouse : ['lantern', 18, 0.4047132730484009] +riverbank : ['river stone', 478, 0.2790558338165283] +typewriter : ['ballpoint pen', 576, 0.5099062323570251] +teacup : ['tea caddy', 453, 0.4461919665336609] +peppermint : ['mint sprig', 434, 0.44482308626174927] +spatula : ['plastic spoon', 178, 0.3819643259048462] +goggles : ['safety goggles', 300, 0.2495144009590149] +copper : ['copper wire', 281, 0.22081881761550903] +platinum : ['silver ore', 491, 0.5615873336791992] +mercury : ['copper', 85, 0.5068223476409912] +nebula : ['storm cloud', 369, 0.44178199768066406] +asteroid : ['meteorite', 480, 0.4691184163093567] +comet : ['meteorite', 480, 0.4522082805633545] +tugboat : ['cargo ship', 258, 0.4425897002220154] +sailboat : ['cargo ship', 258, 0.46334338188171387] +iceberg : ['ice cave', 495, 0.46194249391555786] +glacier : ['arctic ice', 254, 0.41653478145599365] +barnacle : ['barn door', 380, 0.5432298183441162] +tortoise : ['octopus', 55, 0.5140692889690399] +gazelle : ['windmill', 39, 0.6052204370498657] +sardine : ['fish market', 223, 0.5440158247947693] +parchment : ['packing tape', 400, 0.5228565633296967] +blueprint : ['brochure', 40, 0.5074392855167389] +toolbox : ['accordion', 49, 0.48001497983932495] +mortar : ['cement mixer', 417, 0.4966523051261902] +pillowcase : ['suitcase', 75, 0.46922844648361206] +thermostat : ['radiator', 52, 0.3599817156791687] +saxophone : ['trombone', 163, 0.3522041440010071] +stopwatch : ['station clock', 521, 0.3660116195678711] +handkerchief : ['napkin holder', 456, 0.46553510427474976] +barricade : ['barbed wire', 273, 0.4952874779701233] +aqueduct : ['water tower', 201, 0.5228995382785797] +cathedral : ['stadium', 20, 0.5040689408779144] +bunkhouse : ['farmhouse', 377, 0.5034551024436951] +meadow : ['prairie grass', 252, 0.4739827513694763] +canyon : ['cactus', 10, 0.461622953414917] +gutter : ['stairwell', 421, 0.5640849471092224] +stapler : ['staple remover', 570, 0.2654668092727661] +keyhole : ['door hinge', 210, 0.45287883281707764] +balcony : ['stairwell', 421, 0.49582552909851074] +tapestry : ['silk thread', 274, 0.498363733291626] +popsicle : ['frozen puddle', 372, 0.541719913482666] +hazelnut : ['coffee bean', 192, 0.5093292891979218] +jellyfish : ['octopus', 55, 0.5055909156799316] +manatee : ['sea otter', 168, 0.5541017055511475] +mongoose : ['ruby', 489, 0.5004687607288361] +fireplace : ['chimney', 21, 0.34978318214416504] +skylight : ['window shade', 427, 0.47900718450546265] +sundial : ['digital clock', 585, 0.4691964387893677] +freight : ['freight car', 519, 0.3354493975639343] +coupon : ['newsletter', 149, 0.4566831588745117] +microwave : ['toaster', 6, 0.4673558473587036] +icebox : ['shoebox', 138, 0.3310639262199402] +bathrobe : ['bath towel', 232, 0.22616970539093018] +corridor : ['stairwell', 421, 0.4929039478302002] +sidewalk : ['boulevard', 135, 0.4816696047782898] +handrail : ['stairwell', 421, 0.4239441752433777] +boulevard : ['sidewalk', 133, 0.4816696047782898] +headstone : ['helmet', 27, 0.5512800514698029] +windchime : ['train whistle', 520, 0.49331212043762207] +shoebox : ['shoe rack', 229, 0.3273535370826721] +hairpin : ['safety pin', 204, 0.4149191379547119] +filament : ['paper lantern', 259, 0.5387150347232819] +wheelbarrow : ['forklift', 407, 0.4722541570663452] +gondola : ['elevator', 422, 0.4906443953514099] +wetsuit : ['safety vest', 410, 0.546337902545929] +snowshoe : ['snowstorm', 587, 0.47796517610549927] +velodrome : ['stadium', 20, 0.5216073393821716] +seasickness : ['stormy sea', 502, 0.5193288922309875] +frostbite : ['frozen puddle', 372, 0.5251964032649994] +aftershock : ['avalanche', 70, 0.5776047706604004] +newsletter : ['newsstand', 225, 0.41089093685150146] +thesaurus : ['telescope', 31, 0.5987453758716583] +cardboard : ['cardboard box', 288, 0.11619490385055542] +bedframe : ['baseboard', 425, 0.3911750316619873] +cutlery : ['chef knife', 442, 0.402538001537323] +saucepan : ['cooking pot', 437, 0.37477171421051025] +turnip : ['dandelion', 54, 0.47053492069244385] +okra : ['octopus', 55, 0.5613551437854767] +coriander : ['basil', 47, 0.5406540334224701] +marmalade : ['mustard', 26, 0.4714513421058655] +crouton : ['sourdough', 162, 0.5398858785629272] +cheesecake : ['cheese wheel', 444, 0.4428979158401489] +buttermilk : ['butter churn', 383, 0.477159321308136] +sourdough : ['bread loaf', 443, 0.35608428716659546] +trombone : ['saxophone', 105, 0.3522041440010071] +xylophone : ['trombone', 163, 0.4597631096839905] +clarinet : ['saxophone', 105, 0.3967452049255371] +metronome : ['stopwatch', 106, 0.5011669099330902] +blue jay : ['bird nest', 470, 0.5553770661354065] +sea otter : ['octopus', 55, 0.4636939764022827] +stone bridge : ['iron gate', 173, 0.49764925241470337] +glass jar : ['pickle jar', 446, 0.29147469997406006] +paper boat : ['paper lantern', 259, 0.4003322124481201] +gold coin : ['gold nugget', 490, 0.30211514234542847] +iron gate : ['garden gate', 235, 0.47602444887161255] +silent engine : ['rocket engine', 596, 0.40334057807922363] +broken compass : ['compass', 508, 0.5736093521118164] +dusty attic : ['storm cellar', 187, 0.48952507972717285] +ancient map : ['topographic map', 368, 0.5487172603607178] +plastic spoon : ['spatula', 83, 0.3819643259048462] +electric kettle : ['microwave', 129, 0.5664322972297668] +ceramic mug : ['ceramic tile', 284, 0.31733399629592896] +wooden plank : ['wood crate', 289, 0.4304942488670349] +velvet curtain : ['velvet', 2, 0.17825794219970703] +crystal vase : ['crystal glass', 391, 0.2517726421356201] +granite slab : ['marble', 13, 0.4557529091835022] +midnight train : ['moonlight', 3, 0.5377723276615143] +neon sign : ['signal flare', 203, 0.5062674880027771] +storm cellar : ['snowstorm', 587, 0.4838164448738098] +honey jar : ['pickle jar', 446, 0.3137000799179077] +sugar cube : ['ice crystal', 371, 0.5485354661941528] +salt shaker : ['pepper grinder', 191, 0.4565032720565796] +pepper grinder : ['coffee grinder', 454, 0.37747758626937866] +coffee bean : ['coffee grinder', 454, 0.3263245224952698] +tea leaf : ['tea caddy', 453, 0.4348456859588623] +orange peel : ['lime zest', 196, 0.4536747336387634] +lemon wedge : ['lime zest', 196, 0.4857417345046997] +lime zest : ['orange peel', 194, 0.4536747336387634] +cocoa powder : ['cinnamon', 24, 0.512421578168869] +spice rack : ['spice tin', 452, 0.2869948148727417] +kitchen sink : ['sink faucet', 234, 0.4267030358314514] +garden hose : ['garden gate', 235, 0.4231710433959961] +water tower : ['radio tower', 202, 0.41977494955062866] +radio tower : ['water tower', 201, 0.41977494955062866] +signal flare : ['signal flag', 510, 0.2868216037750244] +safety pin : ['hairpin', 139, 0.4149191379547119] +rubber band : ['rubber duck', 347, 0.43008023500442505] +sticky note : ['sticky tab', 574, 0.37828731536865234] +desk lamp : ['stage light', 336, 0.43100225925445557] +floor mat : ['place mat', 458, 0.1783311367034912] +window latch : ['door hinge', 210, 0.3535485863685608] +door hinge : ['hinge', 60, 0.23381435871124268] +mail slot : ['metal locker', 290, 0.4927036166191101] +ink bottle : ['medicine bottle', 557, 0.2553284168243408] +paint brush : ['paint roller', 415, 0.23635143041610718] +canvas frame : ['doorframe', 424, 0.40081340074539185] +photo album : ['calendar page', 581, 0.5448205769062042] +ticket stub : ['bus ticket', 523, 0.3354426622390747] +train platform : ['platform bench', 522, 0.4716656804084778] +bus stop : ['bus ticket', 523, 0.37570810317993164] +parking meter : ['parking permit', 298, 0.2379976511001587] +street vendor : ['market stall', 221, 0.33451032638549805] +market stall : ['street vendor', 220, 0.33451032638549805] +fruit crate : ['wood crate', 289, 0.23223614692687988] +fish market : ['market stall', 221, 0.4043997526168823] +bookstore : ['coffee shop', 333, 0.4949615001678467] +newsstand : ['newsletter', 149, 0.41089093685150146] +toy chest : ['wood crate', 289, 0.4937347173690796] +sock drawer : ['shoebox', 138, 0.4446936249732971] +coat hanger : ['shoe rack', 229, 0.4905872941017151] +shoe rack : ['shoebox', 138, 0.3273535370826721] +laundry basket : ['wheelbarrow', 141, 0.4924820065498352] +soap dish : ['soup bowl', 448, 0.42393213510513306] +bath towel : ['bathrobe', 131, 0.22616970539093018] +shower curtain : ['curtain rod', 428, 0.298037052154541] +sink faucet : ['kitchen sink', 199, 0.4267030358314514] +garden gate : ['herb garden', 432, 0.4160236716270447] +flower pot : ['flower vase', 460, 0.2118760347366333] +rose bush : ['rosemary twig', 435, 0.4490162134170532] +pine cone : ['pyramid', 17, 0.5487982332706451] +oak leaf : ['birch bark', 241, 0.4536019563674927] +maple syrup : ['marmalade', 158, 0.5665628015995026] +birch bark : ['oak leaf', 239, 0.4536019563674927] +moss patch : ['potted fern', 429, 0.49530941247940063] +pond water : ['potted fern', 429, 0.5559025406837463] +river delta : ['riverbank', 79, 0.3454385995864868] +ocean current : ['stormy sea', 502, 0.5614414215087891] +coral reef : ['reef', 11, 0.4116673469543457] +sand dune : ['desert mirage', 253, 0.42892009019851685] +cliff edge : ['ant hill', 469, 0.524507075548172] +cave entrance : ['ice cave', 495, 0.3555394411087036] +mountain pass : ['boarding pass', 296, 0.5251058638095856] +forest canopy : ['orchard', 28, 0.5320201218128204] +prairie grass : ['meadow', 112, 0.4739827513694763] +desert mirage : ['sand dune', 247, 0.42892009019851685] +arctic ice : ['glacier', 94, 0.41653478145599365] +tropical storm : ['snowstorm', 587, 0.4353328347206116] +quiet harbor : ['busy harbor', 257, 0.168573796749115] +busy harbor : ['quiet harbor', 256, 0.168573796749115] +cargo ship : ['cargo hold', 514, 0.3658291697502136] +paper lantern : ['stone lantern', 260, 0.29960501194000244] +stone lantern : ['lantern', 18, 0.2141832709312439] +oil lantern : ['stone lantern', 260, 0.22315728664398193] +wax candle : ['candle', 58, 0.2718488574028015] +scented candle : ['candle', 58, 0.29019367694854736] +cold drizzle : ['snowstorm', 587, 0.4936700463294983] +warm breeze : ['heatwave', 588, 0.5368711948394775] +sharp shadow : ['spotlight', 337, 0.5361908376216888] +soft echo : ['silent engine', 174, 0.5649405717849731] +steel beam : ['bedframe', 152, 0.5284099280834198] +brick wall : ['painted fence', 272, 0.49055808782577515] +glass ceiling : ['skylight', 125, 0.4801880121231079] +concrete pillar : ['brick wall', 269, 0.5324166119098663] +painted fence : ['garden gate', 235, 0.48253554105758667] +barbed wire : ['barricade', 108, 0.4952874779701233] +silk thread : ['cotton rope', 275, 0.4942741394042969] +cotton rope : ['rope ladder', 419, 0.404701292514801] +nylon strap : ['helmet strap', 528, 0.4115943908691406] +leather belt : ['leather wallet', 397, 0.30384671688079834] +wool scarf : ['handkerchief', 107, 0.5086943805217743] +silver ring : ['silver ore', 491, 0.3787229657173157] +brass key : ['doorknob', 61, 0.49600499868392944] +copper wire : ['copper', 85, 0.22081881761550903] +tin can : ['spice tin', 452, 0.42284685373306274] +aluminum foil : ['cardboard', 151, 0.5680738985538483] +ceramic tile : ['ceramic mug', 180, 0.31733399629592896] +porcelain plate : ['stoneware bowl', 286, 0.437438428401947] +stoneware bowl : ['soup bowl', 448, 0.34860390424728394] +plastic bin : ['plastic spoon', 178, 0.4306788444519043] +cardboard box : ['cardboard', 151, 0.11619490385055542] +wood crate : ['fruit crate', 222, 0.23223614692687988] +metal locker : ['mail slot', 211, 0.4927036166191101] +office chair : ['conference table', 292, 0.43747276067733765] +conference table : ['office chair', 291, 0.43747276067733765] +library card : ['playing card', 354, 0.49577170610427856] +student badge : ['access badge', 329, 0.21163493394851685] +passport stamp : ['boarding pass', 296, 0.420047402381897] +boarding pass : ['bus ticket', 523, 0.36100298166275024] +hotel keycard : ['access badge', 329, 0.4803910255432129] +parking permit : ['parking meter', 219, 0.2379976511001587] +lab notebook : ['notebook', 57, 0.4217011332511902] +safety goggles : ['goggles', 84, 0.2495144009590149] +glove box : ['work glove', 408, 0.3407917618751526] +first aid kit : ['fire extinguisher', 303, 0.5050780475139618] +fire extinguisher : ['fire escape', 420, 0.3411934971809387] +smoke alarm : ['smoke plume', 497, 0.4216204285621643] +carbon filter : ['centrifuge', 550, 0.5687724947929382] +air vent : ['steam vent', 498, 0.34788012504577637] +water valve : ['sink faucet', 234, 0.46979790925979614] +pressure gauge : ['water valve', 307, 0.4820621609687805] +engine block : ['engine room', 513, 0.44043785333633423] +gearbox : ['drive shaft', 311, 0.4249606132507324] +drive shaft : ['gearbox', 310, 0.4249606132507324] +brake pad : ['knee pad', 529, 0.40023916959762573] +spark plug : ['engine block', 309, 0.473442018032074] +fuel pump : ['spark plug', 313, 0.5227692127227783] +battery pack : ['spark plug', 313, 0.5266903042793274] +solar panel : ['wind turbine', 317, 0.5341231524944305] +wind turbine : ['windmill', 39, 0.49737316370010376] +hydro dam : ['water tower', 201, 0.5092798173427582] +power grid : ['circuit', 14, 0.5600559115409851] +control room : ['engine room', 513, 0.3913359045982361] +server rack : ['spice rack', 198, 0.42023247480392456] +fiber optic : ['filament', 140, 0.5916032493114471] +router : ['server rack', 321, 0.5060129761695862] +password : ['access badge', 329, 0.5317708253860474] +encryption key : ['password', 324, 0.5666654706001282] +backup drive : ['backpack', 66, 0.6037588119506836] +error log : ['audit trail', 328, 0.5317965447902679] +audit trail : ['error log', 327, 0.5317965447902679] +access badge : ['student badge', 294, 0.21163493394851685] +security camera : ['barcode scanner', 566, 0.5941914618015289] +vault door : ['barn door', 380, 0.381422758102417] +bank teller : ['cash register', 394, 0.534907191991806] +coffee shop : ['coffee bean', 192, 0.3619643449783325] +music hall : ['lecture hall', 543, 0.4477342963218689] +movie poster : ['ticket booth', 343, 0.6152158975601196] +stage light : ['desk lamp', 207, 0.43100225925445557] +spotlight : ['highlighter', 575, 0.43348830938339233] +drumstick : ['mushroom', 37, 0.5768727958202362] +guitar pick : ['pencil sharpener', 579, 0.5229848623275757] +piano bench : ['platform bench', 522, 0.3280354142189026] +sheet music : ['saxophone', 105, 0.5572420656681061] +dance floor : ['floor mat', 208, 0.5116984844207764] +ticket booth : ['bus ticket', 523, 0.35053902864456177] +street parade : ['carnival', 32, 0.5000848770141602] +carnival mask : ['carnival', 32, 0.28640180826187134] +paper crown : ['paper boat', 171, 0.4565424919128418] +rubber duck : ['rubber band', 205, 0.43008023500442505] +stuffed bear : ['jellyfish', 121, 0.5961489677429199] +toy robot : ['model rocket', 350, 0.5241901576519012] +model rocket : ['rocket engine', 596, 0.34616905450820923] +kite string : ['filament', 140, 0.578112930059433] +board game : ['chessboard', 355, 0.3815837502479553] +dice cup : ['espresso cup', 455, 0.4162212014198303] +playing card : ['index card', 573, 0.4406169056892395] +chessboard : ['board game', 352, 0.3815837502479553] +checkers piece : ['chessboard', 355, 0.4158107042312622] +snow globe : ['snowstorm', 587, 0.4502566456794739] +beach ball : ['soccer ball', 530, 0.4061047434806824] +swimming pool : ['tidal pool', 503, 0.4344558119773865] +diving board : ['baseboard', 425, 0.44996821880340576] +lifeguard chair : ['office chair', 291, 0.451335072517395] +campfire : ['fireplace', 124, 0.35233765840530396] +tent pole : ['windmill', 39, 0.5411260724067688] +sleeping bag : ['rice bag', 449, 0.4964336156845093] +hiking boot : ['snowshoe', 144, 0.5301123857498169] +trail marker : ['signal flag', 510, 0.5150734484195709] +compass rose : ['compass', 508, 0.44692128896713257] +topographic map : ['ancient map', 177, 0.5487172603607178] +storm cloud : ['stormy sea', 502, 0.43972647190093994] +rain barrel : ['riverbank', 79, 0.482277512550354] +ice crystal : ['crystal glass', 391, 0.266720712184906] +frozen puddle : ['frostbite', 147, 0.5251964032649994] +morning dew : ['evening fog', 374, 0.45837438106536865] +evening fog : ['morning dew', 373, 0.45837438106536865] +city skyline : ['sunrise', 589, 0.5294539928436279] +country road : ['trade route', 517, 0.5101540684700012] +farmhouse : ['bunkhouse', 111, 0.5034551024436951] +grain silo : ['grain bin', 451, 0.22816061973571777] +tractor tire : ['brake pad', 312, 0.5577234327793121] +barn door : ['vault door', 331, 0.381422758102417] +hay bale : ['bean sack', 450, 0.6198253035545349] +milk crate : ['wood crate', 289, 0.33264750242233276] +butter churn : ['buttermilk', 161, 0.477159321308136] +wheat field : ['meadow', 112, 0.5564246475696564] +corn stalk : ['fruit crate', 222, 0.5117709934711456] +pumpkin patch : ['apple orchard', 387, 0.5219164192676544] +apple orchard : ['orchard', 28, 0.2879102826118469] +vineyard row : ['wine bottle', 389, 0.5064420104026794] +wine bottle : ['ink bottle', 212, 0.3143671751022339] +cork stopper : ['ink bottle', 212, 0.49773192405700684] +crystal glass : ['crystal vase', 183, 0.2517726421356201] +bar counter : ['menu board', 393, 0.48255157470703125] +menu board : ['scoreboard', 534, 0.47855252027511597] +cash register : ['receipt printer', 395, 0.3401891589164734] +receipt printer : ['paper receipt', 398, 0.2959554195404053] +coin purse : ['leather wallet', 397, 0.4528612494468689] +leather wallet : ['leather belt', 277, 0.30384671688079834] +paper receipt : ['receipt printer', 395, 0.2959554195404053] +shipping label : ['sticker label', 565, 0.3621077537536621] +packing tape : ['measuring tape', 412, 0.4351208806037903] +bubble wrap : ['packing tape', 400, 0.5121188163757324] +fragile sticker : ['sticker label', 565, 0.32075798511505127] +delivery van : ['cargo ship', 258, 0.5242857336997986] +loading dock : ['cargo hold', 514, 0.48345470428466797] +warehouse aisle : ['laundry basket', 230, 0.5517858862876892] +pallet jack : ['forklift', 407, 0.41136646270751953] +forklift : ['pallet jack', 406, 0.41136646270751953] +work glove : ['baseball glove', 532, 0.33957189321517944] +hard hat : ['helmet', 27, 0.42608582973480225] +safety vest : ['safety goggles', 300, 0.4163760542869568] +tool belt : ['leather belt', 277, 0.3698081970214844] +measuring tape : ['packing tape', 400, 0.4351208806037903] +spirit level : ['horizon', 62, 0.6665519773960114] +sledgehammer : ['anvil', 44, 0.5346995890140533] +paint roller : ['paint brush', 213, 0.23635143041610718] +plaster : ['mortar', 102, 0.5102512836456299] +cement mixer : ['mortar', 102, 0.4966523051261902] +blue tarp : ['packing tape', 400, 0.5489562153816223] +rope ladder : ['cotton rope', 275, 0.404701292514801] +fire escape : ['fire extinguisher', 303, 0.3411934971809387] +stairwell : ['handrail', 134, 0.4239441752433777] +elevator : ['stairwell', 421, 0.437158465385437] +hallway mirror : ['clinic hallway', 559, 0.45441919565200806] +doorframe : ['canvas frame', 214, 0.40081340074539185] +baseboard : ['bedframe', 152, 0.3911750316619873] +ceiling fan : ['desk lamp', 207, 0.5018532276153564] +window shade : ['skylight', 125, 0.47900718450546265] +curtain rod : ['shower curtain', 233, 0.298037052154541] +potted fern : ['flower pot', 236, 0.44657909870147705] +succulent : ['cactus', 10, 0.36880600452423096] +bonsai tree : ['potted fern', 429, 0.5236805975437164] +herb garden : ['garden gate', 235, 0.4160236716270447] +basil plant : ['basil', 47, 0.16149407625198364] +mint sprig : ['peppermint', 82, 0.44482308626174927] +rosemary twig : ['rose bush', 237, 0.4490162134170532] +thyme bundle : ['basil', 47, 0.4917494058609009] +cooking pot : ['saucepan', 154, 0.37477171421051025] +ladle : ['soup bowl', 448, 0.4201279878616333] +whisk : ['spatula', 83, 0.4634016752243042] +rolling pin : ['hairpin', 139, 0.41917282342910767] +cutting board : ['cutlery', 153, 0.4173417091369629] +chef knife : ['cutlery', 153, 0.402538001537323] +bread loaf : ['sourdough', 162, 0.35608428716659546] +cheese wheel : ['cheesecake', 160, 0.4428979158401489] +olive jar : ['pickle jar', 446, 0.24671274423599243] +pickle jar : ['olive jar', 445, 0.24671274423599243] +tomato can : ['tin can', 282, 0.5323975086212158] +soup bowl : ['stoneware bowl', 286, 0.34860390424728394] +rice bag : ['bean sack', 450, 0.35545963048934937] +bean sack : ['rice bag', 449, 0.35545963048934937] +grain bin : ['grain silo', 378, 0.22816061973571777] +spice tin : ['spice rack', 198, 0.2869948148727417] +tea caddy : ['tea leaf', 193, 0.4348456859588623] +coffee grinder : ['coffee bean', 192, 0.3263245224952698] +espresso cup : ['dice cup', 353, 0.4162212014198303] +napkin holder : ['handkerchief', 107, 0.46553510427474976] +table runner : ['place mat', 458, 0.4984598159790039] +place mat : ['floor mat', 208, 0.1783311367034912] +centerpiece : ['spotlight', 337, 0.5479284524917603] +flower vase : ['flower pot', 236, 0.2118760347366333] +rose petal : ['flower pot', 236, 0.44043993949890137] +lily stem : ['flower pot', 236, 0.5269865095615387] +tulip bulb : ['turnip', 155, 0.5051898956298828] +sunflower : ['soybean', 68, 0.4880424737930298] +honeybee : ['honey jar', 188, 0.3802988529205322] +butterfly : ['dragonfly', 53, 0.3242983818054199] +ladybug : ['butterfly', 466, 0.4026447534561157] +dragonfly wing : ['dragonfly', 53, 0.1433979868888855] +ant hill : ['cliff edge', 248, 0.524507075548172] +bird nest : ['honeybee', 465, 0.544716477394104] +feather : ['butterfly', 466, 0.4808349609375] +eggshell : ['seaglass', 473, 0.493679940700531] +seaglass : ['seashell', 38, 0.4332388639450073] +driftwood : ['shipwreck', 505, 0.496676504611969] +shell necklace : ['jade pendant', 484, 0.40195363759994507] +pearl bead : ['shell necklace', 475, 0.42466503381729126] +stone pebble : ['cobblestone', 4, 0.3134099841117859] +river stone : ['riverbank', 79, 0.2790558338165283] +lava rock : ['volcano', 64, 0.43586140871047974] +meteorite : ['comet', 90, 0.4522082805633545] +fossil : ['meteorite', 480, 0.5488230288028717] +amber shard : ['obsidian', 483, 0.513700008392334] +obsidian : ['sapphire', 487, 0.49509310722351074] +jade pendant : ['shell necklace', 475, 0.40195363759994507] +opal : ['compass', 508, 0.5122455358505249] +diamond : ['silver ring', 279, 0.4585210680961609] +sapphire : ['emerald', 488, 0.4026823043823242] +emerald : ['sapphire', 487, 0.4026823043823242] +ruby : ['rust', 1, 0.47461622953414917] +gold nugget : ['gold coin', 172, 0.30211514234542847] +silver ore : ['silver ring', 279, 0.3787229657173157] +iron ore : ['silver ore', 491, 0.4367230534553528] +coal seam : ['salt mine', 494, 0.44472062587738037] +salt mine : ['coal seam', 493, 0.44472062587738037] +ice cave : ['cave entrance', 249, 0.3555394411087036] +volcanic ash : ['volcano', 64, 0.3741932511329651] +smoke plume : ['smoke alarm', 304, 0.4216204285621643] +steam vent : ['air vent', 306, 0.34788012504577637] +hot spring : ['steam vent', 498, 0.522072821855545] +cool stream : ['cold drizzle', 264, 0.6222041547298431] +quiet lagoon : ['quiet harbor', 256, 0.4261443018913269] +stormy sea : ['storm cloud', 369, 0.43972647190093994] +tidal pool : ['swimming pool', 359, 0.4344558119773865] +wave crest : ['stormy sea', 502, 0.5184213817119598] +shipwreck : ['cargo ship', 258, 0.4931170344352722] +anchor chain : ['shell necklace', 475, 0.5092045664787292] +life raft : ['lifeguard chair', 361, 0.46057140827178955] +compass : ['compass rose', 367, 0.44692128896713257] +nautical chart : ['sailboat', 92, 0.5134220123291016] +signal flag : ['signal flare', 203, 0.2868216037750244] +captain's log : ['error log', 327, 0.5440478324890137] +crew cabin : ['engine room', 513, 0.45168524980545044] +engine room : ['control room', 320, 0.3913359045982361] +cargo hold : ['cargo ship', 258, 0.3658291697502136] +harbor pilot : ['harbor', 22, 0.30642688274383545] +customs form : ['shipping label', 399, 0.5532555282115936] +trade route : ['country road', 376, 0.5101540684700012] +rail switch : ['train platform', 217, 0.49531352519989014] +freight car : ['freight', 127, 0.3354493975639343] +train whistle : ['referee whistle', 537, 0.3778820037841797] +station clock : ['digital clock', 585, 0.17027902603149414] +platform bench : ['piano bench', 340, 0.3280354142189026] +bus ticket : ['ticket stub', 216, 0.3354426622390747] +subway map : ['bus stop', 218, 0.532191812992096] +streetcar : ['freight car', 519, 0.35858863592147827] +bike lane : ['sidewalk', 133, 0.4948025345802307] +skateboard : ['diving board', 360, 0.48879075050354004] +helmet strap : ['helmet', 27, 0.32529187202453613] +knee pad : ['brake pad', 312, 0.40023916959762573] +soccer ball : ['beach ball', 358, 0.4061047434806824] +tennis racket : ['guitar pick', 339, 0.5600227415561676] +baseball glove : ['work glove', 408, 0.33957189321517944] +hockey puck : ['soccer ball', 530, 0.4353717565536499] +scoreboard : ['chessboard', 355, 0.4084070324897766] +team jersey : ['soccer ball', 530, 0.5928529798984528] +coach clipboard : ['scoreboard', 534, 0.45255935192108154] +referee whistle : ['train whistle', 520, 0.3778820037841797] +trophy case : ['suitcase', 75, 0.49812668561935425] +medal ribbon : ['silver ring', 279, 0.5634165406227112] +certificate : ['diploma', 541, 0.47470957040786743] +diploma : ['certificate', 540, 0.47470957040786743] +textbook : ['notebook', 57, 0.5263833105564117] +lecture hall : ['music hall', 334, 0.4477342963218689] +lab coat : ['lab notebook', 299, 0.4785374402999878] +microscope slide : ['microscope', 33, 0.19348573684692383] +test tube : ['culture plate', 548, 0.47955453395843506] +petri dish : ['culture plate', 548, 0.4558982253074646] +culture plate : ['porcelain plate', 285, 0.443149209022522] +pipette : ['medicine bottle', 557, 0.49280446767807007] +centrifuge : ['carbon filter', 305, 0.5687724947929382] +chemical flask : ['glass jar', 170, 0.3938063979148865] +oxygen tank : ['test tube', 546, 0.5794039070606232] +heart monitor : ['stethoscope', 51, 0.5164602994918823] +surgical mask : ['carnival mask', 345, 0.503453940153122] +sterile gauze : ['bandage roll', 556, 0.5151838958263397] +bandage roll : ['packing tape', 400, 0.4527600407600403] +medicine bottle : ['ink bottle', 212, 0.2553284168243408] +pill organizer : ['desk organizer', 580, 0.3233487606048584] +clinic hallway : ['waiting room', 560, 0.4089180827140808] +waiting room : ['clinic hallway', 559, 0.4089180827140808] +reception desk : ['ticket booth', 343, 0.43870675563812256] +appointment card : ['boarding pass', 296, 0.4262227416038513] +insurance form : ['invoice', 19, 0.5699067711830139] +patient chart : ['pill organizer', 558, 0.4852749705314636] +sticker label : ['fragile sticker', 402, 0.32075798511505127] +barcode scanner : ['receipt printer', 395, 0.3856087923049927] +printer toner : ['ink cartridge', 569, 0.40567243099212646] +paper tray : ['paper receipt', 398, 0.4664466381072998] +ink cartridge : ['printer toner', 567, 0.40567243099212646] +staple remover : ['stapler', 115, 0.2654668092727661] +binder clip : ['hairpin', 139, 0.49909818172454834] +spiral notebook : ['notebook', 57, 0.43242233991622925] +index card : ['playing card', 354, 0.4406169056892395] +sticky tab : ['sticky note', 206, 0.37828731536865234] +highlighter : ['spotlight', 337, 0.43348830938339233] +ballpoint pen : ['fountain pen', 577, 0.3246235251426697] +fountain pen : ['ballpoint pen', 576, 0.3246235251426697] +eraser : ['pencil sharpener', 579, 0.5730158090591431] +pencil sharpener : ['pencil', 7, 0.24245238304138184] +desk organizer : ['pill organizer', 558, 0.3233487606048584] +calendar page : ['appointment card', 562, 0.45811402797698975] +hour hand : ['minute hand', 583, 0.12903904914855957] +minute hand : ['hour hand', 582, 0.12903904914855957] +alarm clock : ['digital clock', 585, 0.2263980507850647] +digital clock : ['station clock', 521, 0.17027902603149414] +time zone : ['station clock', 521, 0.43063706159591675] +snowstorm : ['snow', 8, 0.3270763158798218] +heatwave : ['hot spring', 499, 0.5290766656398773] +sunrise : ['sunset', 590, 0.25302648544311523] +sunset : ['sunrise', 589, 0.25302648544311523] +eclipse : ['asteroid', 89, 0.5307308435440063] +starlight : ['moonlight', 3, 0.39033156633377075] +milky way : ['starlight', 592, 0.5346148312091827] +space station : ['satellite', 16, 0.49940991401672363] +launch pad : ['loading dock', 404, 0.49689817428588867] +rocket engine : ['model rocket', 350, 0.34616905450820923] +capsule : ['compass', 508, 0.556228756904602] +orbital path : ['asteroid', 89, 0.5832518637180328] +gravity well : ['gravity', 35, 0.3988233804702759] +AVERAGE DISTANCE: 0.42887150456508 + +UNIQUE STRINGS TEST +------------------- +apple : ['orchard', 28, 0.5390955209732056] +rust : ['copper', 85, 0.5694717168807983] +velvet : ['moonlight', 3, 0.600550651550293] +moonlight : ['midnight train', 161, 0.537724107503891] +cobblestone : ['marble', 13, 0.47093719244003296] +paperclip : ['penguin', 29, 0.5305823385715485] +toaster : ['pancake', 46, 0.56420037150383] +pencil : ['paint brush', 188, 0.45339953899383545] +snow : ['avalanche', 70, 0.5689583718776703] +thunder : ['monsoon', 71, 0.5108712911605835] +cactus : ['canyon', 113, 0.46159809827804565] +reef : ['jellyfish', 121, 0.6004925072193146] +saffron : ['coriander', 135, 0.5454502105712891] +marble : ['granite slab', 160, 0.4557529091835022] +circuit : ['cathedral', 110, 0.602990984916687] +pickle : ['penguin', 29, 0.525052398443222] +satellite : ['comet', 90, 0.577168881893158] +pyramid : ['pine cone', 208, 0.5487982332706451] +lantern : ['lighthouse', 78, 0.4047132730484009] +invoice : ['newsletter', 127, 0.5327737033367157] +stadium : ['cathedral', 110, 0.5040689408779144] +chimney : ['fireplace', 124, 0.34978318214416504] +harbor : ['barricade', 108, 0.556122899055481] +jigsaw : ['screwdriver', 41, 0.5433289110660553] +cinnamon : ['cocoa powder', 173, 0.512421578168869] +umbrella : ['monsoon', 71, 0.5119665265083313] +mustard : ['marmalade', 136, 0.4715617299079895] +helmet : ['anvil', 44, 0.6031703650951385] +orchard : ['forest canopy', 220, 0.5320201218128204] +penguin : ['hedgehog', 76, 0.5053174495697021] +fjord : ['glacier', 94, 0.4897250533103943] +telescope : ['microscope', 33, 0.4581800103187561] +carnival : ['candle', 58, 0.6333445012569427] +microscope : ['telescope', 31, 0.4581800103187561] +treaty : ['tugboat', 91, 0.6366810500621796] +gravity : ['hourglass', 72, 0.5561709105968475] +shoelace : ['shoe shelf', 200, 0.4277481436729431] +mushroom : ['moss patch', 212, 0.5276378989219666] +seashell : ['salt shaker', 166, 0.4912683963775635] +windmill : ['toolbox', 101, 0.4991886615753174] +brochure : ['newsletter', 127, 0.47132086753845215] +screwdriver : ['spatula', 83, 0.46206432580947876] +quartz : ['marble', 13, 0.5176275968551636] +raven : ['dragonfly', 53, 0.6014375388622284] +anvil : ['windmill', 39, 0.5214920043945312] +luggage : ['suitcase', 75, 0.1785978078842163] +pancake : ['cheesecake', 138, 0.5341075658798218] +basil : ['coriander', 135, 0.5405433475971222] +shampoo : ['soap dish', 202, 0.5305977165699005] +accordion : ['turnstile', 73, 0.4521508812904358] +violin : ['clarinet', 143, 0.4620087742805481] +stethoscope : ['saxophone', 105, 0.5152392387390137] +radiator : ['thermostat', 104, 0.3599817156791687] +dragonfly : ['jellyfish', 121, 0.5171863436698914] +dandelion : ['turnip', 133, 0.47053492069244385] +octopus : ['jellyfish', 121, 0.5056793689727783] +sandpaper : ['paint brush', 188, 0.4809088110923767] +notebook : ['sticky note', 182, 0.4943420886993408] +candle : ['lantern', 18, 0.46002644300460815] +boulder : ['canyon', 113, 0.5694257020950317] +hinge : ['keyhole', 116, 0.5119621157646179] +doorknob : ['window latch', 185, 0.4301106333732605] +horizon : ['cliff edge', 217, 0.5699641704559326] +tundra : ['glacier', 94, 0.536083310842514] +volcano : ['avalanche', 70, 0.4978914260864258] +semaphore : ['signal flare', 179, 0.5474718511104584] +backpack : ['suitcase', 75, 0.40817463397979736] +chalkboard : ['cardboard', 129, 0.49091726541519165] +soybean : ['coffee bean', 168, 0.4852079153060913] +tangerine : ['orange peel', 170, 0.4616706967353821] +avalanche : ['volcano', 64, 0.4978914260864258] +monsoon : ['thunder', 9, 0.5108712911605835] +hourglass : ['glass jar', 147, 0.5420453250408173] +turnstile : ['accordion', 49, 0.4521508812904358] +wardrobe : ['suitcase', 75, 0.476107656955719] +suitcase : ['luggage', 45, 0.1785978078842163] +hedgehog : ['penguin', 29, 0.5053174495697021] +armadillo : ['tortoise', 96, 0.524960845708847] +lighthouse : ['lantern', 18, 0.4047132730484009] +riverbank : ['river delta', 214, 0.3454385995864868] +typewriter : ['notebook', 57, 0.5519556999206543] +teacup : ['tea leaf', 169, 0.5286825597286224] +peppermint : ['cinnamon', 24, 0.5363247394561768] +spatula : ['plastic spoon', 155, 0.3819270730018616] +goggles : ['jigsaw', 23, 0.5844131708145142] +copper : ['mercury', 87, 0.5068223476409912] +platinum : ['gold coin', 149, 0.5837157964706421] +mercury : ['copper', 85, 0.5068223476409912] +nebula : ['comet', 90, 0.5302412807941437] +asteroid : ['comet', 90, 0.5205803215503693] +comet : ['asteroid', 89, 0.5205803215503693] +tugboat : ['sailboat', 92, 0.47717607021331787] +sailboat : ['tugboat', 91, 0.47717607021331787] +iceberg : ['glacier', 94, 0.4623432755470276] +glacier : ['arctic ice', 223, 0.416606605052948] +barnacle : ['octopus', 55, 0.5515410602092743] +tortoise : ['octopus', 55, 0.5140692889690399] +gazelle : ['windmill', 39, 0.6051991283893585] +sardine : ['sailboat', 92, 0.5609946846961975] +parchment : ['birch bark', 211, 0.5345576405525208] +blueprint : ['brochure', 40, 0.5074392855167389] +toolbox : ['accordion', 49, 0.48001497983932495] +mortar : ['marble', 13, 0.5752446055412292] +pillowcase : ['suitcase', 75, 0.46922844648361206] +thermostat : ['radiator', 52, 0.3599817156791687] +saxophone : ['trombone', 141, 0.3522041440010071] +stopwatch : ['metronome', 144, 0.5012728273868561] +handkerchief : ['bath towel', 203, 0.5294109880924225] +barricade : ['harbor', 22, 0.556122899055481] +aqueduct : ['water tower', 177, 0.5228995382785797] +cathedral : ['stadium', 20, 0.5040689408779144] +bunkhouse : ['bedframe', 130, 0.5420810580253601] +meadow : ['prairie grass', 221, 0.4739827513694763] +canyon : ['cactus', 10, 0.46159809827804565] +gutter : ['garden hose', 176, 0.5923968851566315] +stapler : ['spatula', 83, 0.5802872478961945] +keyhole : ['doorknob', 61, 0.481745183467865] +balcony : ['bedframe', 130, 0.5882867574691772] +tapestry : ['wardrobe', 74, 0.5879436433315277] +popsicle : ['pickle', 15, 0.5442207157611847] +hazelnut : ['coffee bean', 168, 0.509165346622467] +jellyfish : ['octopus', 55, 0.5056793689727783] +manatee : ['armadillo', 77, 0.5715155899524689] +mongoose : ['turnstile', 73, 0.5030977129936218] +fireplace : ['chimney', 21, 0.34978318214416504] +skylight : ['desk lamp', 183, 0.5349394083023071] +sundial : ['stopwatch', 106, 0.5225504338741302] +newsletter : ['brochure', 40, 0.47132086753845215] +thesaurus : ['telescope', 31, 0.5987453758716583] +cardboard : ['chalkboard', 67, 0.49091726541519165] +bedframe : ['bunkhouse', 111, 0.5420810580253601] +cutlery : ['spatula', 83, 0.5102018713951111] +saucepan : ['spatula', 83, 0.4938340187072754] +turnip : ['dandelion', 54, 0.47053492069244385] +okra : ['octopus', 55, 0.5613551437854767] +coriander : ['basil', 47, 0.5405433475971222] +marmalade : ['mustard', 26, 0.4715617299079895] +crouton : ['sourdough', 140, 0.5398858785629272] +cheesecake : ['pancake', 46, 0.5341075658798218] +buttermilk : ['sourdough', 140, 0.548316478729248] +sourdough : ['crouton', 137, 0.5398858785629272] +trombone : ['saxophone', 105, 0.3522041440010071] +xylophone : ['trombone', 141, 0.4597631096839905] +clarinet : ['saxophone', 105, 0.3967452049255371] +metronome : ['stopwatch', 106, 0.5012728273868561] +blue jay : ['blueprint', 100, 0.613607794046402] +stone bridge : ['iron gate', 150, 0.4976957440376282] +glass jar : ['ink bottle', 187, 0.3652535080909729] +paper boat : ['cardboard', 129, 0.5185050666332245] +gold coin : ['platinum', 86, 0.5837157964706421] +iron gate : ['stone bridge', 146, 0.4976957440376282] +silent engine : ['windmill', 39, 0.5930764675140381] +broken compass : ['comet', 90, 0.6120991706848145] +dusty attic : ['storm cellar', 163, 0.48952507972717285] +ancient map : ['tapestry', 118, 0.6654049456119537] +plastic spoon : ['spatula', 83, 0.3819270730018616] +electric kettle : ['ceramic mug', 157, 0.5689305067062378] +ceramic mug : ['glass jar', 147, 0.5142697095870972] +wooden plank : ['bedframe', 130, 0.5627785921096802] +crystal vase : ['glass jar', 147, 0.4477953314781189] +granite slab : ['marble', 13, 0.4557529091835022] +midnight train : ['moonlight', 3, 0.537724107503891] +neon sign : ['signal flare', 179, 0.5062674880027771] +storm cellar : ['dusty attic', 153, 0.48952507972717285] +honey vat : ['buttermilk', 139, 0.5910050272941589] +sugar cube : ['cocoa powder', 173, 0.5500516295433044] +salt shaker : ['pepper grinder', 167, 0.4565032720565796] +pepper grinder : ['salt shaker', 166, 0.4565032720565796] +coffee bean : ['soybean', 68, 0.4852079153060913] +tea leaf : ['teacup', 81, 0.5286825597286224] +orange peel : ['lime zest', 172, 0.4536665081977844] +lemon wedge : ['lime zest', 172, 0.48577409982681274] +lime zest : ['orange peel', 170, 0.4536665081977844] +cocoa powder : ['cinnamon', 24, 0.512421578168869] +spice rack : ['sock drawer', 198, 0.5153592526912689] +kitchen basin : ['sink faucet', 205, 0.47339844703674316] +garden hose : ['shower curtain', 204, 0.5520681738853455] +water tower : ['aqueduct', 109, 0.5228995382785797] +radio mast : ['radiator', 52, 0.5076909065246582] +signal flare : ['neon sign', 162, 0.5062674880027771] +safety pin : ['window latch', 185, 0.5334337949752808] +rubber band : ['windmill', 39, 0.6057865023612976] +sticky note : ['notebook', 57, 0.4943420886993408] +desk lamp : ['lantern', 18, 0.48984968662261963] +floor mat : ['bedframe', 130, 0.562810480594635] +window latch : ['doorknob', 61, 0.4301106333732605] +mail slot : ['newsletter', 127, 0.533221423625946] +ink bottle : ['glass jar', 147, 0.3652535080909729] +paint brush : ['pencil', 7, 0.45339953899383545] +canvas frame : ['accordion', 49, 0.5414203405380249] +photo album : ['brochure', 40, 0.5574561357498169] +ticket stub : ['stadium', 20, 0.5728830993175507] +bus stop : ['ticket stub', 191, 0.6081237196922302] +parking meter : ['market stall', 195, 0.5787587463855743] +street vendor : ['market stall', 195, 0.33451032638549805] +market stall : ['street vendor', 194, 0.33451032638549805] +fruit crate : ['cardboard', 129, 0.5434633195400238] +toy chest : ['sock drawer', 198, 0.5419281721115112] +sock drawer : ['shoe shelf', 200, 0.46948695182800293] +coat hanger : ['wardrobe', 74, 0.5672139525413513] +shoe shelf : ['shoelace', 36, 0.4277481436729431] +laundry basket : ['bath towel', 203, 0.5187047719955444] +soap dish : ['spatula', 83, 0.5121147632598877] +bath towel : ['shower curtain', 204, 0.46292316913604736] +shower curtain : ['bath towel', 203, 0.46292316913604736] +sink faucet : ['kitchen basin', 175, 0.47339844703674316] +flower pot : ['crystal vase', 159, 0.46261703968048096] +rose bush : ['moss patch', 212, 0.6235139667987823] +pine cone : ['pyramid', 17, 0.5487982332706451] +oak twig : ['birch bark', 211, 0.43740183115005493] +maple syrup : ['marmalade', 136, 0.5666136145591736] +birch bark : ['oak twig', 209, 0.43740183115005493] +moss patch : ['meadow', 112, 0.5258812606334686] +pond waterway : ['river delta', 214, 0.49687403440475464] +river delta : ['riverbank', 79, 0.3454385995864868] +ocean current : ['tropical cyclone', 224, 0.6098634004592896] +sand dune : ['desert mirage', 222, 0.42892009019851685] +cliff edge : ['canyon', 113, 0.5523660182952881] +cave entrance : ['canyon', 113, 0.5294012725353241] +mountain pass : ['pine cone', 208, 0.5893368721008301] +forest canopy : ['orchard', 28, 0.5320201218128204] +prairie grass : ['meadow', 112, 0.4739827513694763] +desert mirage : ['sand dune', 216, 0.42892009019851685] +arctic ice : ['glacier', 94, 0.416606605052948] +tropical cyclone : ['monsoon', 71, 0.5958273708820343] +AVERAGE DISTANCE: 0.5044610431459216 + +UNRELATED STRINGS TEST +---------------------- +gavel : ['javelin', 51, 0.5763504803180695] +kelp : ['fishhook', 26, 0.6239113509654999] +accordion : ['turnstile', 19, 0.4521508812904358] +sunscreen : ['sunsail', 35, 0.47154438495635986] +asteroid : ['eclipse', 25, 0.5307308435440063] +linoleum : ['limestone', 62, 0.6215006113052368] +metaphor : ['semaphore', 71, 0.35091257095336914] +tarmac : ['tollbooth', 137, 0.5595549643039703] +sourdough : ['doughnut', 54, 0.48749619722366333] +thermostat : ['radiator', 131, 0.3599817156791687] +yurt : ['cottage', 53, 0.5361099541187286] +neutron : ['nebula', 82, 0.5483430624008179] +papyrus : ['manuscript', 37, 0.537983626127243] +anemone : ['hedgehog', 129, 0.6228070855140686] +calculus : ['algorithm', 87, 0.6545105576515198] +saxophone : ['stethoscope', 101, 0.5152392387390137] +haystack : ['honeycomb', 133, 0.5525366961956024] +molecule : ['polymer', 108, 0.49319988489151] +topaz : ['mosaic', 109, 0.5685054361820221] +turnstile : ['accordion', 2, 0.4521508812904358] +velodrome : ['bobsled', 33, 0.6411547362804413] +parachute : ['catapult', 44, 0.5602435767650604] +tundra : ['glacier', 56, 0.5361056327819824] +barcode : ['algorithm', 87, 0.5221512317657471] +kiwi : ['avocado', 55, 0.5521106123924255] +eclipse : ['asteroid', 4, 0.5307308435440063] +fishhook : ['hammock', 94, 0.5266588032245636] +candelabra : ['chandelier', 128, 0.30332309007644653] +microchip : ['algorithm', 87, 0.5867162942886353] +monastery : ['cathedral', 86, 0.554569661617279] +pesticide : ['detergent', 100, 0.498507022857666] +ravioli : ['radiator', 131, 0.6044321656227112] +sandstone : ['soapstone', 143, 0.325999915599823] +bobsled : ['gondola', 75, 0.5577545464038849] +quarantine : ['cottage', 53, 0.6785191893577576] +sunsail : ['sunscreen', 3, 0.47154438495635986] +moccasin : ['mosaic', 109, 0.604662299156189] +manuscript : ['papyrus', 12, 0.537983626127243] +stalactite : ['soapstone', 143, 0.5313216745853424] +watermark : ['barcode', 23, 0.5580273568630219] +diploma : ['ballet', 57, 0.670754998922348] +tortoise : ['hedgehog', 129, 0.5179089605808258] +helium : ['neutron', 11, 0.5632761418819427] +saffron : ['tangerine', 76, 0.5544070601463318] +catapult : ['crossbow', 80, 0.4139162302017212] +quicksilver : ['kiwi', 24, 0.5907431840896606] +basilisk : ['sphinx', 106, 0.5345925986766815] +tapestry : ['mosaic', 109, 0.4972037672996521] +taxidermy : ['tapestry', 47, 0.6061405837535858] +hazelnut : ['doughnut', 54, 0.5508755147457123] +hourglass : ['honeycomb', 133, 0.6042674481868744] +javelin : ['velvet', 130, 0.5306350886821747] +barometer : ['seismograph', 135, 0.5652239918708801] +cottage : ['yurt', 10, 0.5361099541187286] +doughnut : ['sourdough', 8, 0.48749619722366333] +avocado : ['kiwi', 24, 0.5521106123924255] +glacier : ['tundra', 22, 0.5361056327819824] +ballet : ['marionette', 99, 0.6364325881004333] +wrench : ['fishhook', 26, 0.5784876048564911] +firefly : ['fishhook', 26, 0.5339438915252686] +circuitry : ['microchip', 28, 0.6140918135643005] +scarecrow : ['skeleton', 73, 0.6216301023960114] +limestone : ['sandstone', 32, 0.49319106340408325] +origami : ['accordion', 2, 0.595753937959671] +cyanide : ['cobalt', 65, 0.5350269675254822] +cobalt : ['cyanide', 64, 0.5350269675254822] +marimba : ['mandolin', 121, 0.5558297336101532] +solder : ['wrench', 58, 0.63596111536026] +dandelion : ['turnip', 118, 0.47053492069244385] +bookkeeping : ['calculus', 14, 0.6863144040107727] +pinnacle : ['keystone', 107, 0.6033195853233337] +semaphore : ['metaphor', 6, 0.35091257095336914] +magma : ['mosaic', 109, 0.5508467853069305] +skeleton : ['whalebone', 136, 0.5507161021232605] +rhinestone : ['geode', 98, 0.5789368748664856] +gondola : ['bobsled', 33, 0.5577545464038849] +tangerine : ['pomegranate', 105, 0.5477781891822815] +isotope : ['neutron', 11, 0.5542806684970856] +harpsichord : ['saxophone', 15, 0.5399725139141083] +casserole : ['cassette', 139, 0.5475893318653107] +crossbow : ['catapult', 44, 0.4139162302017212] +vinegar : ['detergent', 100, 0.610876590013504] +nebula : ['neutron', 11, 0.5483430624008179] +cobweb : ['clipboard', 103, 0.5705117881298065] +ukulele : ['mandolin', 121, 0.5208896994590759] +satchel : ['lanyard', 112, 0.5247489213943481] +cathedral : ['monastery', 29, 0.554569661617279] +algorithm : ['barcode', 23, 0.5221512317657471] +fuselage : ['accordion', 2, 0.6283828020095825] +sunspear : ['sunsail', 35, 0.4764558672904968] +truffle : ['velvet', 130, 0.5976737141609192] +palisade : ['pylon', 141, 0.5711684823036194] +radiograph : ['radiator', 131, 0.5469644665718079] +handrail : ['radiator', 131, 0.5729385912418365] +hammock : ['fishhook', 26, 0.5266588032245636] +inkwell : ['quill', 115, 0.5744828581809998] +snowdrift : ['tundra', 22, 0.5713670253753662] +parliament : ['palisade', 91, 0.6465874910354614] +geode : ['magma', 72, 0.5518949031829834] +marionette : ['marimba', 66, 0.5949908196926117] +detergent : ['pesticide', 30, 0.498507022857666] +stethoscope : ['saxophone', 15, 0.5152392387390137] +carnival : ['cathedral', 86, 0.6347155570983887] +clipboard : ['accordion', 2, 0.5209872126579285] +hydrangea : ['anemone', 13, 0.6232439875602722] +pomegranate : ['tangerine', 76, 0.5477781891822815] +sphinx : ['basilisk', 46, 0.5345925986766815] +keystone : ['kiwi', 24, 0.6022700071334839] +polymer : ['molecule', 17, 0.49319988489151] +mosaic : ['tapestry', 47, 0.4972037672996521] +thunderclap : ['gavel', 0, 0.6122830212116241] +sundial : ['sunscreen', 3, 0.5289863049983978] +lanyard : ['necktie', 138, 0.5165494084358215] +icepick : ['glacier', 56, 0.5657556653022766] +pottery : ['soapstone', 143, 0.5534464716911316] +quill : ['inkwell', 95, 0.5744828581809998] +skylight : ['sundial', 111, 0.576903373003006] +monolith : ['sphinx', 106, 0.5378003716468811] +turnip : ['dandelion', 68, 0.47053492069244385] +oxygen : ['helium', 42, 0.5928747653961182] +refinery : ['vinegar', 81, 0.6487473249435425] +mandolin : ['ukulele', 84, 0.5208896994590759] +featherweight : ['firefly', 59, 0.6189515590667725] +saltpeter : ['kelp', 1, 0.6328734755516052] +aqueduct : ['radiator', 131, 0.6219083666801453] +typewriter : ['clipboard', 103, 0.5351007878780365] +plankton : ['kelp', 1, 0.6243154108524323] +detonation : ['neutron', 11, 0.6218225955963135] +chandelier : ['candelabra', 27, 0.30332309007644653] +hedgehog : ['tortoise', 41, 0.5179089605808258] +velvet : ['javelin', 51, 0.5306350886821747] +radiator : ['thermostat', 9, 0.3599817156791687] +hologram : ['honeycomb', 133, 0.5648658275604248] +honeycomb : ['mosaic', 109, 0.5345775783061981] +mortgage : ['hammock', 94, 0.6528139114379883] +seismograph : ['barometer', 52, 0.5652239918708801] +whalebone : ['skeleton', 73, 0.5507161021232605] +tollbooth : ['tarmac', 7, 0.5595549643039703] +necktie : ['lanyard', 112, 0.5165494084358215] +cassette : ['satchel', 85, 0.5420977473258972] +aardvark : ['hedgehog', 129, 0.5946834683418274] +pylon : ['palisade', 91, 0.5711684823036194] +marathon : ['marionette', 99, 0.5995908379554749] +soapstone : ['sandstone', 32, 0.325999915599823] +glyph : ['clipboard', 103, 0.5321985185146332] +AVERAGE DISTANCE: 0.5458866468791304 diff --git a/crackle_planning/test_embedding_out.txt b/crackle_planning/test_embedding_out.txt new file mode 100644 index 0000000..e69de29 diff --git a/test_embedding_out.txt b/test_embedding_out.txt new file mode 100644 index 0000000..e69de29