Add slipnet analysis: depth vs topology correlation study
Analysis shows no significant correlation between conceptual depth and hop distance to letter nodes (r=0.281, p=0.113). Includes Python scripts, visualizations, and LaTeX paper. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
157
slipnet_analysis/compute_letter_paths.py
Normal file
157
slipnet_analysis/compute_letter_paths.py
Normal file
@ -0,0 +1,157 @@
|
||||
"""
|
||||
Compute minimum hops from each node to the nearest letter node (a-z) in the slipnet.
|
||||
Like Erdos number, but starting from letter nodes.
|
||||
Adds 'minPathToLetter' field to each node in the JSON.
|
||||
"""
|
||||
|
||||
import json
|
||||
import networkx as nx
|
||||
|
||||
def load_slipnet(filepath):
|
||||
with open(filepath, 'r') as f:
|
||||
return json.load(f)
|
||||
|
||||
def save_slipnet(data, filepath):
|
||||
with open(filepath, 'w') as f:
|
||||
json.dump(data, f, indent=2)
|
||||
|
||||
def build_graph(data):
|
||||
"""Build an undirected unweighted NetworkX graph from slipnet JSON."""
|
||||
G = nx.Graph() # Undirected graph - edges work both ways
|
||||
|
||||
# Add all nodes
|
||||
for node in data['nodes']:
|
||||
G.add_node(node['name'])
|
||||
|
||||
# Add edges (unweighted - each edge counts as 1 hop)
|
||||
for link in data['links']:
|
||||
G.add_edge(link['source'], link['destination'])
|
||||
|
||||
return G
|
||||
|
||||
def get_letter_nodes():
|
||||
"""Return set of letter nodes (a-z)."""
|
||||
return set(chr(i) for i in range(ord('a'), ord('z') + 1))
|
||||
|
||||
def compute_min_hops_to_letters(G, letter_nodes):
|
||||
"""
|
||||
Compute minimum hops from each node to the nearest letter node.
|
||||
Like Erdos number but for letters.
|
||||
Returns dict: node_name -> {hops, path, nearest_letter}
|
||||
"""
|
||||
results = {}
|
||||
|
||||
# For each node, find shortest path (by hop count) to any letter
|
||||
for node in G.nodes():
|
||||
if node in letter_nodes:
|
||||
# Letters have 0 hops to themselves
|
||||
results[node] = {
|
||||
'hops': 0,
|
||||
'path': [node],
|
||||
'nearestLetter': node
|
||||
}
|
||||
else:
|
||||
min_hops = float('inf')
|
||||
min_path = None
|
||||
nearest_letter = None
|
||||
|
||||
for letter in letter_nodes:
|
||||
try:
|
||||
# Find shortest path by hop count (no weight parameter)
|
||||
path = nx.shortest_path(G, source=node, target=letter)
|
||||
hops = len(path) - 1 # Number of edges = nodes - 1
|
||||
if hops < min_hops:
|
||||
min_hops = hops
|
||||
min_path = path
|
||||
nearest_letter = letter
|
||||
except nx.NetworkXNoPath:
|
||||
continue
|
||||
|
||||
if min_path is not None:
|
||||
results[node] = {
|
||||
'hops': min_hops,
|
||||
'path': min_path,
|
||||
'nearestLetter': nearest_letter
|
||||
}
|
||||
else:
|
||||
results[node] = {
|
||||
'hops': None,
|
||||
'path': None,
|
||||
'nearestLetter': None
|
||||
}
|
||||
|
||||
return results
|
||||
|
||||
def main():
|
||||
filepath = r'C:\Users\alexa\copycat\slipnet_analysis\slipnet.json'
|
||||
|
||||
# Load the slipnet
|
||||
data = load_slipnet(filepath)
|
||||
print(f"Loaded slipnet with {data['nodeCount']} nodes and {data['linkCount']} links")
|
||||
|
||||
# Build the graph
|
||||
G = build_graph(data)
|
||||
print(f"Built graph with {G.number_of_nodes()} nodes and {G.number_of_edges()} edges")
|
||||
|
||||
# Get letter nodes
|
||||
letter_nodes = get_letter_nodes()
|
||||
print(f"Letter nodes: {sorted(letter_nodes)}")
|
||||
|
||||
# Compute minimum hops to letters
|
||||
path_results = compute_min_hops_to_letters(G, letter_nodes)
|
||||
|
||||
# Find max hops among reachable nodes
|
||||
max_hops = max(r['hops'] for r in path_results.values() if r['hops'] is not None)
|
||||
unreachable_hops = 2 * max_hops
|
||||
print(f"Max hops among reachable nodes: {max_hops}")
|
||||
print(f"Assigning unreachable nodes hops = 2 * {max_hops} = {unreachable_hops}")
|
||||
|
||||
# Assign unreachable nodes hops = 2 * max_hops
|
||||
for node_name, result in path_results.items():
|
||||
if result['hops'] is None:
|
||||
result['hops'] = unreachable_hops
|
||||
result['path'] = None # No path exists
|
||||
result['nearestLetter'] = None
|
||||
|
||||
# Add results to each node in the JSON
|
||||
for node in data['nodes']:
|
||||
node_name = node['name']
|
||||
if node_name in path_results:
|
||||
result = path_results[node_name]
|
||||
node['minPathToLetter'] = {
|
||||
'hops': result['hops'],
|
||||
'path': result['path'],
|
||||
'nearestLetter': result['nearestLetter']
|
||||
}
|
||||
|
||||
# Save the updated JSON
|
||||
save_slipnet(data, filepath)
|
||||
print(f"\nUpdated slipnet saved to {filepath}")
|
||||
|
||||
# Print summary sorted by hops
|
||||
print("\n=== Summary of minimum hops to letter nodes (Erdos-style) ===")
|
||||
reachable_nodes = [(n['name'], n['minPathToLetter']) for n in data['nodes']
|
||||
if 'minPathToLetter' in n and n['minPathToLetter']['path'] is not None
|
||||
and n['minPathToLetter']['hops'] > 0]
|
||||
unreachable_nodes = [(n['name'], n['minPathToLetter']) for n in data['nodes']
|
||||
if 'minPathToLetter' in n and n['minPathToLetter']['path'] is None
|
||||
and n['minPathToLetter']['hops'] > 0]
|
||||
|
||||
# Sort by hops, then by name
|
||||
reachable_nodes.sort(key=lambda x: (x[1]['hops'], x[0]))
|
||||
unreachable_nodes.sort(key=lambda x: x[0])
|
||||
|
||||
print(f"\n{'Node':<30} {'Hops':<6} {'Nearest':<8} {'Path'}")
|
||||
print("-" * 80)
|
||||
|
||||
for name, info in reachable_nodes:
|
||||
path_str = ' -> '.join(info['path'])
|
||||
print(f"{name:<30} {info['hops']:<6} {info['nearestLetter']:<8} {path_str}")
|
||||
|
||||
if unreachable_nodes:
|
||||
print(f"\nUnreachable nodes (assigned hops = {unreachable_hops}):")
|
||||
for name, info in unreachable_nodes:
|
||||
print(f" {name:<30} (depth: {[n['conceptualDepth'] for n in data['nodes'] if n['name'] == name][0]})")
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
85
slipnet_analysis/compute_stats.py
Normal file
85
slipnet_analysis/compute_stats.py
Normal file
@ -0,0 +1,85 @@
|
||||
"""Compute correlation statistics for the paper (hop-based)."""
|
||||
|
||||
import json
|
||||
import numpy as np
|
||||
from scipy import stats
|
||||
|
||||
def main():
|
||||
with open(r'C:\Users\alexa\copycat\slipnet_analysis\slipnet.json', 'r') as f:
|
||||
data = json.load(f)
|
||||
|
||||
# Extract data points (excluding letter nodes themselves)
|
||||
names = []
|
||||
depths = []
|
||||
hops = []
|
||||
is_unreachable = []
|
||||
|
||||
for node in data['nodes']:
|
||||
name = node['name']
|
||||
depth = node['conceptualDepth']
|
||||
path_info = node.get('minPathToLetter', {})
|
||||
hop_count = path_info.get('hops')
|
||||
nearest = path_info.get('nearestLetter')
|
||||
|
||||
# Skip letter nodes (hops 0)
|
||||
if hop_count is not None and hop_count > 0:
|
||||
names.append(name)
|
||||
depths.append(depth)
|
||||
hops.append(hop_count)
|
||||
is_unreachable.append(nearest is None)
|
||||
|
||||
# Convert to numpy arrays
|
||||
depths = np.array(depths)
|
||||
hops = np.array(hops)
|
||||
|
||||
# Compute correlation
|
||||
correlation, p_value = stats.pearsonr(depths, hops)
|
||||
spearman_corr, spearman_p = stats.spearmanr(depths, hops)
|
||||
|
||||
# Linear regression
|
||||
z = np.polyfit(depths, hops, 1)
|
||||
|
||||
# R-squared
|
||||
y_pred = np.polyval(z, depths)
|
||||
ss_res = np.sum((hops - y_pred) ** 2)
|
||||
ss_tot = np.sum((hops - np.mean(hops)) ** 2)
|
||||
r_squared = 1 - (ss_res / ss_tot)
|
||||
|
||||
num_unreachable = sum(is_unreachable)
|
||||
print(f"Number of nodes analyzed: {len(names)}")
|
||||
print(f"Total nodes: {data['nodeCount']}")
|
||||
print(f"Letter nodes (excluded): 26")
|
||||
print(f"Unreachable nodes (hops = 2*max): {num_unreachable}")
|
||||
print()
|
||||
print(f"Pearson correlation: r = {correlation:.4f}")
|
||||
print(f"Pearson p-value: p = {p_value:.6f}")
|
||||
print(f"Spearman correlation: rho = {spearman_corr:.4f}")
|
||||
print(f"Spearman p-value: p = {spearman_p:.6f}")
|
||||
print(f"R-squared: {r_squared:.4f}")
|
||||
print(f"Linear regression: hops = {z[0]:.4f} * depth + {z[1]:.4f}")
|
||||
print()
|
||||
print(f"Depth range: {min(depths):.1f} - {max(depths):.1f}")
|
||||
print(f"Hops range: {min(hops)} - {max(hops)}")
|
||||
print(f"Mean depth: {np.mean(depths):.2f}")
|
||||
print(f"Mean hops: {np.mean(hops):.2f}")
|
||||
print(f"Std depth: {np.std(depths):.2f}")
|
||||
print(f"Std hops: {np.std(hops):.2f}")
|
||||
print()
|
||||
|
||||
# Distribution of hops
|
||||
print("Distribution of hops:")
|
||||
for h in sorted(set(hops)):
|
||||
count = sum(1 for x in hops if x == h)
|
||||
nodes_at_h = [n for n, hp in zip(names, hops) if hp == h]
|
||||
print(f" {h} hops: {count} nodes")
|
||||
|
||||
print()
|
||||
print("Data points (sorted by hops, then depth):")
|
||||
print(f"{'Node':<30} {'Depth':<10} {'Hops':<10} {'Reachable':<10}")
|
||||
print("-" * 60)
|
||||
for name, depth, hop, unreachable in sorted(zip(names, depths, hops, is_unreachable), key=lambda x: (x[2], x[1])):
|
||||
status = "No" if unreachable else "Yes"
|
||||
print(f"{name:<30} {depth:<10.1f} {hop:<10} {status:<10}")
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
BIN
slipnet_analysis/depth_distance_correlation.png
Normal file
BIN
slipnet_analysis/depth_distance_correlation.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 127 KiB |
BIN
slipnet_analysis/depth_hops_correlation.png
Normal file
BIN
slipnet_analysis/depth_hops_correlation.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 150 KiB |
162
slipnet_analysis/edge_types.md
Normal file
162
slipnet_analysis/edge_types.md
Normal file
@ -0,0 +1,162 @@
|
||||
# Slipnet Edge Types
|
||||
|
||||
This document describes all relationship types between nodes in the Copycat slipnet.
|
||||
|
||||
## Overview
|
||||
|
||||
The slipnet contains **202 links** connecting **59 nodes**. Links are categorized by:
|
||||
1. **Link Type** - The structural role of the link
|
||||
2. **Label** - An optional semantic annotation (itself a slipnode)
|
||||
|
||||
---
|
||||
|
||||
## Link Types (5 types)
|
||||
|
||||
### 1. `nonSlip` (83 links)
|
||||
Lateral connections that do NOT allow conceptual slippage during analogy-making.
|
||||
|
||||
**Purpose**: Connect related concepts that should remain distinct during mapping.
|
||||
|
||||
**Examples**:
|
||||
- `a` → `b` (labeled `successor`) - sequential letter relationship
|
||||
- `b` → `a` (labeled `predecessor`) - reverse sequential relationship
|
||||
- `left` → `leftmost` - direction to position association
|
||||
- `sameness` → `samenessGroup` (labeled `groupCategory`) - bond type to group type
|
||||
- `predecessorGroup` → `length` - groups have length property
|
||||
|
||||
### 2. `instance` (50 links)
|
||||
Connect a category to its instances (downward in the hierarchy).
|
||||
|
||||
**Purpose**: Define membership relationships.
|
||||
|
||||
**Examples**:
|
||||
- `letterCategory` → `a` (and all letters a-z)
|
||||
- `length` → `1`, `2`, `3`, `4`, `5`
|
||||
- `stringPositionCategory` → `leftmost`, `rightmost`, `middle`, `single`, `whole`
|
||||
- `directionCategory` → `left`, `right`
|
||||
- `bondCategory` → `predecessor`, `successor`, `sameness`
|
||||
- `objectCategory` → `letter`, `group`
|
||||
|
||||
### 3. `category` (51 links)
|
||||
Connect an instance back to its category (upward in the hierarchy).
|
||||
|
||||
**Purpose**: Allow instances to reference their parent category.
|
||||
|
||||
**Examples**:
|
||||
- `a` → `letterCategory` (and all letters)
|
||||
- `1` → `length` (and all numbers)
|
||||
- `leftmost` → `stringPositionCategory`
|
||||
- `predecessor` → `bondCategory`
|
||||
- `samenessGroup` → `letterCategory`
|
||||
|
||||
### 4. `slip` (16 links)
|
||||
Lateral connections that ALLOW conceptual slippage during analogy-making.
|
||||
|
||||
**Purpose**: Enable flexible mappings between related but distinct concepts.
|
||||
|
||||
**Examples**:
|
||||
- `first` ↔ `last` (labeled `opposite`) - opposites can slip to each other
|
||||
- `left` ↔ `right` (labeled `opposite`)
|
||||
- `successor` ↔ `predecessor` (labeled `opposite`)
|
||||
- `letterCategory` ↔ `length` - facets can slip
|
||||
- `letter` ↔ `group` - object types can slip
|
||||
- `single` ↔ `whole` - string positions can slip
|
||||
|
||||
### 5. `property` (2 links)
|
||||
Connect objects to their intrinsic properties.
|
||||
|
||||
**Purpose**: Define inherent attributes of specific nodes.
|
||||
|
||||
**Examples**:
|
||||
- `a` → `first` (letter 'a' has property of being first)
|
||||
- `z` → `last` (letter 'z' has property of being last)
|
||||
|
||||
---
|
||||
|
||||
## Link Labels (5 labels)
|
||||
|
||||
Labels are themselves slipnodes that annotate links with semantic meaning.
|
||||
|
||||
### 1. `successor` (29 links)
|
||||
Marks sequential forward relationships.
|
||||
|
||||
**Used on**: nonSlip links between consecutive letters (a→b, b→c, ..., y→z) and numbers (1→2, ..., 4→5)
|
||||
|
||||
### 2. `predecessor` (29 links)
|
||||
Marks sequential backward relationships.
|
||||
|
||||
**Used on**: nonSlip links in reverse direction (b→a, c→b, ..., z→y) and numbers (2→1, ..., 5→4)
|
||||
|
||||
### 3. `opposite` (10 links)
|
||||
Marks oppositional relationships.
|
||||
|
||||
**Used on**: slip links between conceptual opposites:
|
||||
- `first` ↔ `last`
|
||||
- `leftmost` ↔ `rightmost`
|
||||
- `left` ↔ `right`
|
||||
- `successor` ↔ `predecessor`
|
||||
- `successorGroup` ↔ `predecessorGroup`
|
||||
|
||||
### 4. `groupCategory` (3 links)
|
||||
Links bond types to their corresponding group types.
|
||||
|
||||
**Used on**: nonSlip links:
|
||||
- `sameness` → `samenessGroup`
|
||||
- `successor` → `successorGroup`
|
||||
- `predecessor` → `predecessorGroup`
|
||||
|
||||
### 5. `bondCategory` (3 links)
|
||||
Links group types back to their corresponding bond types.
|
||||
|
||||
**Used on**: nonSlip links:
|
||||
- `samenessGroup` → `sameness`
|
||||
- `successorGroup` → `successor`
|
||||
- `predecessorGroup` → `predecessor`
|
||||
|
||||
---
|
||||
|
||||
## Special Cases: Label-Only Nodes
|
||||
|
||||
Two nodes exist in the slipnet but have **no edges as endpoints**:
|
||||
|
||||
### `opposite`
|
||||
- Has 0 incoming and 0 outgoing edges as a graph node
|
||||
- Used only as a label on 10 slip links
|
||||
- Exists as a node so its activation can be tracked during reasoning
|
||||
|
||||
### `identity`
|
||||
- Has 0 incoming and 0 outgoing edges as a graph node
|
||||
- Not used as a label on any links in the current implementation
|
||||
- Reserved for potential identity mappings in analogies
|
||||
|
||||
---
|
||||
|
||||
## Disconnected Cluster
|
||||
|
||||
Three nodes form a separate cluster disconnected from the letter nodes:
|
||||
|
||||
- `objectCategory` → `letter` (instance link)
|
||||
- `objectCategory` → `group` (instance link)
|
||||
- `letter` ↔ `group` (slip links)
|
||||
|
||||
These nodes are reachable from each other but not from any letter (a-z).
|
||||
|
||||
---
|
||||
|
||||
## Summary Table
|
||||
|
||||
| Type | Count | Direction | Allows Slippage | Purpose |
|
||||
|------------|-------|--------------|-----------------|----------------------------------|
|
||||
| nonSlip | 83 | Directional | No | Lateral associations |
|
||||
| instance | 50 | Category→Instance | N/A | Membership (downward) |
|
||||
| category | 51 | Instance→Category | N/A | Classification (upward) |
|
||||
| slip | 16 | Directional | Yes | Flexible analogy mappings |
|
||||
| property | 2 | Object→Property | N/A | Intrinsic attributes |
|
||||
|
||||
| Label | Count | Semantic Meaning |
|
||||
|--------------|-------|-------------------------------------|
|
||||
| successor | 29 | Forward sequential relationship |
|
||||
| predecessor | 29 | Backward sequential relationship |
|
||||
| opposite | 10 | Oppositional relationship |
|
||||
| groupCategory| 3 | Bond-to-group association |
|
||||
| bondCategory | 3 | Group-to-bond association |
|
||||
334
slipnet_analysis/export_slipnet.py
Normal file
334
slipnet_analysis/export_slipnet.py
Normal file
@ -0,0 +1,334 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Export the Slipnet structure to a JSON file.
|
||||
|
||||
This script is self-contained to avoid Python version compatibility issues
|
||||
with the main copycat package.
|
||||
"""
|
||||
|
||||
import json
|
||||
|
||||
|
||||
class Slipnode:
|
||||
"""Minimal Slipnode for export purposes."""
|
||||
|
||||
def __init__(self, slipnet, name, depth, length=0.0):
|
||||
self.slipnet = slipnet
|
||||
self.name = name
|
||||
self.conceptualDepth = depth
|
||||
self.intrinsicLinkLength = length
|
||||
self.shrunkLinkLength = length * 0.4
|
||||
self.codelets = []
|
||||
self.categoryLinks = []
|
||||
self.instanceLinks = []
|
||||
self.propertyLinks = []
|
||||
self.lateralSlipLinks = []
|
||||
self.lateralNonSlipLinks = []
|
||||
self.incomingLinks = []
|
||||
self.outgoingLinks = []
|
||||
|
||||
|
||||
class Sliplink:
|
||||
"""Minimal Sliplink for export purposes."""
|
||||
|
||||
def __init__(self, source, destination, label=None, length=0.0):
|
||||
self.source = source
|
||||
self.destination = destination
|
||||
self.label = label
|
||||
self.fixedLength = length
|
||||
source.outgoingLinks.append(self)
|
||||
destination.incomingLinks.append(self)
|
||||
|
||||
|
||||
class SlipnetExporter:
|
||||
"""Recreates the Slipnet structure for export."""
|
||||
|
||||
def __init__(self):
|
||||
self.slipnodes = []
|
||||
self.sliplinks = []
|
||||
self._addInitialNodes()
|
||||
self._addInitialLinks()
|
||||
|
||||
def _addNode(self, name, depth, length=0):
|
||||
slipnode = Slipnode(self, name, depth, length)
|
||||
self.slipnodes.append(slipnode)
|
||||
return slipnode
|
||||
|
||||
def _addLink(self, source, destination, label=None, length=0.0):
|
||||
link = Sliplink(source, destination, label=label, length=length)
|
||||
self.sliplinks.append(link)
|
||||
return link
|
||||
|
||||
def _addSlipLink(self, source, destination, label=None, length=0.0):
|
||||
link = self._addLink(source, destination, label, length)
|
||||
source.lateralSlipLinks.append(link)
|
||||
|
||||
def _addNonSlipLink(self, source, destination, label=None, length=0.0):
|
||||
link = self._addLink(source, destination, label, length)
|
||||
source.lateralNonSlipLinks.append(link)
|
||||
|
||||
def _addBidirectionalLink(self, source, destination, length):
|
||||
self._addNonSlipLink(source, destination, length=length)
|
||||
self._addNonSlipLink(destination, source, length=length)
|
||||
|
||||
def _addCategoryLink(self, source, destination, length):
|
||||
link = self._addLink(source, destination, None, length)
|
||||
source.categoryLinks.append(link)
|
||||
|
||||
def _addInstanceLink(self, source, destination, length=100.0):
|
||||
categoryLength = source.conceptualDepth - destination.conceptualDepth
|
||||
self._addCategoryLink(destination, source, categoryLength)
|
||||
link = self._addLink(source, destination, None, length)
|
||||
source.instanceLinks.append(link)
|
||||
|
||||
def _addPropertyLink(self, source, destination, length):
|
||||
link = self._addLink(source, destination, None, length)
|
||||
source.propertyLinks.append(link)
|
||||
|
||||
def _addOppositeLink(self, source, destination):
|
||||
self._addSlipLink(source, destination, label=self.opposite)
|
||||
self._addSlipLink(destination, source, label=self.opposite)
|
||||
|
||||
def _link_items_to_their_neighbors(self, items):
|
||||
previous = items[0]
|
||||
for item in items[1:]:
|
||||
self._addNonSlipLink(previous, item, label=self.successor)
|
||||
self._addNonSlipLink(item, previous, label=self.predecessor)
|
||||
previous = item
|
||||
|
||||
def _addInitialNodes(self):
|
||||
self.letters = []
|
||||
for c in 'abcdefghijklmnopqrstuvwxyz':
|
||||
slipnode = self._addNode(c, 10.0)
|
||||
self.letters.append(slipnode)
|
||||
|
||||
self.numbers = []
|
||||
for c in '12345':
|
||||
slipnode = self._addNode(c, 30.0)
|
||||
self.numbers.append(slipnode)
|
||||
|
||||
# string positions
|
||||
self.leftmost = self._addNode('leftmost', 40.0)
|
||||
self.rightmost = self._addNode('rightmost', 40.0)
|
||||
self.middle = self._addNode('middle', 40.0)
|
||||
self.single = self._addNode('single', 40.0)
|
||||
self.whole = self._addNode('whole', 40.0)
|
||||
|
||||
# alphabetic positions
|
||||
self.first = self._addNode('first', 60.0)
|
||||
self.last = self._addNode('last', 60.0)
|
||||
|
||||
# directions
|
||||
self.left = self._addNode('left', 40.0)
|
||||
self.left.codelets += ['top-down-bond-scout--direction']
|
||||
self.left.codelets += ['top-down-group-scout--direction']
|
||||
self.right = self._addNode('right', 40.0)
|
||||
self.right.codelets += ['top-down-bond-scout--direction']
|
||||
self.right.codelets += ['top-down-group-scout--direction']
|
||||
|
||||
# bond types
|
||||
self.predecessor = self._addNode('predecessor', 50.0, 60.0)
|
||||
self.predecessor.codelets += ['top-down-bond-scout--category']
|
||||
self.successor = self._addNode('successor', 50.0, 60.0)
|
||||
self.successor.codelets += ['top-down-bond-scout--category']
|
||||
self.sameness = self._addNode('sameness', 80.0)
|
||||
self.sameness.codelets += ['top-down-bond-scout--category']
|
||||
|
||||
# group types
|
||||
self.predecessorGroup = self._addNode('predecessorGroup', 50.0)
|
||||
self.predecessorGroup.codelets += ['top-down-group-scout--category']
|
||||
self.successorGroup = self._addNode('successorGroup', 50.0)
|
||||
self.successorGroup.codelets += ['top-down-group-scout--category']
|
||||
self.samenessGroup = self._addNode('samenessGroup', 80.0)
|
||||
self.samenessGroup.codelets += ['top-down-group-scout--category']
|
||||
|
||||
# other relations
|
||||
self.identity = self._addNode('identity', 90.0)
|
||||
self.opposite = self._addNode('opposite', 90.0, 80.0)
|
||||
|
||||
# objects
|
||||
self.letter = self._addNode('letter', 20.0)
|
||||
self.group = self._addNode('group', 80.0)
|
||||
|
||||
# categories
|
||||
self.letterCategory = self._addNode('letterCategory', 30.0)
|
||||
self.stringPositionCategory = self._addNode('stringPositionCategory', 70.0)
|
||||
self.stringPositionCategory.codelets += ['top-down-description-scout']
|
||||
self.alphabeticPositionCategory = self._addNode('alphabeticPositionCategory', 80.0)
|
||||
self.alphabeticPositionCategory.codelets += ['top-down-description-scout']
|
||||
self.directionCategory = self._addNode('directionCategory', 70.0)
|
||||
self.bondCategory = self._addNode('bondCategory', 80.0)
|
||||
self.groupCategory = self._addNode('groupCategory', 80.0)
|
||||
self.length = self._addNode('length', 60.0)
|
||||
self.objectCategory = self._addNode('objectCategory', 90.0)
|
||||
self.bondFacet = self._addNode('bondFacet', 90.0)
|
||||
|
||||
self.initiallyClampedSlipnodes = [
|
||||
self.letterCategory,
|
||||
self.stringPositionCategory,
|
||||
]
|
||||
|
||||
def _addInitialLinks(self):
|
||||
self._link_items_to_their_neighbors(self.letters)
|
||||
self._link_items_to_their_neighbors(self.numbers)
|
||||
|
||||
# letter categories
|
||||
for letter in self.letters:
|
||||
self._addInstanceLink(self.letterCategory, letter, 97.0)
|
||||
self._addCategoryLink(self.samenessGroup, self.letterCategory, 50.0)
|
||||
|
||||
# lengths
|
||||
for number in self.numbers:
|
||||
self._addInstanceLink(self.length, number)
|
||||
|
||||
groups = [self.predecessorGroup, self.successorGroup, self.samenessGroup]
|
||||
for group in groups:
|
||||
self._addNonSlipLink(group, self.length, length=95.0)
|
||||
|
||||
opposites = [
|
||||
(self.first, self.last),
|
||||
(self.leftmost, self.rightmost),
|
||||
(self.left, self.right),
|
||||
(self.successor, self.predecessor),
|
||||
(self.successorGroup, self.predecessorGroup),
|
||||
]
|
||||
for a, b in opposites:
|
||||
self._addOppositeLink(a, b)
|
||||
|
||||
# properties
|
||||
self._addPropertyLink(self.letters[0], self.first, 75.0)
|
||||
self._addPropertyLink(self.letters[-1], self.last, 75.0)
|
||||
|
||||
links = [
|
||||
# object categories
|
||||
(self.objectCategory, self.letter),
|
||||
(self.objectCategory, self.group),
|
||||
# string positions
|
||||
(self.stringPositionCategory, self.leftmost),
|
||||
(self.stringPositionCategory, self.rightmost),
|
||||
(self.stringPositionCategory, self.middle),
|
||||
(self.stringPositionCategory, self.single),
|
||||
(self.stringPositionCategory, self.whole),
|
||||
# alphabetic positions
|
||||
(self.alphabeticPositionCategory, self.first),
|
||||
(self.alphabeticPositionCategory, self.last),
|
||||
# direction categories
|
||||
(self.directionCategory, self.left),
|
||||
(self.directionCategory, self.right),
|
||||
# bond categories
|
||||
(self.bondCategory, self.predecessor),
|
||||
(self.bondCategory, self.successor),
|
||||
(self.bondCategory, self.sameness),
|
||||
# group categories
|
||||
(self.groupCategory, self.predecessorGroup),
|
||||
(self.groupCategory, self.successorGroup),
|
||||
(self.groupCategory, self.samenessGroup),
|
||||
# bond facets
|
||||
(self.bondFacet, self.letterCategory),
|
||||
(self.bondFacet, self.length),
|
||||
]
|
||||
for a, b in links:
|
||||
self._addInstanceLink(a, b)
|
||||
|
||||
# link bonds to their groups
|
||||
self._addNonSlipLink(self.sameness, self.samenessGroup, label=self.groupCategory, length=30.0)
|
||||
self._addNonSlipLink(self.successor, self.successorGroup, label=self.groupCategory, length=60.0)
|
||||
self._addNonSlipLink(self.predecessor, self.predecessorGroup, label=self.groupCategory, length=60.0)
|
||||
|
||||
# link bond groups to their bonds
|
||||
self._addNonSlipLink(self.samenessGroup, self.sameness, label=self.bondCategory, length=90.0)
|
||||
self._addNonSlipLink(self.successorGroup, self.successor, label=self.bondCategory, length=90.0)
|
||||
self._addNonSlipLink(self.predecessorGroup, self.predecessor, label=self.bondCategory, length=90.0)
|
||||
|
||||
# letter category to length
|
||||
self._addSlipLink(self.letterCategory, self.length, length=95.0)
|
||||
self._addSlipLink(self.length, self.letterCategory, length=95.0)
|
||||
|
||||
# letter to group
|
||||
self._addSlipLink(self.letter, self.group, length=90.0)
|
||||
self._addSlipLink(self.group, self.letter, length=90.0)
|
||||
|
||||
# direction-position, direction-neighbor, position-neighbor
|
||||
self._addBidirectionalLink(self.left, self.leftmost, 90.0)
|
||||
self._addBidirectionalLink(self.right, self.rightmost, 90.0)
|
||||
self._addBidirectionalLink(self.right, self.leftmost, 100.0)
|
||||
self._addBidirectionalLink(self.left, self.rightmost, 100.0)
|
||||
self._addBidirectionalLink(self.leftmost, self.first, 100.0)
|
||||
self._addBidirectionalLink(self.rightmost, self.first, 100.0)
|
||||
self._addBidirectionalLink(self.leftmost, self.last, 100.0)
|
||||
self._addBidirectionalLink(self.rightmost, self.last, 100.0)
|
||||
|
||||
# other
|
||||
self._addSlipLink(self.single, self.whole, length=90.0)
|
||||
self._addSlipLink(self.whole, self.single, length=90.0)
|
||||
|
||||
|
||||
def export_slipnet():
|
||||
"""Export slipnet nodes and links to a JSON structure."""
|
||||
slipnet = SlipnetExporter()
|
||||
|
||||
# Build node data
|
||||
nodes = []
|
||||
node_to_id = {}
|
||||
|
||||
for node in slipnet.slipnodes:
|
||||
node_to_id[node] = node.name
|
||||
node_data = {
|
||||
"name": node.name,
|
||||
"conceptualDepth": node.conceptualDepth,
|
||||
"intrinsicLinkLength": node.intrinsicLinkLength,
|
||||
"shrunkLinkLength": node.shrunkLinkLength,
|
||||
}
|
||||
if node.codelets:
|
||||
node_data["codelets"] = node.codelets
|
||||
nodes.append(node_data)
|
||||
|
||||
# Build link data with type classification
|
||||
links = []
|
||||
|
||||
for link in slipnet.sliplinks:
|
||||
link_data = {
|
||||
"source": node_to_id[link.source],
|
||||
"destination": node_to_id[link.destination],
|
||||
"fixedLength": link.fixedLength,
|
||||
}
|
||||
if link.label:
|
||||
link_data["label"] = node_to_id[link.label]
|
||||
|
||||
# Determine link type
|
||||
if link in link.source.lateralSlipLinks:
|
||||
link_data["type"] = "slip"
|
||||
elif link in link.source.lateralNonSlipLinks:
|
||||
link_data["type"] = "nonSlip"
|
||||
elif link in link.source.categoryLinks:
|
||||
link_data["type"] = "category"
|
||||
elif link in link.source.instanceLinks:
|
||||
link_data["type"] = "instance"
|
||||
elif link in link.source.propertyLinks:
|
||||
link_data["type"] = "property"
|
||||
|
||||
links.append(link_data)
|
||||
|
||||
# Identify initially clamped nodes
|
||||
initially_clamped = [node_to_id[n] for n in slipnet.initiallyClampedSlipnodes]
|
||||
|
||||
# Create the full structure
|
||||
data = {
|
||||
"description": "Copycat Slipnet - A semantic network for analogical reasoning",
|
||||
"nodeCount": len(nodes),
|
||||
"linkCount": len(links),
|
||||
"initiallyClampedNodes": initially_clamped,
|
||||
"nodes": nodes,
|
||||
"links": links,
|
||||
}
|
||||
|
||||
return data
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
data = export_slipnet()
|
||||
|
||||
output_file = 'slipnet.json'
|
||||
with open(output_file, 'w') as f:
|
||||
json.dump(data, f, indent=2)
|
||||
|
||||
print(f"Exported {data['nodeCount']} nodes and {data['linkCount']} links to {output_file}")
|
||||
108
slipnet_analysis/plot_depth_distance_correlation.py
Normal file
108
slipnet_analysis/plot_depth_distance_correlation.py
Normal file
@ -0,0 +1,108 @@
|
||||
"""
|
||||
Plot correlation between minimum hops to letter nodes and conceptual depth.
|
||||
"""
|
||||
|
||||
import json
|
||||
import matplotlib
|
||||
matplotlib.use('Agg') # Non-interactive backend
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
from scipy import stats
|
||||
|
||||
def load_slipnet(filepath):
|
||||
with open(filepath, 'r') as f:
|
||||
return json.load(f)
|
||||
|
||||
def main():
|
||||
filepath = r'C:\Users\alexa\copycat\slipnet_analysis\slipnet.json'
|
||||
data = load_slipnet(filepath)
|
||||
|
||||
# Extract data points (excluding letter nodes themselves)
|
||||
names = []
|
||||
depths = []
|
||||
hops = []
|
||||
is_unreachable = [] # Track which nodes are unreachable
|
||||
|
||||
for node in data['nodes']:
|
||||
name = node['name']
|
||||
depth = node['conceptualDepth']
|
||||
path_info = node.get('minPathToLetter', {})
|
||||
hop_count = path_info.get('hops')
|
||||
nearest = path_info.get('nearestLetter')
|
||||
|
||||
# Skip letter nodes (hops 0)
|
||||
if hop_count is not None and hop_count > 0:
|
||||
names.append(name)
|
||||
depths.append(depth)
|
||||
hops.append(hop_count)
|
||||
# Unreachable nodes have no nearestLetter
|
||||
is_unreachable.append(nearest is None)
|
||||
|
||||
# Convert to numpy arrays
|
||||
depths = np.array(depths)
|
||||
hops = np.array(hops)
|
||||
is_unreachable = np.array(is_unreachable)
|
||||
|
||||
# Compute correlation
|
||||
correlation, p_value = stats.pearsonr(depths, hops)
|
||||
spearman_corr, spearman_p = stats.spearmanr(depths, hops)
|
||||
|
||||
# Create the plot
|
||||
fig, ax = plt.subplots(figsize=(10, 8))
|
||||
|
||||
# Scatter plot with jitter for overlapping points
|
||||
jitter = np.random.normal(0, 0.08, len(hops))
|
||||
|
||||
# Plot reachable nodes in blue
|
||||
reachable_mask = ~is_unreachable
|
||||
ax.scatter(depths[reachable_mask], hops[reachable_mask] + jitter[reachable_mask],
|
||||
alpha=0.7, s=100, c='steelblue', edgecolors='navy', label='Reachable')
|
||||
|
||||
# Plot unreachable nodes in red
|
||||
if np.any(is_unreachable):
|
||||
ax.scatter(depths[is_unreachable], hops[is_unreachable] + jitter[is_unreachable],
|
||||
alpha=0.7, s=100, c='crimson', edgecolors='darkred', label='Unreachable (2×max)')
|
||||
|
||||
# Add labels to each point
|
||||
for i, name in enumerate(names):
|
||||
ax.annotate(name, (depths[i], hops[i] + jitter[i]), fontsize=8, alpha=0.8,
|
||||
xytext=(5, 5), textcoords='offset points')
|
||||
|
||||
# Add trend line
|
||||
z = np.polyfit(depths, hops, 1)
|
||||
p = np.poly1d(z)
|
||||
x_line = np.linspace(min(depths), max(depths), 100)
|
||||
ax.plot(x_line, p(x_line), "r--", alpha=0.8, label=f'Linear fit (y = {z[0]:.3f}x + {z[1]:.2f})')
|
||||
|
||||
# Labels and title
|
||||
ax.set_xlabel('Conceptual Depth', fontsize=12)
|
||||
ax.set_ylabel('Minimum Hops to Letter Node (Erdos-style)', fontsize=12)
|
||||
ax.set_title('Correlation: Conceptual Depth vs Hops to Nearest Letter\n'
|
||||
f'Pearson r = {correlation:.3f} (p = {p_value:.4f}), '
|
||||
f'Spearman rho = {spearman_corr:.3f} (p = {spearman_p:.4f})',
|
||||
fontsize=11)
|
||||
|
||||
ax.legend(loc='upper left')
|
||||
ax.grid(True, alpha=0.3)
|
||||
max_hops = int(max(hops))
|
||||
ax.set_yticks(range(1, max_hops + 1))
|
||||
ax.set_ylim(0.5, max_hops + 0.5)
|
||||
|
||||
# Print statistics
|
||||
print(f"Number of nodes with paths (excluding letters): {len(names)}")
|
||||
print(f"\nPearson correlation: r = {correlation:.4f}, p-value = {p_value:.6f}")
|
||||
print(f"Spearman correlation: rho = {spearman_corr:.4f}, p-value = {spearman_p:.6f}")
|
||||
print(f"\nLinear regression: hops = {z[0]:.4f} * depth + {z[1]:.4f}")
|
||||
|
||||
print("\nData points:")
|
||||
print(f"{'Node':<30} {'Depth':<10} {'Hops':<10}")
|
||||
print("-" * 50)
|
||||
for name, depth, hop in sorted(zip(names, depths, hops), key=lambda x: (x[2], x[1])):
|
||||
print(f"{name:<30} {depth:<10.1f} {hop:<10}")
|
||||
|
||||
plt.tight_layout()
|
||||
plt.savefig(r'C:\Users\alexa\copycat\slipnet_analysis\depth_hops_correlation.png', dpi=150)
|
||||
print(f"\nPlot saved to: C:\\Users\\alexa\\copycat\\slipnet_analysis\\depth_hops_correlation.png")
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
2167
slipnet_analysis/slipnet.json
Normal file
2167
slipnet_analysis/slipnet.json
Normal file
File diff suppressed because it is too large
Load Diff
46
slipnet_analysis/slipnet_depth_analysis.aux
Normal file
46
slipnet_analysis/slipnet_depth_analysis.aux
Normal file
@ -0,0 +1,46 @@
|
||||
\relax
|
||||
\providecommand\hyper@newdestlabel[2]{}
|
||||
\providecommand\HyField@AuxAddToFields[1]{}
|
||||
\providecommand\HyField@AuxAddToCoFields[2]{}
|
||||
\citation{mitchell1993,hofstadter1995}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}{section.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}The Slipnet Architecture}{1}{subsection.1.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}Conceptual Depth}{2}{subsection.1.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.3}Research Question}{2}{subsection.1.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2}Methods}{2}{section.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Data Extraction}{2}{subsection.2.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Graph Construction}{2}{subsection.2.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Hop Count Computation}{2}{subsection.2.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.4}Handling Unreachable Nodes}{2}{subsection.2.4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.5}Statistical Analysis}{3}{subsection.2.5}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {3}Results}{3}{section.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Network Connectivity}{3}{subsection.3.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Hop Distribution}{3}{subsection.3.2}\protected@file@percent }
|
||||
\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces Distribution of minimum hops to letter nodes}}{3}{table.caption.2}\protected@file@percent }
|
||||
\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}}
|
||||
\newlabel{tab:hops}{{1}{3}{Distribution of minimum hops to letter nodes}{table.caption.2}{}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Descriptive Statistics}{3}{subsection.3.3}\protected@file@percent }
|
||||
\@writefile{lot}{\contentsline {table}{\numberline {2}{\ignorespaces Descriptive statistics for analyzed nodes (n=33)}}{3}{table.caption.3}\protected@file@percent }
|
||||
\newlabel{tab:descriptive}{{2}{3}{Descriptive statistics for analyzed nodes (n=33)}{table.caption.3}{}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.4}Correlation Analysis}{3}{subsection.3.4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.5}Visualization}{4}{subsection.3.5}\protected@file@percent }
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Scatter plot of conceptual depth versus minimum hops to nearest letter node. Reachable nodes (blue) and unreachable nodes (red, assigned hops=$2 \times 4 = 8$) are distinguished. Points are jittered vertically for visibility. The dashed line shows the linear regression fit.}}{4}{figure.caption.4}\protected@file@percent }
|
||||
\newlabel{fig:scatter}{{1}{4}{Scatter plot of conceptual depth versus minimum hops to nearest letter node. Reachable nodes (blue) and unreachable nodes (red, assigned hops=$2 \times 4 = 8$) are distinguished. Points are jittered vertically for visibility. The dashed line shows the linear regression fit}{figure.caption.4}{}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.6}Counterexamples}{4}{subsection.3.6}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {4}Discussion}{4}{section.4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Orthogonal Design Dimensions}{4}{subsection.4.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}The Disconnected Cluster}{5}{subsection.4.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Hub Structure}{5}{subsection.4.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Implications}{5}{subsection.4.4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.5}Limitations}{5}{subsection.4.5}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {5}Conclusion}{5}{section.5}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {A}Complete Data}{6}{appendix.A}\protected@file@percent }
|
||||
\@writefile{lot}{\contentsline {table}{\numberline {3}{\ignorespaces All analyzed nodes sorted by hop count, then depth}}{6}{table.caption.6}\protected@file@percent }
|
||||
\newlabel{tab:complete}{{3}{6}{All analyzed nodes sorted by hop count, then depth}{table.caption.6}{}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {B}Link Type Distribution}{6}{appendix.B}\protected@file@percent }
|
||||
\bibcite{mitchell1993}{{1}{}{{}}{{}}}
|
||||
\bibcite{hofstadter1995}{{2}{}{{}}{{}}}
|
||||
\providecommand\NAT@force@numbers{}\NAT@force@numbers
|
||||
\@writefile{lot}{\contentsline {table}{\numberline {4}{\ignorespaces Slipnet link type distribution}}{7}{table.caption.7}\protected@file@percent }
|
||||
\newlabel{tab:links}{{4}{7}{Slipnet link type distribution}{table.caption.7}{}}
|
||||
\gdef \@abspage@last{7}
|
||||
719
slipnet_analysis/slipnet_depth_analysis.log
Normal file
719
slipnet_analysis/slipnet_depth_analysis.log
Normal file
@ -0,0 +1,719 @@
|
||||
This is pdfTeX, Version 3.141592653-2.6-1.40.28 (MiKTeX 25.12) (preloaded format=pdflatex 2026.1.28) 1 FEB 2026 19:58
|
||||
entering extended mode
|
||||
restricted \write18 enabled.
|
||||
%&-line parsing enabled.
|
||||
**./slipnet_depth_analysis.tex
|
||||
(slipnet_depth_analysis.tex
|
||||
LaTeX2e <2025-11-01>
|
||||
L3 programming layer <2025-12-29>
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/base\article.cls
|
||||
Document Class: article 2025/01/22 v1.4n Standard LaTeX document class
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/base\size11.clo
|
||||
File: size11.clo 2025/01/22 v1.4n Standard LaTeX file (size option)
|
||||
)
|
||||
\c@part=\count275
|
||||
\c@section=\count276
|
||||
\c@subsection=\count277
|
||||
\c@subsubsection=\count278
|
||||
\c@paragraph=\count279
|
||||
\c@subparagraph=\count280
|
||||
\c@figure=\count281
|
||||
\c@table=\count282
|
||||
\abovecaptionskip=\skip49
|
||||
\belowcaptionskip=\skip50
|
||||
\bibindent=\dimen148
|
||||
)
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/base\inputenc.sty
|
||||
Package: inputenc 2024/02/08 v1.3d Input encoding file
|
||||
\inpenc@prehook=\toks17
|
||||
\inpenc@posthook=\toks18
|
||||
)
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/base\fontenc.sty
|
||||
Package: fontenc 2025/07/18 v2.1d Standard LaTeX package
|
||||
)
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/amsmath\amsmath.sty
|
||||
Package: amsmath 2025/07/09 v2.17z AMS math features
|
||||
\@mathmargin=\skip51
|
||||
|
||||
For additional information on amsmath, use the `?' option.
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/amsmath\amstext.sty
|
||||
Package: amstext 2024/11/17 v2.01 AMS text
|
||||
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/amsmath\amsgen.sty
|
||||
File: amsgen.sty 1999/11/30 v2.0 generic functions
|
||||
\@emptytoks=\toks19
|
||||
\ex@=\dimen149
|
||||
))
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/amsmath\amsbsy.sty
|
||||
Package: amsbsy 1999/11/29 v1.2d Bold Symbols
|
||||
\pmbraise@=\dimen150
|
||||
)
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/amsmath\amsopn.sty
|
||||
Package: amsopn 2022/04/08 v2.04 operator names
|
||||
)
|
||||
\inf@bad=\count283
|
||||
LaTeX Info: Redefining \frac on input line 233.
|
||||
\uproot@=\count284
|
||||
\leftroot@=\count285
|
||||
LaTeX Info: Redefining \overline on input line 398.
|
||||
LaTeX Info: Redefining \colon on input line 409.
|
||||
\classnum@=\count286
|
||||
\DOTSCASE@=\count287
|
||||
LaTeX Info: Redefining \ldots on input line 495.
|
||||
LaTeX Info: Redefining \dots on input line 498.
|
||||
LaTeX Info: Redefining \cdots on input line 619.
|
||||
\Mathstrutbox@=\box53
|
||||
\strutbox@=\box54
|
||||
LaTeX Info: Redefining \big on input line 721.
|
||||
LaTeX Info: Redefining \Big on input line 722.
|
||||
LaTeX Info: Redefining \bigg on input line 723.
|
||||
LaTeX Info: Redefining \Bigg on input line 724.
|
||||
\big@size=\dimen151
|
||||
LaTeX Font Info: Redeclaring font encoding OML on input line 742.
|
||||
LaTeX Font Info: Redeclaring font encoding OMS on input line 743.
|
||||
\macc@depth=\count288
|
||||
LaTeX Info: Redefining \bmod on input line 904.
|
||||
LaTeX Info: Redefining \pmod on input line 909.
|
||||
LaTeX Info: Redefining \smash on input line 939.
|
||||
LaTeX Info: Redefining \relbar on input line 969.
|
||||
LaTeX Info: Redefining \Relbar on input line 970.
|
||||
\c@MaxMatrixCols=\count289
|
||||
\dotsspace@=\muskip17
|
||||
\c@parentequation=\count290
|
||||
\dspbrk@lvl=\count291
|
||||
\tag@help=\toks20
|
||||
\row@=\count292
|
||||
\column@=\count293
|
||||
\maxfields@=\count294
|
||||
\andhelp@=\toks21
|
||||
\eqnshift@=\dimen152
|
||||
\alignsep@=\dimen153
|
||||
\tagshift@=\dimen154
|
||||
\tagwidth@=\dimen155
|
||||
\totwidth@=\dimen156
|
||||
\lineht@=\dimen157
|
||||
\@envbody=\toks22
|
||||
\multlinegap=\skip52
|
||||
\multlinetaggap=\skip53
|
||||
\mathdisplay@stack=\toks23
|
||||
LaTeX Info: Redefining \[ on input line 2950.
|
||||
LaTeX Info: Redefining \] on input line 2951.
|
||||
)
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/amsfonts\amssymb.sty
|
||||
Package: amssymb 2013/01/14 v3.01 AMS font symbols
|
||||
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/amsfonts\amsfonts.sty
|
||||
Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support
|
||||
\symAMSa=\mathgroup4
|
||||
\symAMSb=\mathgroup5
|
||||
LaTeX Font Info: Redeclaring math symbol \hbar on input line 98.
|
||||
LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold'
|
||||
(Font) U/euf/m/n --> U/euf/b/n on input line 106.
|
||||
)) (C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/graphics\graphicx.st
|
||||
y
|
||||
Package: graphicx 2024/12/31 v1.2e Enhanced LaTeX Graphics (DPC,SPQR)
|
||||
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/graphics\keyval.sty
|
||||
Package: keyval 2022/05/29 v1.15 key=value parser (DPC)
|
||||
\KV@toks@=\toks24
|
||||
)
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/graphics\graphics.sty
|
||||
Package: graphics 2024/08/06 v1.4g Standard LaTeX Graphics (DPC,SPQR)
|
||||
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/graphics\trig.sty
|
||||
Package: trig 2023/12/02 v1.11 sin cos tan (DPC)
|
||||
)
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/graphics-cfg\graphics.c
|
||||
fg
|
||||
File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
|
||||
)
|
||||
Package graphics Info: Driver file: pdftex.def on input line 106.
|
||||
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/graphics-def\pdftex.def
|
||||
File: pdftex.def 2025/09/29 v1.2d Graphics/color driver for pdftex
|
||||
))
|
||||
\Gin@req@height=\dimen158
|
||||
\Gin@req@width=\dimen159
|
||||
)
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/booktabs\booktabs.sty
|
||||
Package: booktabs 2020/01/12 v1.61803398 Publication quality tables
|
||||
\heavyrulewidth=\dimen160
|
||||
\lightrulewidth=\dimen161
|
||||
\cmidrulewidth=\dimen162
|
||||
\belowrulesep=\dimen163
|
||||
\belowbottomsep=\dimen164
|
||||
\aboverulesep=\dimen165
|
||||
\abovetopsep=\dimen166
|
||||
\cmidrulesep=\dimen167
|
||||
\cmidrulekern=\dimen168
|
||||
\defaultaddspace=\dimen169
|
||||
\@cmidla=\count295
|
||||
\@cmidlb=\count296
|
||||
\@aboverulesep=\dimen170
|
||||
\@belowrulesep=\dimen171
|
||||
\@thisruleclass=\count297
|
||||
\@lastruleclass=\count298
|
||||
\@thisrulewidth=\dimen172
|
||||
)
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/hyperref\hyperref.sty
|
||||
Package: hyperref 2025-07-12 v7.01o Hypertext links for LaTeX
|
||||
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/generic/iftex\iftex.sty
|
||||
Package: iftex 2024/12/12 v1.0g TeX engine tests
|
||||
)
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/kvsetkeys\kvsetkeys.sty
|
||||
Package: kvsetkeys 2022-10-05 v1.19 Key value parser (HO)
|
||||
)
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/generic/kvdefinekeys\kvdefine
|
||||
keys.sty
|
||||
Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO)
|
||||
)
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/generic/pdfescape\pdfescape.s
|
||||
ty
|
||||
Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO)
|
||||
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/generic/ltxcmds\ltxcmds.sty
|
||||
Package: ltxcmds 2023-12-04 v1.26 LaTeX kernel commands for general use (HO)
|
||||
)
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/generic/pdftexcmds\pdftexcmds
|
||||
.sty
|
||||
Package: pdftexcmds 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO
|
||||
)
|
||||
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/generic/infwarerr\infwarerr.s
|
||||
ty
|
||||
Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO)
|
||||
)
|
||||
Package pdftexcmds Info: \pdf@primitive is available.
|
||||
Package pdftexcmds Info: \pdf@ifprimitive is available.
|
||||
Package pdftexcmds Info: \pdfdraftmode found.
|
||||
))
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/hycolor\hycolor.sty
|
||||
Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO)
|
||||
)
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/hyperref\nameref.sty
|
||||
Package: nameref 2025-06-21 v2.57 Cross-referencing by name of section
|
||||
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/refcount\refcount.sty
|
||||
Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO)
|
||||
)
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/generic/gettitlestring\gettit
|
||||
lestring.sty
|
||||
Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO)
|
||||
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/kvoptions\kvoptions.sty
|
||||
Package: kvoptions 2022-06-15 v3.15 Key value format for package options (HO)
|
||||
))
|
||||
\c@section@level=\count299
|
||||
)
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/etoolbox\etoolbox.sty
|
||||
Package: etoolbox 2025/10/02 v2.5m e-TeX tools for LaTeX (JAW)
|
||||
\etb@tempcnta=\count300
|
||||
)
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/generic/stringenc\stringenc.s
|
||||
ty
|
||||
Package: stringenc 2019/11/29 v1.12 Convert strings between diff. encodings (HO
|
||||
)
|
||||
)
|
||||
\@linkdim=\dimen173
|
||||
\Hy@linkcounter=\count301
|
||||
\Hy@pagecounter=\count302
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/hyperref\pd1enc.def
|
||||
File: pd1enc.def 2025-07-12 v7.01o Hyperref: PDFDocEncoding definition (HO)
|
||||
Now handling font encoding PD1 ...
|
||||
... no UTF-8 mapping file for font encoding PD1
|
||||
) (C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/generic/intcalc\intcalc.sty
|
||||
Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO)
|
||||
)
|
||||
\Hy@SavedSpaceFactor=\count303
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/hyperref\puenc.def
|
||||
File: puenc.def 2025-07-12 v7.01o Hyperref: PDF Unicode definition (HO)
|
||||
Now handling font encoding PU ...
|
||||
... no UTF-8 mapping file for font encoding PU
|
||||
)
|
||||
Package hyperref Info: Hyper figures OFF on input line 4195.
|
||||
Package hyperref Info: Link nesting OFF on input line 4200.
|
||||
Package hyperref Info: Hyper index ON on input line 4203.
|
||||
Package hyperref Info: Plain pages OFF on input line 4210.
|
||||
Package hyperref Info: Backreferencing OFF on input line 4215.
|
||||
Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
|
||||
Package hyperref Info: Bookmarks ON on input line 4462.
|
||||
\c@Hy@tempcnt=\count304
|
||||
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/url\url.sty
|
||||
\Urlmuskip=\muskip18
|
||||
Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc.
|
||||
)
|
||||
LaTeX Info: Redefining \url on input line 4801.
|
||||
\XeTeXLinkMargin=\dimen174
|
||||
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/generic/bitset\bitset.sty
|
||||
Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO)
|
||||
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/generic/bigintcalc\bigintcalc
|
||||
.sty
|
||||
Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO
|
||||
)
|
||||
))
|
||||
\Fld@menulength=\count305
|
||||
\Field@Width=\dimen175
|
||||
\Fld@charsize=\dimen176
|
||||
Package hyperref Info: Hyper figures OFF on input line 6078.
|
||||
Package hyperref Info: Link nesting OFF on input line 6083.
|
||||
Package hyperref Info: Hyper index ON on input line 6086.
|
||||
Package hyperref Info: backreferencing OFF on input line 6093.
|
||||
Package hyperref Info: Link coloring OFF on input line 6098.
|
||||
Package hyperref Info: Link coloring with OCG OFF on input line 6103.
|
||||
Package hyperref Info: PDF/A mode OFF on input line 6108.
|
||||
\Hy@abspage=\count306
|
||||
\c@Item=\count307
|
||||
\c@Hfootnote=\count308
|
||||
)
|
||||
Package hyperref Info: Driver (autodetected): hpdftex.
|
||||
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/hyperref\hpdftex.def
|
||||
File: hpdftex.def 2025-07-12 v7.01o Hyperref driver for pdfTeX
|
||||
\Fld@listcount=\count309
|
||||
\c@bookmark@seq@number=\count310
|
||||
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/rerunfilecheck\rerunfil
|
||||
echeck.sty
|
||||
Package: rerunfilecheck 2025-06-21 v1.11 Rerun checks for auxiliary files (HO)
|
||||
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/generic/uniquecounter\uniquec
|
||||
ounter.sty
|
||||
Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO)
|
||||
)
|
||||
Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2
|
||||
84.
|
||||
)
|
||||
\Hy@SectionHShift=\skip54
|
||||
)
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/geometry\geometry.sty
|
||||
Package: geometry 2020/01/02 v5.9 Page Geometry
|
||||
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/generic/iftex\ifvtex.sty
|
||||
Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead.
|
||||
)
|
||||
\Gm@cnth=\count311
|
||||
\Gm@cntv=\count312
|
||||
\c@Gm@tempcnt=\count313
|
||||
\Gm@bindingoffset=\dimen177
|
||||
\Gm@wd@mp=\dimen178
|
||||
\Gm@odd@mp=\dimen179
|
||||
\Gm@even@mp=\dimen180
|
||||
\Gm@layoutwidth=\dimen181
|
||||
\Gm@layoutheight=\dimen182
|
||||
\Gm@layouthoffset=\dimen183
|
||||
\Gm@layoutvoffset=\dimen184
|
||||
\Gm@dimlist=\toks25
|
||||
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/geometry\geometry.cfg))
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/natbib\natbib.sty
|
||||
Package: natbib 2010/09/13 8.31b (PWD, AO)
|
||||
\bibhang=\skip55
|
||||
\bibsep=\skip56
|
||||
LaTeX Info: Redefining \cite on input line 694.
|
||||
\c@NAT@ctr=\count314
|
||||
)
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/float\float.sty
|
||||
Package: float 2001/11/08 v1.3d Float enhancements (AL)
|
||||
\c@float@type=\count315
|
||||
\float@exts=\toks26
|
||||
\float@box=\box55
|
||||
\@float@everytoks=\toks27
|
||||
\@floatcapt=\box56
|
||||
)
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/caption\caption.sty
|
||||
Package: caption 2023/08/05 v3.6o Customizing captions (AR)
|
||||
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/caption\caption3.sty
|
||||
Package: caption3 2023/07/31 v2.4d caption3 kernel (AR)
|
||||
\caption@tempdima=\dimen185
|
||||
\captionmargin=\dimen186
|
||||
\caption@leftmargin=\dimen187
|
||||
\caption@rightmargin=\dimen188
|
||||
\caption@width=\dimen189
|
||||
\caption@indent=\dimen190
|
||||
\caption@parindent=\dimen191
|
||||
\caption@hangindent=\dimen192
|
||||
Package caption Info: Standard document class detected.
|
||||
)
|
||||
\c@caption@flags=\count316
|
||||
\c@continuedfloat=\count317
|
||||
Package caption Info: float package is loaded.
|
||||
Package caption Info: hyperref package is loaded.
|
||||
)
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/caption\subcaption.sty
|
||||
Package: subcaption 2023/07/28 v1.6b Sub-captions (AR)
|
||||
Package caption Info: New subtype `subfigure' on input line 238.
|
||||
\c@subfigure=\count318
|
||||
Package caption Info: New subtype `subtable' on input line 238.
|
||||
\c@subtable=\count319
|
||||
)
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/l3backend\l3backend-pdf
|
||||
tex.def
|
||||
File: l3backend-pdftex.def 2025-10-09 L3 backend support: PDF output (pdfTeX)
|
||||
\l__color_backend_stack_int=\count320
|
||||
) (slipnet_depth_analysis.aux
|
||||
|
||||
! Package natbib Error: Bibliography not compatible with author-year citations.
|
||||
|
||||
(natbib) Press <return> to continue in numerical citation style.
|
||||
|
||||
|
||||
See the natbib package documentation for explanation.
|
||||
Type H <return> for immediate help.
|
||||
...
|
||||
|
||||
l.43 ...mand\NAT@force@numbers{}\NAT@force@numbers
|
||||
|
||||
Check the bibliography entries for non-compliant syntax,
|
||||
or select author-year BibTeX style, e.g. plainnat
|
||||
|
||||
)
|
||||
\openout1 = `slipnet_depth_analysis.aux'.
|
||||
|
||||
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 24.
|
||||
LaTeX Font Info: ... okay on input line 24.
|
||||
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 24.
|
||||
LaTeX Font Info: ... okay on input line 24.
|
||||
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 24.
|
||||
LaTeX Font Info: ... okay on input line 24.
|
||||
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 24.
|
||||
LaTeX Font Info: ... okay on input line 24.
|
||||
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 24.
|
||||
LaTeX Font Info: ... okay on input line 24.
|
||||
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 24.
|
||||
LaTeX Font Info: ... okay on input line 24.
|
||||
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 24.
|
||||
LaTeX Font Info: ... okay on input line 24.
|
||||
LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 24.
|
||||
LaTeX Font Info: ... okay on input line 24.
|
||||
LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 24.
|
||||
LaTeX Font Info: ... okay on input line 24.
|
||||
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/context/base/mkii\supp-pdf.mk
|
||||
ii
|
||||
[Loading MPS to PDF converter (version 2006.09.02).]
|
||||
\scratchcounter=\count321
|
||||
\scratchdimen=\dimen193
|
||||
\scratchbox=\box57
|
||||
\nofMPsegments=\count322
|
||||
\nofMParguments=\count323
|
||||
\everyMPshowfont=\toks28
|
||||
\MPscratchCnt=\count324
|
||||
\MPscratchDim=\dimen194
|
||||
\MPnumerator=\count325
|
||||
\makeMPintoPDFobject=\count326
|
||||
\everyMPtoPDFconversion=\toks29
|
||||
)
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/epstopdf-pkg\epstopdf-b
|
||||
ase.sty
|
||||
Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf
|
||||
Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4
|
||||
85.
|
||||
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/00miktex\epstopdf-sys.c
|
||||
fg
|
||||
File: epstopdf-sys.cfg 2021/03/18 v2.0 Configuration of epstopdf for MiKTeX
|
||||
))
|
||||
Package hyperref Info: Link coloring OFF on input line 24.
|
||||
(slipnet_depth_analysis.out) (slipnet_depth_analysis.out)
|
||||
\@outlinefile=\write3
|
||||
\openout3 = `slipnet_depth_analysis.out'.
|
||||
|
||||
|
||||
*geometry* driver: auto-detecting
|
||||
*geometry* detected driver: pdftex
|
||||
*geometry* verbose mode - [ preamble ] result:
|
||||
* driver: pdftex
|
||||
* paper: <default>
|
||||
* layout: <same size as paper>
|
||||
* layoutoffset:(h,v)=(0.0pt,0.0pt)
|
||||
* modes:
|
||||
* h-part:(L,W,R)=(72.26999pt, 469.75502pt, 72.26999pt)
|
||||
* v-part:(T,H,B)=(72.26999pt, 650.43001pt, 72.26999pt)
|
||||
* \paperwidth=614.295pt
|
||||
* \paperheight=794.96999pt
|
||||
* \textwidth=469.75502pt
|
||||
* \textheight=650.43001pt
|
||||
* \oddsidemargin=0.0pt
|
||||
* \evensidemargin=0.0pt
|
||||
* \topmargin=-37.0pt
|
||||
* \headheight=12.0pt
|
||||
* \headsep=25.0pt
|
||||
* \topskip=11.0pt
|
||||
* \footskip=30.0pt
|
||||
* \marginparwidth=4.0pt
|
||||
* \marginparsep=10.0pt
|
||||
* \columnsep=10.0pt
|
||||
* \skip\footins=10.0pt plus 4.0pt minus 2.0pt
|
||||
* \hoffset=0.0pt
|
||||
* \voffset=0.0pt
|
||||
* \mag=1000
|
||||
* \@twocolumntrue
|
||||
* \@twosidefalse
|
||||
* \@mparswitchfalse
|
||||
* \@reversemarginfalse
|
||||
* (1in=72.27pt=25.4mm, 1cm=28.453pt)
|
||||
|
||||
Package caption Info: Begin \AtBeginDocument code.
|
||||
Package caption Info: End \AtBeginDocument code.
|
||||
LaTeX Font Info: Trying to load font information for U+msa on input line 27.
|
||||
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/amsfonts\umsa.fd
|
||||
File: umsa.fd 2013/01/14 v3.01 AMS symbols A
|
||||
)
|
||||
LaTeX Font Info: Trying to load font information for U+msb on input line 27.
|
||||
|
||||
|
||||
(C:\Users\alexa\AppData\Local\Programs\MiKTeX\tex/latex/amsfonts\umsb.fd
|
||||
File: umsb.fd 2013/01/14 v3.01 AMS symbols B
|
||||
)
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 43--44
|
||||
[]\T1/cmr/bx/n/10.95 Positional con-cepts\T1/cmr/m/n/10.95 : \T1/cmtt/m/n/10.95
|
||||
leftmost\T1/cmr/m/n/10.95 ,
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 44--45
|
||||
[]\T1/cmr/bx/n/10.95 Relational con-cepts\T1/cmr/m/n/10.95 : \T1/cmtt/m/n/10.95
|
||||
successor\T1/cmr/m/n/10.95 ,
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 2617) in paragraph at lines 45--46
|
||||
[]\T1/cmr/bx/n/10.95 Category con-cepts\T1/cmr/m/n/10.95 : \T1/cmtt/m/n/10.95 l
|
||||
etterCategory\T1/cmr/m/n/10.95 ,
|
||||
[]
|
||||
|
||||
[1{C:/Users/alexa/AppData/Local/MiKTeX/fonts/map/pdftex/pdftex.map}
|
||||
|
||||
|
||||
]
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 62--63
|
||||
[]\T1/cmtt/m/n/10.95 stringPositionCategory\T1/cmr/m/n/10.95 ,
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 64--65
|
||||
[]\T1/cmtt/m/n/10.95 opposite\T1/cmr/m/n/10.95 , \T1/cmtt/m/n/10.95 identity\T1
|
||||
/cmr/m/n/10.95 , \T1/cmtt/m/n/10.95 bondFacet\T1/cmr/m/n/10.95 ,
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 6332) in paragraph at lines 64--65
|
||||
\T1/cmtt/m/n/10.95 objectCategory\T1/cmr/m/n/10.95 : depth = 90 (most
|
||||
[]
|
||||
|
||||
[2]
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 142--143
|
||||
[]\T1/cmtt/m/n/10.95 letterCategory\T1/cmr/m/n/10.95 , \T1/cmtt/m/n/10.95 first
|
||||
\T1/cmr/m/n/10.95 ,
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 143--144
|
||||
[]\T1/cmtt/m/n/10.95 leftmost\T1/cmr/m/n/10.95 , \T1/cmtt/m/n/10.95 length\T1/c
|
||||
mr/m/n/10.95 ,
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 1668) in paragraph at lines 144--145
|
||||
[]\T1/cmr/m/n/10.95 Numbers 1--5, \T1/cmtt/m/n/10.95 sameness\T1/cmr/m/n/10.95
|
||||
,
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 145--146
|
||||
[]\T1/cmtt/m/n/10.95 bondCategory\T1/cmr/m/n/10.95 ,
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 146--147
|
||||
[]\T1/cmtt/m/n/10.95 identity\T1/cmr/m/n/10.95 , \T1/cmtt/m/n/10.95 opposite\T1
|
||||
/cmr/m/n/10.95 ,
|
||||
[]
|
||||
|
||||
[3]
|
||||
<depth_hops_correlation.png, id=151, 722.7pt x 578.16pt>
|
||||
File: depth_hops_correlation.png Graphic file (type png)
|
||||
<use depth_hops_correlation.png>
|
||||
Package pdftex.def Info: depth_hops_correlation.png used on input line 194.
|
||||
(pdftex.def) Requested size: 229.8775pt x 183.9034pt.
|
||||
|
||||
Underfull \hbox (badness 2809) in paragraph at lines 204--205
|
||||
[]\T1/cmr/bx/n/10.95 High depth, few hops\T1/cmr/m/n/10.95 : \T1/cmtt/m/n/10.95
|
||||
bondFacet
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 1939) in paragraph at lines 204--205
|
||||
\T1/cmr/m/n/10.95 and \T1/cmtt/m/n/10.95 alphabeticPositionCategory \T1/cmr/m/n
|
||||
/10.95 (both
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 5924) in paragraph at lines 208--209
|
||||
[]\T1/cmr/bx/n/10.95 Same depth, dif-fer-ent hops\T1/cmr/m/n/10.95 : At
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 208--209
|
||||
\T1/cmr/m/n/10.95 depth=90, \T1/cmtt/m/n/10.95 bondFacet \T1/cmr/m/n/10.95 need
|
||||
s only
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 208--209
|
||||
\T1/cmr/m/n/10.95 2 hops while \T1/cmtt/m/n/10.95 identity\T1/cmr/m/n/10.95 , \
|
||||
T1/cmtt/m/n/10.95 opposite\T1/cmr/m/n/10.95 ,
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 208--209
|
||||
\T1/cmr/m/n/10.95 and \T1/cmtt/m/n/10.95 objectCategory \T1/cmr/m/n/10.95 are c
|
||||
om-pletely
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 3219) in paragraph at lines 222--223
|
||||
\T1/cmr/m/n/10.95 cepts can ac-ti-vate each other through
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 1540) in paragraph at lines 222--223
|
||||
\T1/cmr/m/n/10.95 by an edge can di-rectly in-flu-ence each
|
||||
[]
|
||||
|
||||
[4 <./depth_hops_correlation.png>]
|
||||
Underfull \hbox (badness 7099) in paragraph at lines 236--237
|
||||
\T1/cmr/m/n/10.95 object-type hi-er-ar-chy. They clas-sify
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 3396) in paragraph at lines 239--240
|
||||
[]\T1/cmr/m/n/10.95 Notably, the \T1/cmtt/m/n/10.95 letter \T1/cmr/m/n/10.95 co
|
||||
n-cept (depth=20,
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 239--240
|
||||
\T1/cmr/m/n/10.95 rel-a-tively con-crete) is dis-con-nected while
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 1478) in paragraph at lines 239--240
|
||||
\T1/cmtt/m/n/10.95 letterCategory \T1/cmr/m/n/10.95 (depth=30) is di-rectly con
|
||||
-
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 6559) in paragraph at lines 239--240
|
||||
\T1/cmr/m/n/10.95 ``letter-as-type'' and ``letter-as-category'' fur-
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 3525) in paragraph at lines 272--273
|
||||
[]\T1/cmr/bx/n/10.95 Penalty as-sign-ment\T1/cmr/m/n/10.95 : The choice of
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 2042) in paragraph at lines 274--275
|
||||
[]\T1/cmr/bx/n/10.95 Undirected as-sump-tion\T1/cmr/m/n/10.95 : We treated
|
||||
[]
|
||||
|
||||
[5]
|
||||
Underfull \hbox (badness 2285) in paragraph at lines 289--290
|
||||
[]\T1/cmtt/m/n/10.95 slipnet.json\T1/cmr/m/n/10.95 : Com-plete net-work with
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 291--292
|
||||
[]\T1/cmtt/m/n/10.95 plot_depth_distance_correlation.py\T1/cmr/m/n/10.95 :
|
||||
[]
|
||||
|
||||
|
||||
Overfull \hbox (31.95923pt too wide) in paragraph at lines 306--349
|
||||
[][]
|
||||
[]
|
||||
|
||||
|
||||
Underfull \vbox (badness 10000) has occurred while \output is active []
|
||||
|
||||
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 363--364
|
||||
[]\T1/cmr/m/n/10.95 Lateral as-so-ci-a-tions
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 1590) in paragraph at lines 363--364
|
||||
\T1/cmr/m/n/10.95 that don't al-low con-
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 1308) in paragraph at lines 364--365
|
||||
[]\T1/cmr/m/n/10.95 Upward hi-er-ar-chy (in-
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 365--366
|
||||
[]\T1/cmr/m/n/10.95 Downward hi-er-ar-chy
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 367--368
|
||||
[]\T1/cmr/m/n/10.95 Intrinsic at-tributes
|
||||
[]
|
||||
|
||||
|
||||
Underfull \vbox (badness 10000) has occurred while \output is active []
|
||||
|
||||
[6]
|
||||
[7
|
||||
|
||||
] (slipnet_depth_analysis.aux)
|
||||
***********
|
||||
LaTeX2e <2025-11-01>
|
||||
L3 programming layer <2025-12-29>
|
||||
***********
|
||||
Package rerunfilecheck Info: File `slipnet_depth_analysis.out' has not changed.
|
||||
|
||||
(rerunfilecheck) Checksum: EE379051615A964053B9116F5B823DA0;3632.
|
||||
)
|
||||
Here is how much of TeX's memory you used:
|
||||
12369 strings out of 467871
|
||||
192910 string characters out of 5418376
|
||||
617452 words of memory out of 5000000
|
||||
41044 multiletter control sequences out of 15000+600000
|
||||
644966 words of font info for 86 fonts, out of 8000000 for 9000
|
||||
1141 hyphenation exceptions out of 8191
|
||||
75i,11n,79p,1103b,511s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
||||
<C:\Users\alexa\AppData\Local\MiKTeX\fonts/pk/ljfour/jknappen/ec/dpi600\ecrm
|
||||
1000.pk> <C:\Users\alexa\AppData\Local\MiKTeX\fonts/pk/ljfour/jknappen/ec/dpi60
|
||||
0\ecrm0600.pk> <C:\Users\alexa\AppData\Local\MiKTeX\fonts/pk/ljfour/jknappen/ec
|
||||
/dpi600\ecrm0800.pk> <C:\Users\alexa\AppData\Local\MiKTeX\fonts/pk/ljfour/jknap
|
||||
pen/ec/dpi600\ectt1095.pk> <C:\Users\alexa\AppData\Local\MiKTeX\fonts/pk/ljfour
|
||||
/jknappen/ec/dpi600\ecbx1095.pk> <C:\Users\alexa\AppData\Local\MiKTeX\fonts/pk/
|
||||
ljfour/jknappen/ec/dpi600\tcrm1095.pk> <C:\Users\alexa\AppData\Local\MiKTeX\fon
|
||||
ts/pk/ljfour/jknappen/ec/dpi600\ecti1095.pk> <C:\Users\alexa\AppData\Local\MiKT
|
||||
eX\fonts/pk/ljfour/jknappen/ec/dpi600\ecbx1200.pk> <C:\Users\alexa\AppData\Loca
|
||||
l\MiKTeX\fonts/pk/ljfour/jknappen/ec/dpi600\ecrm1095.pk> <C:\Users\alexa\AppDat
|
||||
a\Local\MiKTeX\fonts/pk/ljfour/jknappen/ec/dpi600\ecbx1440.pk> <C:\Users\alexa\
|
||||
AppData\Local\MiKTeX\fonts/pk/ljfour/jknappen/ec/dpi600\ectt1200.pk> <C:\Users\
|
||||
alexa\AppData\Local\MiKTeX\fonts/pk/ljfour/jknappen/ec/dpi600\ecrm1200.pk> <C:\
|
||||
Users\alexa\AppData\Local\MiKTeX\fonts/pk/ljfour/jknappen/ec/dpi600\ecrm1728.pk
|
||||
><C:/Users/alexa/AppData/Local/Programs/MiKTeX/fonts/type1/public/amsfonts/cm/c
|
||||
mmi10.pfb><C:/Users/alexa/AppData/Local/Programs/MiKTeX/fonts/type1/public/amsf
|
||||
onts/cm/cmmi8.pfb><C:/Users/alexa/AppData/Local/Programs/MiKTeX/fonts/type1/pub
|
||||
lic/amsfonts/cm/cmr10.pfb><C:/Users/alexa/AppData/Local/Programs/MiKTeX/fonts/t
|
||||
ype1/public/amsfonts/cm/cmr8.pfb><C:/Users/alexa/AppData/Local/Programs/MiKTeX/
|
||||
fonts/type1/public/amsfonts/cm/cmsy10.pfb><C:/Users/alexa/AppData/Local/Program
|
||||
s/MiKTeX/fonts/type1/public/amsfonts/cm/cmsy8.pfb>
|
||||
Output written on slipnet_depth_analysis.pdf (7 pages, 353154 bytes).
|
||||
PDF statistics:
|
||||
645 PDF objects out of 1000 (max. 8388607)
|
||||
61 named destinations out of 1000 (max. 500000)
|
||||
214 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||
|
||||
26
slipnet_analysis/slipnet_depth_analysis.out
Normal file
26
slipnet_analysis/slipnet_depth_analysis.out
Normal file
@ -0,0 +1,26 @@
|
||||
\BOOKMARK [1][-]{section.1}{\376\377\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n}{}% 1
|
||||
\BOOKMARK [2][-]{subsection.1.1}{\376\377\000T\000h\000e\000\040\000S\000l\000i\000p\000n\000e\000t\000\040\000A\000r\000c\000h\000i\000t\000e\000c\000t\000u\000r\000e}{section.1}% 2
|
||||
\BOOKMARK [2][-]{subsection.1.2}{\376\377\000C\000o\000n\000c\000e\000p\000t\000u\000a\000l\000\040\000D\000e\000p\000t\000h}{section.1}% 3
|
||||
\BOOKMARK [2][-]{subsection.1.3}{\376\377\000R\000e\000s\000e\000a\000r\000c\000h\000\040\000Q\000u\000e\000s\000t\000i\000o\000n}{section.1}% 4
|
||||
\BOOKMARK [1][-]{section.2}{\376\377\000M\000e\000t\000h\000o\000d\000s}{}% 5
|
||||
\BOOKMARK [2][-]{subsection.2.1}{\376\377\000D\000a\000t\000a\000\040\000E\000x\000t\000r\000a\000c\000t\000i\000o\000n}{section.2}% 6
|
||||
\BOOKMARK [2][-]{subsection.2.2}{\376\377\000G\000r\000a\000p\000h\000\040\000C\000o\000n\000s\000t\000r\000u\000c\000t\000i\000o\000n}{section.2}% 7
|
||||
\BOOKMARK [2][-]{subsection.2.3}{\376\377\000H\000o\000p\000\040\000C\000o\000u\000n\000t\000\040\000C\000o\000m\000p\000u\000t\000a\000t\000i\000o\000n}{section.2}% 8
|
||||
\BOOKMARK [2][-]{subsection.2.4}{\376\377\000H\000a\000n\000d\000l\000i\000n\000g\000\040\000U\000n\000r\000e\000a\000c\000h\000a\000b\000l\000e\000\040\000N\000o\000d\000e\000s}{section.2}% 9
|
||||
\BOOKMARK [2][-]{subsection.2.5}{\376\377\000S\000t\000a\000t\000i\000s\000t\000i\000c\000a\000l\000\040\000A\000n\000a\000l\000y\000s\000i\000s}{section.2}% 10
|
||||
\BOOKMARK [1][-]{section.3}{\376\377\000R\000e\000s\000u\000l\000t\000s}{}% 11
|
||||
\BOOKMARK [2][-]{subsection.3.1}{\376\377\000N\000e\000t\000w\000o\000r\000k\000\040\000C\000o\000n\000n\000e\000c\000t\000i\000v\000i\000t\000y}{section.3}% 12
|
||||
\BOOKMARK [2][-]{subsection.3.2}{\376\377\000H\000o\000p\000\040\000D\000i\000s\000t\000r\000i\000b\000u\000t\000i\000o\000n}{section.3}% 13
|
||||
\BOOKMARK [2][-]{subsection.3.3}{\376\377\000D\000e\000s\000c\000r\000i\000p\000t\000i\000v\000e\000\040\000S\000t\000a\000t\000i\000s\000t\000i\000c\000s}{section.3}% 14
|
||||
\BOOKMARK [2][-]{subsection.3.4}{\376\377\000C\000o\000r\000r\000e\000l\000a\000t\000i\000o\000n\000\040\000A\000n\000a\000l\000y\000s\000i\000s}{section.3}% 15
|
||||
\BOOKMARK [2][-]{subsection.3.5}{\376\377\000V\000i\000s\000u\000a\000l\000i\000z\000a\000t\000i\000o\000n}{section.3}% 16
|
||||
\BOOKMARK [2][-]{subsection.3.6}{\376\377\000C\000o\000u\000n\000t\000e\000r\000e\000x\000a\000m\000p\000l\000e\000s}{section.3}% 17
|
||||
\BOOKMARK [1][-]{section.4}{\376\377\000D\000i\000s\000c\000u\000s\000s\000i\000o\000n}{}% 18
|
||||
\BOOKMARK [2][-]{subsection.4.1}{\376\377\000O\000r\000t\000h\000o\000g\000o\000n\000a\000l\000\040\000D\000e\000s\000i\000g\000n\000\040\000D\000i\000m\000e\000n\000s\000i\000o\000n\000s}{section.4}% 19
|
||||
\BOOKMARK [2][-]{subsection.4.2}{\376\377\000T\000h\000e\000\040\000D\000i\000s\000c\000o\000n\000n\000e\000c\000t\000e\000d\000\040\000C\000l\000u\000s\000t\000e\000r}{section.4}% 20
|
||||
\BOOKMARK [2][-]{subsection.4.3}{\376\377\000H\000u\000b\000\040\000S\000t\000r\000u\000c\000t\000u\000r\000e}{section.4}% 21
|
||||
\BOOKMARK [2][-]{subsection.4.4}{\376\377\000I\000m\000p\000l\000i\000c\000a\000t\000i\000o\000n\000s}{section.4}% 22
|
||||
\BOOKMARK [2][-]{subsection.4.5}{\376\377\000L\000i\000m\000i\000t\000a\000t\000i\000o\000n\000s}{section.4}% 23
|
||||
\BOOKMARK [1][-]{section.5}{\376\377\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n}{}% 24
|
||||
\BOOKMARK [1][-]{appendix.A}{\376\377\000C\000o\000m\000p\000l\000e\000t\000e\000\040\000D\000a\000t\000a}{}% 25
|
||||
\BOOKMARK [1][-]{appendix.B}{\376\377\000L\000i\000n\000k\000\040\000T\000y\000p\000e\000\040\000D\000i\000s\000t\000r\000i\000b\000u\000t\000i\000o\000n}{}% 26
|
||||
BIN
slipnet_analysis/slipnet_depth_analysis.pdf
Normal file
BIN
slipnet_analysis/slipnet_depth_analysis.pdf
Normal file
Binary file not shown.
382
slipnet_analysis/slipnet_depth_analysis.tex
Normal file
382
slipnet_analysis/slipnet_depth_analysis.tex
Normal file
@ -0,0 +1,382 @@
|
||||
\documentclass[11pt,twocolumn]{article}
|
||||
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage{amsmath,amssymb}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{booktabs}
|
||||
\usepackage{hyperref}
|
||||
\usepackage[margin=1in]{geometry}
|
||||
\usepackage{natbib}
|
||||
\usepackage{float}
|
||||
\usepackage{caption}
|
||||
\usepackage{subcaption}
|
||||
|
||||
\title{No Significant Relationship Between Conceptual Depth and Graph Distance to Concrete Letter Nodes in the Copycat Slipnet}
|
||||
|
||||
\author{
|
||||
Slipnet Analysis Project\\
|
||||
\texttt{slipnet\_analysis/}
|
||||
}
|
||||
|
||||
\date{\today}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
|
||||
\begin{abstract}
|
||||
The Copycat system, developed by Douglas Hofstadter and Melanie Mitchell, employs a semantic network called the slipnet where each node has a ``conceptual depth'' parameter intended to capture its level of abstraction. We investigate whether conceptual depth correlates with the topological distance (hop count) from abstract concept nodes to concrete letter nodes (a--z). Using breadth-first search on an undirected graph representation of the slipnet, we computed minimum hop distances for 33 non-letter nodes, assigning unreachable nodes a penalty distance of $2 \times \max(\text{hops})$. Statistical analysis reveals no significant correlation between conceptual depth and hop count (Pearson $r = 0.281$, $p = 0.113$; Spearman $\rho = 0.141$, $p = 0.433$). The coefficient of determination ($R^2 = 0.079$) indicates that conceptual depth explains only 7.9\% of the variance in hop distance. These findings demonstrate that conceptual depth and network topology are orthogonal design dimensions in the Copycat architecture.
|
||||
\end{abstract}
|
||||
|
||||
\section{Introduction}
|
||||
|
||||
The Copycat project, developed by Douglas Hofstadter and Melanie Mitchell in the 1980s and 1990s, represents a landmark effort in computational cognitive science to model analogical reasoning \citep{mitchell1993,hofstadter1995}. The system operates on letter-string analogy problems of the form ``if abc changes to abd, what does ppqqrr change to?'' While the domain is deliberately simple, the underlying cognitive architecture embodies sophisticated principles about how concepts are represented and manipulated during reasoning.
|
||||
|
||||
\subsection{The Slipnet Architecture}
|
||||
|
||||
Central to Copycat's operation is the \emph{slipnet}, a semantic network containing 59 nodes representing concepts relevant to the letter-string domain. These concepts span multiple levels of abstraction:
|
||||
|
||||
\begin{itemize}
|
||||
\item \textbf{Concrete letters}: The 26 lowercase letters (a--z), representing the atomic units of the problem domain
|
||||
\item \textbf{Numeric lengths}: The numbers 1--5, used to describe group sizes
|
||||
\item \textbf{Positional concepts}: \texttt{leftmost}, \texttt{rightmost}, \texttt{first}, \texttt{last}, \texttt{middle}
|
||||
\item \textbf{Relational concepts}: \texttt{successor}, \texttt{predecessor}, \texttt{sameness}
|
||||
\item \textbf{Category concepts}: \texttt{letterCategory}, \texttt{bondCategory}, \texttt{groupCategory}
|
||||
\item \textbf{Meta-concepts}: \texttt{opposite}, \texttt{identity}
|
||||
\end{itemize}
|
||||
|
||||
The slipnet contains 202 directed links connecting these nodes. When converted to an undirected graph, this yields 104 unique edges after removing directional duplicates.
|
||||
|
||||
\subsection{Conceptual Depth}
|
||||
|
||||
Each slipnet node has a \emph{conceptual depth} parameter, a numeric value between 10 and 90 representing its level of abstraction. Hofstadter and Mitchell intended this parameter to capture the ``deepness'' of a concept---how far removed it is from surface-level, perceptual features:
|
||||
|
||||
\begin{itemize}
|
||||
\item Letter nodes (a--z): depth = 10 (most concrete)
|
||||
\item \texttt{letter}: depth = 20
|
||||
\item \texttt{letterCategory}, numbers 1--5: depth = 30
|
||||
\item \texttt{leftmost}, \texttt{rightmost}, \texttt{middle}: depth = 40
|
||||
\item \texttt{predecessor}, \texttt{successor}: depth = 50
|
||||
\item \texttt{first}, \texttt{last}, \texttt{length}: depth = 60
|
||||
\item \texttt{stringPositionCategory}, \texttt{directionCategory}: depth = 70
|
||||
\item \texttt{sameness}, \texttt{samenessGroup}, \texttt{group}: depth = 80
|
||||
\item \texttt{opposite}, \texttt{identity}, \texttt{bondFacet}, \texttt{objectCategory}: depth = 90 (most abstract)
|
||||
\end{itemize}
|
||||
|
||||
The conceptual depth influences Copycat's behavior in several ways: it affects activation spreading dynamics, it modulates the system's preference for discovering ``deep'' versus ``shallow'' analogies, and it contributes to the calculation of conceptual similarity between structures.
|
||||
|
||||
\subsection{Research Question}
|
||||
|
||||
A natural hypothesis is that deeper (more abstract) concepts should be topologically farther from concrete letters in the network. After all, if conceptual depth represents abstraction level, one might expect that reaching abstract concepts requires traversing more edges from the concrete letter nodes. We test this hypothesis using hop count---the minimum number of edges to traverse---as an Erd\H{o}s number-style metric, with letters serving as the ``center'' analogous to Erd\H{o}s himself.
|
||||
|
||||
\section{Methods}
|
||||
|
||||
\subsection{Data Extraction}
|
||||
|
||||
The slipnet structure was extracted from the original Copycat Python implementation and serialized to JSON format. The extraction preserved all 59 nodes with their attributes (name, conceptual depth, intrinsic link length) and all 202 directed links with their attributes (source, destination, fixed length, type, optional label).
|
||||
|
||||
\subsection{Graph Construction}
|
||||
|
||||
We constructed an undirected graph $G = (V, E)$ from the slipnet using the NetworkX library. Each node in the slipnet became a vertex in $G$, and each directed link became an undirected edge. When multiple directed links existed between the same pair of nodes (e.g., both \texttt{a}$\to$\texttt{b} and \texttt{b}$\to$\texttt{a}), they were collapsed into a single undirected edge. This yielded $|V| = 59$ vertices and $|E| = 104$ edges.
|
||||
|
||||
\subsection{Hop Count Computation}
|
||||
|
||||
For each non-letter node $v \in V$, we computed the minimum number of edges to reach any letter node $\ell \in L$ where $L = \{a, b, c, \ldots, z\}$:
|
||||
|
||||
\begin{equation}
|
||||
\text{hops}(v) = \min_{\ell \in L} |P(v, \ell)| - 1
|
||||
\end{equation}
|
||||
|
||||
where $P(v, \ell)$ is the shortest path (sequence of vertices) from $v$ to $\ell$. The subtraction of 1 converts path length (number of vertices) to hop count (number of edges).
|
||||
|
||||
This metric is analogous to an Erd\H{o}s number, with the 26 letter nodes collectively playing the role of Erd\H{o}s. A node with hop count 1 is directly connected to at least one letter; a node with hop count 2 is connected to a node that is connected to a letter; and so on.
|
||||
|
||||
\subsection{Handling Unreachable Nodes}
|
||||
|
||||
Five nodes in the slipnet are topologically disconnected from the letter subgraph. Rather than exclude these nodes from analysis, we assigned them a penalty distance:
|
||||
|
||||
\begin{equation}
|
||||
\text{hops}_{\text{unreachable}} = 2 \times \max_{v \in V_{\text{reachable}}} \text{hops}(v)
|
||||
\end{equation}
|
||||
|
||||
With the maximum observed hop count among reachable nodes being 4, unreachable nodes were assigned $\text{hops} = 8$. This approach ensures all 33 non-letter nodes are included in the analysis while appropriately penalizing disconnected nodes.
|
||||
|
||||
\subsection{Statistical Analysis}
|
||||
|
||||
We computed both Pearson's correlation coefficient $r$ (measuring linear relationship) and Spearman's rank correlation $\rho$ (measuring monotonic relationship) between conceptual depth and hop count. Statistical significance was assessed at $\alpha = 0.05$.
|
||||
|
||||
Linear regression was performed to characterize any trend:
|
||||
\begin{equation}
|
||||
\text{hops} = \beta_0 + \beta_1 \times \text{depth} + \epsilon
|
||||
\end{equation}
|
||||
|
||||
The coefficient of determination $R^2$ was computed to quantify the proportion of variance in hop count explained by conceptual depth.
|
||||
|
||||
\section{Results}
|
||||
|
||||
\subsection{Network Connectivity}
|
||||
|
||||
Of the 59 total nodes, 26 are letter nodes (which have hop count 0 by definition) and 33 are non-letter concept nodes. Among these 33 nodes, 28 are reachable from at least one letter and 5 are disconnected from the letter subgraph. The five disconnected nodes are:
|
||||
|
||||
\begin{itemize}
|
||||
\item \texttt{identity} (depth = 90)
|
||||
\item \texttt{opposite} (depth = 90)
|
||||
\item \texttt{objectCategory} (depth = 90)
|
||||
\item \texttt{group} (depth = 80)
|
||||
\item \texttt{letter} (depth = 20)
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Hop Distribution}
|
||||
|
||||
Table~\ref{tab:hops} shows the distribution of hop counts among all 33 non-letter nodes.
|
||||
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
\caption{Distribution of minimum hops to letter nodes}
|
||||
\label{tab:hops}
|
||||
\begin{tabular}{ccp{4.5cm}}
|
||||
\toprule
|
||||
Hops & Count & Example Nodes \\
|
||||
\midrule
|
||||
1 & 3 & \texttt{letterCategory}, \texttt{first}, \texttt{last} \\
|
||||
2 & 6 & \texttt{leftmost}, \texttt{length}, \texttt{bondFacet} \\
|
||||
3 & 12 & Numbers 1--5, \texttt{sameness}, \texttt{groupCategory} \\
|
||||
4 & 7 & \texttt{bondCategory}, \texttt{predecessor}, \texttt{middle} \\
|
||||
8 & 5 & \texttt{identity}, \texttt{opposite}, \texttt{letter} (unreachable) \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
|
||||
The distribution shows most nodes (28 of 33) within 4 hops of a letter, with 5 nodes forming a disconnected cluster.
|
||||
|
||||
\subsection{Descriptive Statistics}
|
||||
|
||||
Table~\ref{tab:descriptive} summarizes the distributions of conceptual depth and hop count.
|
||||
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
\caption{Descriptive statistics for analyzed nodes (n=33)}
|
||||
\label{tab:descriptive}
|
||||
\begin{tabular}{lcc}
|
||||
\toprule
|
||||
Statistic & Depth & Hops \\
|
||||
\midrule
|
||||
Minimum & 20 & 1 \\
|
||||
Maximum & 90 & 8 \\
|
||||
Mean & 55.76 & 3.61 \\
|
||||
Std. Dev. & 21.89 & 2.04 \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
|
||||
\subsection{Correlation Analysis}
|
||||
|
||||
The correlation analysis yielded the following results:
|
||||
|
||||
\begin{itemize}
|
||||
\item Pearson correlation: $r = 0.281$, $p = 0.113$
|
||||
\item Spearman correlation: $\rho = 0.141$, $p = 0.433$
|
||||
\item Coefficient of determination: $R^2 = 0.079$
|
||||
\item Linear regression: $\text{hops} = 0.026 \times \text{depth} + 2.14$
|
||||
\end{itemize}
|
||||
|
||||
Neither correlation coefficient approaches statistical significance. The p-values of 0.113 and 0.433 are above the 0.05 threshold. The $R^2$ of 0.079 indicates that conceptual depth explains only 7.9\% of the variance in hop count---a weak effect at best.
|
||||
|
||||
The regression slope of $0.026$ suggests that a 10-point increase in conceptual depth predicts only a 0.26 increase in hop count---modest compared to the 2.04 standard deviation of hops.
|
||||
|
||||
\subsection{Visualization}
|
||||
|
||||
Figure~\ref{fig:scatter} displays the scatter plot of conceptual depth versus minimum hops. Unreachable nodes (hops=8) are shown in red. The wide spread of depths at each hop level and the weak regression line visually confirm the absence of any strong relationship.
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=\columnwidth]{depth_hops_correlation.png}
|
||||
\caption{Scatter plot of conceptual depth versus minimum hops to nearest letter node. Reachable nodes (blue) and unreachable nodes (red, assigned hops=$2 \times 4 = 8$) are distinguished. Points are jittered vertically for visibility. The dashed line shows the linear regression fit.}
|
||||
\label{fig:scatter}
|
||||
\end{figure}
|
||||
|
||||
\subsection{Counterexamples}
|
||||
|
||||
The data reveal striking counterexamples to any depth-distance relationship:
|
||||
|
||||
\begin{enumerate}
|
||||
\item \textbf{High depth, few hops}: \texttt{bondFacet} (depth=90, the maximum) is only 2 hops from a letter. Similarly, \texttt{samenessGroup} and \texttt{alphabeticPositionCategory} (both depth=80) are also just 2 hops away.
|
||||
|
||||
\item \textbf{Low depth, many hops}: The \texttt{letter} node (depth=20) is completely disconnected from actual letters despite being the object-type concept for them. The number nodes 1--5 (depth=30) all require 3 hops to reach a letter.
|
||||
|
||||
\item \textbf{Same depth, different hops}: At depth=90, \texttt{bondFacet} needs only 2 hops while \texttt{identity}, \texttt{opposite}, and \texttt{objectCategory} are completely unreachable---a dramatic difference.
|
||||
|
||||
\item \textbf{Same hops, different depths}: Nodes at 2 hops have depths ranging from 40 (\texttt{leftmost}) to 90 (\texttt{bondFacet})---the full 50-point range.
|
||||
|
||||
\item \textbf{Unreachable nodes span depths}: The 5 disconnected nodes have depths of 20, 80, and 90---covering most of the depth range despite all being topologically equivalent (infinitely far from letters).
|
||||
\end{enumerate}
|
||||
|
||||
\section{Discussion}
|
||||
|
||||
\subsection{Orthogonal Design Dimensions}
|
||||
|
||||
The weak, non-significant correlation ($r = 0.281$, $p = 0.113$) demonstrates that conceptual depth and network topology were designed as largely independent dimensions. This orthogonality is architecturally meaningful:
|
||||
|
||||
\begin{enumerate}
|
||||
\item \textbf{Network topology} determines which concepts can activate each other through spreading activation. Two nodes connected by an edge can directly influence each other's activation levels during reasoning.
|
||||
|
||||
\item \textbf{Conceptual depth} modulates how the system values discoveries at different abstraction levels. Deeper concepts, when activated, contribute more to the system's sense of having found a ``good'' analogy.
|
||||
\end{enumerate}
|
||||
|
||||
By keeping these dimensions independent, the slipnet can connect concepts that need to interact (regardless of depth) while separately encoding their semantic abstraction level.
|
||||
|
||||
\subsection{The Disconnected Cluster}
|
||||
|
||||
The five disconnected nodes form a coherent subsystem:
|
||||
|
||||
\begin{itemize}
|
||||
\item \texttt{identity} and \texttt{opposite}: These exist primarily as labels on slip links, not as endpoints in the graph. They track activation for meta-level relationship concepts.
|
||||
|
||||
\item \texttt{letter}, \texttt{group}, \texttt{objectCategory}: These form an isolated cluster representing the object-type hierarchy. They classify workspace objects but don't connect to the letter-category network.
|
||||
\end{itemize}
|
||||
|
||||
Notably, the \texttt{letter} concept (depth=20, relatively concrete) is disconnected while \texttt{letterCategory} (depth=30) is directly connected to all 26 letters. This distinction between ``letter-as-type'' and ``letter-as-category'' further illustrates how topology and depth serve different purposes.
|
||||
|
||||
\subsection{Hub Structure}
|
||||
|
||||
Analysis of the shortest paths reveals that routes to letters converge on gateway nodes:
|
||||
|
||||
\begin{itemize}
|
||||
\item \texttt{first} $\to$ \texttt{a}: Property link providing direct access
|
||||
\item \texttt{last} $\to$ \texttt{z}: Property link providing direct access
|
||||
\item \texttt{letterCategory} $\to$ any letter: Instance links to all 26 letters
|
||||
\end{itemize}
|
||||
|
||||
The \texttt{letterCategory} node is particularly important, serving as a central hub. This makes it the primary gateway between abstract concepts and concrete letters, explaining why many paths route through it.
|
||||
|
||||
\subsection{Implications}
|
||||
|
||||
Our findings have implications for understanding and extending the Copycat architecture:
|
||||
|
||||
\begin{enumerate}
|
||||
\item \textbf{For analysis}: Attempting to infer conceptual depth from topology---or vice versa---would be misguided. They encode different information.
|
||||
|
||||
\item \textbf{For extensions}: New concepts added to the slipnet can be placed topologically based on needed associations, with depth set independently based on abstraction level.
|
||||
|
||||
\item \textbf{For interpretation}: The slipnet's representational power comes from having multiple orthogonal dimensions, not from a single unified hierarchy.
|
||||
\end{enumerate}
|
||||
|
||||
\subsection{Limitations}
|
||||
|
||||
Several limitations should be noted:
|
||||
|
||||
\begin{enumerate}
|
||||
\item \textbf{Sample size}: With 33 nodes, statistical power is limited, though this represents the complete population of non-letter nodes.
|
||||
|
||||
\item \textbf{Penalty assignment}: The choice of $2 \times \max(\text{hops})$ for unreachable nodes is somewhat arbitrary. However, alternative penalty values (e.g., $3 \times \max$ or $\infty$) would likely strengthen our conclusion.
|
||||
|
||||
\item \textbf{Undirected assumption}: We treated edges as undirected. Analysis of directed paths might differ.
|
||||
|
||||
\item \textbf{Single metric}: Hop count is one of many possible graph metrics. Centrality measures or spectral properties might reveal different patterns.
|
||||
\end{enumerate}
|
||||
|
||||
\section{Conclusion}
|
||||
|
||||
There is no statistically significant relationship between conceptual depth and hop distance to letter nodes in the Copycat slipnet. With Pearson $r = 0.281$ ($p = 0.113$), Spearman $\rho = 0.141$ ($p = 0.433$), and $R^2 = 0.079$, conceptual depth explains less than 8\% of the variance in topological distance---and this weak positive trend fails to reach significance.
|
||||
|
||||
This finding supports the view that the slipnet employs two orthogonal representational dimensions: network topology (governing associative access and activation flow) and conceptual depth (governing abstraction-level preferences in reasoning). This separation allows independent tuning of each dimension and may contribute to the slipnet's representational flexibility.
|
||||
|
||||
\section*{Data Availability}
|
||||
|
||||
All analysis scripts and data are available in the \texttt{slipnet\_analysis/} directory:
|
||||
\begin{itemize}
|
||||
\item \texttt{slipnet.json}: Complete network with computed paths
|
||||
\item \texttt{compute\_letter\_paths.py}: Hop computation script
|
||||
\item \texttt{plot\_depth\_distance\_correlation.py}: Statistical analysis and plotting
|
||||
\item \texttt{compute\_stats.py}: Detailed statistics computation
|
||||
\end{itemize}
|
||||
|
||||
\appendix
|
||||
|
||||
\section{Complete Data}
|
||||
|
||||
Table~\ref{tab:complete} presents all 33 analyzed nodes sorted by hop count and depth.
|
||||
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
\caption{All analyzed nodes sorted by hop count, then depth}
|
||||
\label{tab:complete}
|
||||
\small
|
||||
\begin{tabular}{lccc}
|
||||
\toprule
|
||||
Node & Depth & Hops & Reachable \\
|
||||
\midrule
|
||||
letterCategory & 30 & 1 & Yes \\
|
||||
first & 60 & 1 & Yes \\
|
||||
last & 60 & 1 & Yes \\
|
||||
\midrule
|
||||
leftmost & 40 & 2 & Yes \\
|
||||
rightmost & 40 & 2 & Yes \\
|
||||
length & 60 & 2 & Yes \\
|
||||
samenessGroup & 80 & 2 & Yes \\
|
||||
alphabeticPositionCategory & 80 & 2 & Yes \\
|
||||
bondFacet & 90 & 2 & Yes \\
|
||||
\midrule
|
||||
1 & 30 & 3 & Yes \\
|
||||
2 & 30 & 3 & Yes \\
|
||||
3 & 30 & 3 & Yes \\
|
||||
4 & 30 & 3 & Yes \\
|
||||
5 & 30 & 3 & Yes \\
|
||||
left & 40 & 3 & Yes \\
|
||||
right & 40 & 3 & Yes \\
|
||||
predecessorGroup & 50 & 3 & Yes \\
|
||||
successorGroup & 50 & 3 & Yes \\
|
||||
stringPositionCategory & 70 & 3 & Yes \\
|
||||
sameness & 80 & 3 & Yes \\
|
||||
groupCategory & 80 & 3 & Yes \\
|
||||
\midrule
|
||||
middle & 40 & 4 & Yes \\
|
||||
single & 40 & 4 & Yes \\
|
||||
whole & 40 & 4 & Yes \\
|
||||
predecessor & 50 & 4 & Yes \\
|
||||
successor & 50 & 4 & Yes \\
|
||||
directionCategory & 70 & 4 & Yes \\
|
||||
bondCategory & 80 & 4 & Yes \\
|
||||
\midrule
|
||||
letter & 20 & 8 & No \\
|
||||
group & 80 & 8 & No \\
|
||||
identity & 90 & 8 & No \\
|
||||
opposite & 90 & 8 & No \\
|
||||
objectCategory & 90 & 8 & No \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
|
||||
\section{Link Type Distribution}
|
||||
|
||||
The slipnet contains five distinct types of directed links, summarized in Table~\ref{tab:links}.
|
||||
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
\caption{Slipnet link type distribution}
|
||||
\label{tab:links}
|
||||
\begin{tabular}{lcp{4cm}}
|
||||
\toprule
|
||||
Type & Count & Purpose \\
|
||||
\midrule
|
||||
nonSlip & 83 & Lateral associations that don't allow conceptual slippage \\
|
||||
category & 51 & Upward hierarchy (instance to category) \\
|
||||
instance & 50 & Downward hierarchy (category to instance) \\
|
||||
slip & 16 & Links allowing conceptual slippage \\
|
||||
property & 2 & Intrinsic attributes (\texttt{a}$\to$\texttt{first}, \texttt{z}$\to$\texttt{last}) \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
|
||||
\begin{thebibliography}{9}
|
||||
|
||||
\bibitem{mitchell1993}
|
||||
Mitchell, M. (1993). \textit{Analogy-Making as Perception: A Computer Model}. MIT Press.
|
||||
|
||||
\bibitem{hofstadter1995}
|
||||
Hofstadter, D. R., \& FARG. (1995). \textit{Fluid Concepts and Creative Analogies: Computer Models of the Fundamental Mechanisms of Thought}. Basic Books.
|
||||
|
||||
\end{thebibliography}
|
||||
|
||||
\end{document}
|
||||
Reference in New Issue
Block a user