def testConceptNetworkAddNodeTwice(self): "One node added twice implies an incremented occ" cn = ConceptNetwork() node = Node("Salut") cn.addNode(node) cn.addNode(node) self.assertEqual(2, node.getOcc())
def testDumpLoad(self): "Test the saving of the Concept Network" conceptNetwork = ConceptNetwork() nodeFrom = Node("From") nodeTo1 = Node("To1") conceptNetwork.addNode(nodeFrom) conceptNetwork.addNode(nodeTo1) conceptNetwork.addLink(nodeFrom, nodeTo1) state = State(1) conceptNetwork.addState(state) state.setNodeActivationValue(100, "From") conceptNetwork.fastPropagateActivations(state, 2) av = state.getNodeActivationValue("To1") f = open("cntest.data", "w") try: conceptNetwork.dump(f, 0) finally: f.close() f = open("cntest.data") try: cnLoaded = pickle.load(f) finally: f.close() import os os.remove("cntest.data") # No state is dumped! self.assertRaises(KeyError, cnLoaded.getState, 1) nodeLoaded = cnLoaded.getNode("To1") self.assertTrue(nodeLoaded)
def testGetNodeStateTyped(self): "Test getting a node state with a type" cn = ConceptNetwork() node1 = Node("Salut.") cn.addNode(node1) state = State(1) cn.addState(state) state.setNodeActivationValue(100, "Salut.", "basic") self.assertEqual(100, state.getNodeActivationValue("Salut.", "basic"))
def testLinkWeight(self): "Test the weight of a link" cn = ConceptNetwork() state = State(1) cn.addState(state) nodeFrom = Node("From") nodeTo = Node("To") link = cn.addLink(nodeFrom, nodeTo) self.assertEqual(1, link.getWeight())
def testRemoveState(self): "Test ConceptNetwork.removeStatesExcept()" conceptNetwork = ConceptNetwork() state1 = State(1) state2 = State(2) conceptNetwork.addState(state1) conceptNetwork.addState(state2) conceptNetwork.removeStatesExcept(2) self.assertEqual(state2, conceptNetwork.getState(2))
def __init__(self, botname="Ector", username="******"): self.botname = botname self.username = username if os.path.exists("cn.pkl"): f = open("cn.pkl", "r") self.cn = pickle.load(f) f.close() else: self.cn = ConceptNetwork() self.loadUserState()
def testCoOccLink(self): "Twice the same link -> its co-occurrence is incremented" conceptNetwork = ConceptNetwork() nodeFrom = Node("from") nodeTo = Node("to") conceptNetwork.addNode(nodeFrom) conceptNetwork.addNode(nodeTo) conceptNetwork.addLink(nodeFrom, nodeTo) link = conceptNetwork.addLink(nodeFrom, nodeTo) self.assertEqual(2, link.getCoOcc())
def testConceptNetworkGetLinksTo(self): "Get links to a node" cn = ConceptNetwork() nodeFrom = Node("From") nodeTo1 = Node("To1") nodeTo2 = Node("To2") nodeLabel = Node("Label") cn.addLink(nodeFrom, nodeTo1) cn.addLink(nodeFrom, nodeTo2) cn.addLink(nodeFrom, nodeTo2, nodeLabel) links = cn.getLinksTo(nodeTo2) self.assertEqual(2, len(links))
def testConceptNetworkGetLinksLabeledOrTo(self): "Get links with a label or to that label" cn = ConceptNetwork() nodeFrom = Node("From") nodeTo1 = Node("To1") nodeTo2 = Node("To2") nodeLabel = Node("Label") cn.addLink(nodeFrom, nodeTo1) cn.addLink(nodeFrom, nodeLabel) cn.addLink(nodeFrom, nodeTo2, nodeLabel) links = cn.getLinksLabeledOrTo(nodeLabel) self.assertEqual(2, len(links))
def testConceptNetworkGetLinksFrom(self): "Get links from a node" cn = ConceptNetwork() nodeFrom = Node("From") nodeTo1 = Node("To1") nodeTo2 = Node("To2") nodeTo3 = Node("To3") nodeLabel = Node("Label") cn.addLink(nodeFrom, nodeTo1) cn.addLink(nodeFrom, nodeTo2) cn.addLink(nodeFrom, nodeTo3, nodeLabel) links = cn.getLinksFrom(nodeFrom) self.assertEqual(3, len(links))
def testFastPropagation(self): "Test the propagation" conceptNetwork = ConceptNetwork() nodeFrom = Node("From") nodeTo1 = Node("To1") conceptNetwork.addNode(nodeFrom) conceptNetwork.addNode(nodeTo1) conceptNetwork.addLink(nodeFrom, nodeTo1) state = State(1) conceptNetwork.addState(state) state.setNodeActivationValue(100, "From", "basic") conceptNetwork.fastPropagateActivations(state, 2) self.assertEqual(True, state.getNodeActivationValue("To1") > 50)
def testAging(self): """See if a old node state is removed when too old. When a NodeState has more than 50 propagations, and that it is set to zero, it has to disappear from the state of the ConceptNetwork.""" conceptNetwork = ConceptNetwork() nodeFrom = Node("From") nodeTo1 = Node("To1") conceptNetwork.addNode(nodeFrom) conceptNetwork.addNode(nodeTo1) conceptNetwork.addLink(nodeFrom, nodeTo1) state = State(1) conceptNetwork.addState(state) state.setNodeActivationValue(100, "From", "basic") for i in range(0, 51): conceptNetwork.fastPropagateActivations(state, 2) state.setNodeActivationValue(0, "From", "basic") self.assertRaises(KeyError, state.nodeState.__getitem__, ("From", "basic"))
def testConceptNetworkGetNodeTyped(self): "Test getting a node with a type" class TestNode(Node): __type = "test" __decay = 35 def __init__(self, symbol, occ=1): Node.__init__(self, symbol, occ=occ) def getTypeName(self): return self.__type def getDecay(self): return self.__decay cn = ConceptNetwork() node1 = TestNode("Salut.") cn.addNode(node1) self.assertEqual(node1, cn.getNode("Salut.", "test")) self.assertEqual("test", node1.getTypeName())
def testConceptNetworkGetBadLink(self): "A link has at least 2 nodes" cn = ConceptNetwork() self.assertRaises(ConceptNetworkIncompleteLink, cn.getLink, None, None)
def testConceptNetworkGetUnkownNode(self): "Test whether an unknown node raises an exception" cn = ConceptNetwork() self.assertRaises(ConceptNetworkUnknownNode, cn.getNode, "Nimp")
def testConceptNetworkGetNode(self): "Test getting a node from a Concept Network after adding it" cn = ConceptNetwork() node1 = Node("Salut") cn.addNode(node1) self.assertEqual(node1, cn.getNode("Salut", "basic"))