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
示例#2
0
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)
示例#3
0
文件: Test.py 项目: Knowlege/Mind
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)
示例#4
0
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
示例#5
0
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()
示例#6
0
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)
示例#7
0
 def initilize_knowledge(self):
     self.knowledge = Knowledge()
     self.init_topics_or_views(TOPICS, True)
     self.init_topics_or_views(VIEWS, False)
示例#8
0
 def getAge(self, Invention):
     age = 0
     for k in Knowledge.getValues():
         age = age+k
     return age
示例#9
0
    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
示例#10
0
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))
示例#11
0
def ProcessConceptPerSentence(bookname):
    k = Knowledge.Knowledge(bookname, False)
    print 'Edge Density in Partial Ordering Graph: ', k.EdgeDensity()
    seq = range(k.num())
    k.ProcessConceptPerSentence(seq)
示例#12
0
#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)