class Classifier_controller:

    def __init__(self):
        self.tf_idf = self.create_tf_idf()
        self.df_list = self.create_df_list()
        self.classes = self.create_classes()
        self.classifier = Classifier()

    def create_tf_idf(self):
        tf_idf = []
        os.system("pwd")
        path1 = './tutorial/data/tf_idf'
        classes = os.listdir(path1)
        for each_class in classes:
            path2 = path1 + '/' + each_class
            files = os.listdir(path2)
            for each_file in files:
                path3 = path2 + '/' + each_file     
                vector = dict()
                f = open(path3)
                dimes = f.readlines()
                f.close()
                i = 1
                for dime in dimes:
                    if float(dime) != 0.0:
                        vector[i] = float(dime)
                    i += 1
                tf_idf.append( (int(each_class), vector.items()) )
                print "creating class sample_vector...\n"
        print "finished..."
        return tf_idf

    def create_df_list(self):
        df_list = []
        f1 = open('./tutorial/data/df.dat')
        f2 = open('./tutorial/data/attribute.dat')
        df_records = f1.readlines()
        att_records = f2.readlines()
        f1.close()
        f2.close()
        i = 0
        for df in df_records:
            attribute = att_records[i].strip('\n')
            i += 1
            df_list.append((attribute, int(df)))
            print "reading %s %d\n" %(attribute, int(df))
        print "finished..."
        return df_list

    def create_classes(self):
        classes = []
        f = open('./tutorial/data/classes.dat')
        for each in f.readlines():
            classes.append(each.strip('\n'))
        f.close()
        return classes

    def get_classes(self, text, k):
        i = self.classifier.fun(text, self.df_list, len(self.tf_idf), self.tf_idf, k)
        return self.classes[i]