def testInsert(self): tag_id = 0 property_tag = SemanticTag("Property", "ssn:Poperty") measurement_property_tag = SemanticTag( "Measurement Property", "ssn:property/MeasurementProperty") relation_tag1 = PredicateSemanticTag("is a", "http://www.w3.org/ns/ssn/#is_a", property_tag, measurement_property_tag) semanticNet = SemanticNet() semanticNet.add_tag(property_tag, tag_id) tag_id += 1 semanticNet.add_tag(measurement_property_tag, tag_id) tag_id += 1 semanticNet.add_predicate(relation_tag1) accuracy_tag = SemanticTag( "Accuracy", "ssn:property/MeasurementProperty/Accuracy") relation_tag2 = PredicateSemanticTag("is a", "http://www.w3.org/ns/ssn/#is_a", measurement_property_tag, accuracy_tag) semanticNet.add_tag(accuracy_tag, tag_id) semanticNet.add_predicate(relation_tag2) vocabulary = Vocabulary(semanticNet, None, None, None, None) knowledge = Knowledge(vocabulary, None, None) kb = KnowledgeBase(knowledge) semanticNetJson = jsonpickle.encode(semanticNet) print(semanticNetJson) semanticNetDecoded = jsonpickle.decode(semanticNetJson) tag_id += 1 resolution_tag = SemanticTag("Resolution", "ssn:Resolution") semanticNet2 = SemanticNet() semanticNet2.add_tag(resolution_tag, tag_id) tag_id += 1 measurement_property_tag2 = SemanticTag( "Measurement Property", "ssn:property/MeasurementProperty") semanticNet2.add_tag(measurement_property_tag2, tag_id) relation_tag3 = PredicateSemanticTag("is a", "http://www.w3.org/ns/ssn/#is_a", measurement_property_tag, resolution_tag) semanticNet2.add_predicate(relation_tag3) vocabulary2 = Vocabulary(semanticNet2, None, None, None, None) knowledge2 = Knowledge(vocabulary2, None, None) kb2 = KnowledgeBase(knowledge2) kb.insert(kb2.knowledge) i = 30
def test_load(): """ This test Mind.Knowledge.load test_know must be runed first! """ load = Knowledge.load('test') print(load) load[623] = 'a' load.save_data() load[11] = 22 load.add_data(623, 'a') load.save_data() load.add_data(11, 22) load = Knowledge.load('test') print(load)
def print_all(book_name, char=False): print '****************************************************************' print print book_name print k = Knowledge.Knowledge(book_name, char) print float(len(k.UniqueProcesses)) / k.num(), float(len( k.UniqueConcepts)) / k.num() seq = range(k.num()) _textbook = k.progress(seq) random.shuffle(seq) _random = k.progress(seq) seq = k.bfs() _topsort = k.progress(seq) seq = k.greedy1_gradual() _gradual = k.progress(seq) for i in range(len(_textbook)): print _textbook[i][1], _textbook[i][2], _random[i][1], _random[i][2], \ _topsort[i][1], _topsort[i][2], _gradual[i][1], _gradual[i][2] print
def test_know(): """ This test Mind.Knowledge.Knowledge """ save = Knowledge.Knowledge('test') save['Player'] = 'live' save['Position'] = 1 save[5] = 12.44 save[3.1] = [1, "aaa", [1, 2], 5] print(save) print(save["player"]) save.add_data('Player', 'live') save.add_data('Position', 1) save.add_data(5, 12.44) save.add_data(3.1, [1, "aaa", [1, 2], 5]) print(save) save.save_data()
class World(object): # the sim will run for 50 years by default """docstring for World""" current_date = arrow.get( '%s-%s-%s' % (START_SIM_DATE[0], START_SIM_DATE[1], START_SIM_DATE[2])) def __init__(self, until_year=10): super(World, self).__init__() # Populations self.living_population = Person.living_population self.organizations = Organization.current_organizations # self.deceased_population = [] self.person_id = 0 self.birthdays = None self.conception_dates = defaultdict(list) # Time self.until_year = until_year self.towns = {} self.setup_world() def setup_world(self): """ Setup initial locations, organizations, etc of the world """ # # currently a city, needs to be extended further # self.locations = {key:{ # 'schools':[], 'universities':[], 'hospitals':[] # } for key in LOCATIONS} # Citizens will be compulsarily affiliated with a geographic location # Other groups are optional. But if you leave one location, you must move to another self.initilize_knowledge() print self.knowledge for location_name in LOCATIONS: town = Town(location_name, self) self.towns[location_name] = town # Area 51 - Will be the default town # If a person leaves the simulation entirely (eg. dies, or gets kidnapped by aliens, # then we move them to Area 51) self.towns["Area 51"] = Town("Area 51", self) self.towns["Area 51"].area_51_setup() def do_things(self): born = [] while True: # self.env.now <= self.until_year: World.current_date = World.current_date.replace(days=1) day, month = World.current_date.day, World.current_date.month weekday = World.current_date.weekday( ) # returns day of the week, 0-6 0=Monday self.age_living_population(day, month) self.conceive_babies(day, month) if weekday < 4: self.go_to_school() yield self.env.timeout(1) def conceive_babies(self, day, month): if (day, month) in self.conception_dates: for mother in self.conception_dates[(day, month)]: mother.have_baby() def go_to_school(self): for school in self.organizations['school']: school.teach_fact() school.all_members_simulate_interaction() # for org in self.organizations: # if org.type == 'school': # for student in org.current_members: # student.simple_interaction(org.current_members, 'classmate_school') # Only return children who just turned old enough to start attending school - i.e. no school assigned yet # Assign these children to a currently existing school in their area # for loc in self.locations.keys(): # for school in self.locations[loc]['school']: # for student in school.current_members: # student.simple_interaction(school.current_members) # pass # Bad iterations!! Should have a link to the Organization.all or something and then iterate through that. # # ToDo: If school in area is full_capacity, then move family? # # pass # pass def age_living_population(self, day, month): if hasattr(self, 'birthdays'): if (day, month) in self.birthdays.keys(): # print "Aging: ", len(self.birthdays[(day,month)]), " children" for npc in self.birthdays[(day, month)]: npc.do_age() @property def birthdays(self): # if not hasattr(self, 'birthdays'): # self.__birthdays = defaultdict(list) return self.__birthdays @birthdays.setter def birthdays(self, new_birth=None): if new_birth: [day, month, baby] = new_birth if not hasattr(self, 'birthdays'): self.__birthdays = defaultdict(list) self.__birthdays[(day, month)].append(baby) # @property # def schools(self): # schools = [] # for loc in [location for location in self.locations.keys()]: # for school in self.locations[loc]['school']: # print school @property def random_location(self): return self.towns[random.choice(LOCATIONS)] def initilize_knowledge(self): self.knowledge = Knowledge() self.init_topics_or_views(TOPICS, True) self.init_topics_or_views(VIEWS, False) def init_topics_or_views(self, topics, is_topics): for topic_name, topic_info in topics.items(): topic = Topic(topic_name) facts = [] # print topic_name tags = topic_info['tags'] if 'tags' in topic_info else [] if 'facts' in topic_info: print "Need to add explicit facts..." for fact in topic_info['facts']: facts.append(fact) elif 'num_facts' in topic_info: facts.extend([ "%s_%s" % (topic_name, info) for info in range(topic_info['num_facts']) ]) for fact_name in facts: fact = Fact(fact_name, topic_name, random.choice(tags) if tags else None) topic.add_fact(fact) # Adds to a list of views that are not necessarily learnt in school if not is_topics: pass # self.knowledge.add_view(topic) else: self.knowledge.add_topic(topic) # Sample with replacement def sample_wr(self, population, _choose=random.choice): while True: yield _choose(population) def simulate_time(self): # until = 365*self.until_year # while until > 0: # self.do_things() # until -= 1 print "Simulating %s years" % (self.until_year) self.env = simpy.Environment() self.env.process(self.do_things()) self.env.run(until=365 * self.until_year)
def initilize_knowledge(self): self.knowledge = Knowledge() self.init_topics_or_views(TOPICS, True) self.init_topics_or_views(VIEWS, False)
def getAge(self, Invention): age = 0 for k in Knowledge.getValues(): age = age+k return age
def filterMessages(self, logs): knowledgeBase = [] for log in logs: message = Message(Message.LogFileType[self.FileName], log) # USB disconnect if ("USB disconnect" in message.Message): usbDisconnectionKnowledge = Knowledge( interest=Knowledge.Interests["USB Disconnect"], dateTime=(message.Date + ", " + message.Time), user=message.LoginName) usbDisconnectionKnowledge.Summery.append( "USB device disconnected") knowledgeBase.append(usbDisconnectionKnowledge) # USB connect elif ("New USB device found" in message.Message): usbConnectionKnowledge = Knowledge( interest=Knowledge.Interests["USB Connect"], dateTime=(message.Date + ", " + message.Time), user=message.LoginName) usbConnectionKnowledge.Summery.append("USB device connected.") knowledgeBase.append(usbConnectionKnowledge) elif ((("Product: USB OPTICAL MOUSE" in message.Message) and (not "Product: USB OPTICAL MOUSE as" in message.Message)) or ("Product: Mass Storage" in message.Message)): index = self.getParticularIndexOfInterest( knowledgeBase=knowledgeBase, interest=Knowledge.Interests["USB Connect"]) if (index != None): if ("Product: USB OPTICAL MOUSE" in message.Message): knowledgeBase[index].Summery.append( "Product: USB OPTICAL MOUSE.") elif ("Product: Mass Storage" in message.Message): knowledgeBase[index].Summery.append( "Product: Mass Storage Device.") elif ("Manufacturer:" in message.Message): searchResult = self.getInsideOfMessage(message=message.Message, separator=" ", keyword="Manufacturer:") index = self.getParticularIndexOfInterest( knowledgeBase, Knowledge.Interests["USB Connect"]) if (index != None): knowledgeBase[index].Summery.append( searchResult.replace(">", "")) # HDD unmount elif ("Unmounting /dev/sda" in message.Message): hddUnmountKnowledge = Knowledge( interest=Knowledge.Interests["HDD Unmount"], dateTime=(message.Date + ", " + message.Time), user=message.LoginName) hddUnmountKnowledge.Summery.append("HDD " + message.Message) knowledgeBase.append(hddUnmountKnowledge) elif ("Unmounted /dev/sda" in message.Message): index = self.getParticularIndexOfInterest( knowledgeBase=knowledgeBase, interest=Knowledge.Interests["HDD Unmount"]) if (index != None): knowledgeBase[index].Summery.append( " and successfully unmounted") # HDD Mount elif (("Mounted /dev/sda" in message.Message) and (not "on behalf of uid" in message.Message)): hddMountKnowledge = Knowledge( interest=Knowledge.Interests["HDD Mount"], dateTime=(message.Date + ", " + message.Time), user=message.LoginName) hddMountKnowledge.Summery.append("HDD " + message.Message) knowledgeBase.append(hddMountKnowledge) # User Login elif (("PWD=" in message.Message) and ("USER="******"COMMAND=" in message.Message)): userLoginKnowledge = Knowledge( interest=Knowledge.Interests["User Login"], dateTime=(message.Date + ", " + message.Time), user=message.LoginName) searchResult = self.getInsideOfMessage(message=message.Message, separator=" ", keyword="PWD=") userLoginKnowledge.Summery.append("User logged in. Details: " + searchResult) knowledgeBase.append(userLoginKnowledge) elif ("session opened for user" in message.Message): index = self.getParticularIndexOfInterest( knowledgeBase=knowledgeBase, interest=Knowledge.Interests["User Login"]) if (index != None): knowledgeBase[index].Summery.append(" (confirmed)") # User Logout elif ("session closed for user" in message.Message): userLogoutKnowledge = Knowledge( interest=Knowledge.Interests["User Logout"], dateTime=(message.Date + ", " + message.Time), user=message.LoginName) searchResult = self.getInsideOfMessage(message=message.Message, separator=" ", keyword="closed") userLogoutKnowledge.Summery.append( "User logged out and session " + searchResult) knowledgeBase.append(userLogoutKnowledge) # Software install elif (("startup archives unpack" in message.Message) or ("startup archives install" in message.Message)): softwareInstallKnowledge = Knowledge( interest=Knowledge.Interests["Software Install"], dateTime=(message.Date + ", " + message.Time), user=message.LoginName) softwareInstallKnowledge.Summery.append("Software: ") knowledgeBase.append(softwareInstallKnowledge) elif ("status half-installed " in message.Message): index = self.getParticularIndexOfInterest( knowledgeBase=knowledgeBase, interest=Knowledge.Interests["Software Install"]) if ((index != None) and (not "installed" in knowledgeBase[index].Summery[ len(knowledgeBase[index].Summery) - 1])): knowledgeBase[index].Summery.append( message.Message.split("status half-installed ")[1] + " installed") elif ("remove " in message.Message): index = self.getParticularIndexOfInterest( knowledgeBase=knowledgeBase, interest=Knowledge.Interests["Software Uninstall"]) if (index != None): knowledgeBase[index].Summery.append( message.Message.split("remove ")[1] + " uninstalled") # Software uninstall elif ("startup packages remove" in message.Message): softwareUninstallKnowledge = Knowledge( interest=Knowledge.Interests["Software Uninstall"], dateTime=(message.Date + ", " + message.Time), user=message.LoginName) softwareUninstallKnowledge.Summery.append("Software: ") knowledgeBase.append(softwareUninstallKnowledge) elif ("status not-installed" in message.Message): index = self.getParticularIndexOfInterest( knowledgeBase=knowledgeBase, interest=Knowledge.Interests["Software Uninstall"]) if (index != None): knowledgeBase[index].Summery.append( message.Message.split("status not-installed ")[1] + " uninstalled") for knowledge in knowledgeBase: if (knowledge.Interest == Knowledge.Interests["USB Disconnect"]): self.printLog(knowledge) elif ((knowledge.Interest == Knowledge.Interests["USB Connect"]) and (len(knowledge.Summery) >= 3)): isAllRight = False for data in knowledge.Summery: if (("USB device connected" in data) or ("Product: USB OPTICAL MOUSE" in data) or ("Product: Mass Storage Device" in data) or ("Manufacturer:" in data)): isAllRight = True else: isAllRight = False break if (isAllRight): self.printLog(knowledge) elif ((knowledge.Interest == Knowledge.Interests["HDD Unmount"]) and (len(knowledge.Summery) >= 2) and ("unmounted" in knowledge.Summery[1])): self.printLog(knowledge) elif (knowledge.Interest == Knowledge.Interests["HDD Mount"]): self.printLog(knowledge) elif ((knowledge.Interest == Knowledge.Interests["User Login"]) and (len(knowledge.Summery) >= 2) and ("confirmed" in knowledge.Summery[1])): self.printLog(knowledge) elif ((knowledge.Interest == Knowledge.Interests["User Logout"]) and ("session closed for user" in knowledge.Summery[0])): self.printLog(knowledge) elif ( (knowledge.Interest == Knowledge.Interests["Software Install"]) and (len(knowledge.Summery) >= 2) and ("installed" in knowledge.Summery[1])): self.printLog(knowledge) elif ((knowledge.Interest == Knowledge.Interests["Software Uninstall"]) and (len(knowledge.Summery) >= 2) and ("uninstalled" in knowledge.Summery[1])): self.printLog(knowledge) del knowledgeBase
def preprocessing(sentence): print(sentence) eta = "" subs = [] tokens = re.findall(r'[a-z]+', sentence) for token in tokens: if token in questions: if token.lower() == "apa" or token.lower() == "bagaimana": eta = "things" elif token.lower() == "mana": eta = "tempat" elif token.lower() == "siapa": eta = "person" else: eta = "" sets = False if token in penyakit: sets = True tokens = map(unicode, tokens) postag = ct.tag(tokens) print(postag) if eta == "things": rel = [ item[0] for item in postag if item[1] == "NN" or item[1] == "VB" ] subs = [ item[0] for item in postag if item[1] == "NN" or item[1] == "FW" or item[1] == "NNP" or item[1] == "JJ" ] elif eta == "tempat": rel = [item[0] for item in postag if item[1] == "NN"] subs = [item[0] for item in postag if item[1] == "NN"] else: rel = [item[0] for item in postag if item[1] == "NN"] subs = [item[0] for item in postag if item[1] == "NN"] if "pemilik" in rel: for sub in subs: temp = kn.relApotek(sub, "?x", "?x", eta) if temp: print(', '.join(temp)) if "pemilik" not in rel and "apotek" in rel: for sub in subs: temp = kn.relApotek(sub, "?x", "?x", eta) if temp: print(', '.join(temp)) if "manfaat" in rel: for sub in subs: temp = kn.relGunaObat(sub, "?x") if temp: print(', '.join(temp)) if "menular" in rel: for sub in subs: temp = kn.relMedia(sub, "?x") if temp: print(', '.join(temp)) if "jenis" in rel: for sub in subs: temp = kn.relJenisPenyakit(sub, "?x") if temp: print(', '.join(temp)) if "obat" in rel: if sets: for sub in subs: temp = kn.relObat(sub, "?x") if temp: print(', '.join(temp)) else: for sub in subs: temp = kn.relObat("?x", sub) if temp: print(', '.join(temp)) if "pencegahan" in rel or "mencegah" in rel: for sub in subs: temp = kn.relPencegahan(sub, "?x") if temp: print(', '.join(temp))
def ProcessConceptPerSentence(bookname): k = Knowledge.Knowledge(bookname, False) print 'Edge Density in Partial Ordering Graph: ', k.EdgeDensity() seq = range(k.num()) k.ProcessConceptPerSentence(seq)
#print len(status) #i = 0 #while i<len(status): # x = 0 # y = 0 # z = 0 # p = i # for j in range(4): # if i < len(status): # x += status[i][0] # y += status[i][1] # z += status[i][2] # i += 1 # else: # break # print x/(i-p), y/(i-p), z/(i-p) k = Knowledge.Knowledge('test', True) print k.num() #RI #seq = k.greedys(10,[0.3, 0.7, 0.2]) #NK #seq = k.greedys(10,[1.8, 0.2, 0.5]) #RC #seq = k.greedys(10,[1.2, 0.2, 0.3]) seq = k.greedys(10, [0.465, 0.581, 0.214]) print seq for i in seq: print k.data[i].sentence print k.proportion_pace(seq)