def __init__(self):
     parser = Parser(CONFIG_PATH)
     self._host = parser.server()['host']
     self._port = parser.server()['port']
     self._endpoints = {}
     for ep in parser.endpoints():
         self._endpoints[ep['endpoint_url']] = Endpoint(ep)
 def __init__(self):
     parser = Parser()
     args = parser.get_section('FLAIR')
     self.corpus_path = args['flair_data_path']
     self.word_emb_path = args['flair_emb_path']
     self.model_path = args['flair_model_path']
     self.hidden_size = int(args['flair_num_hidden'])
     self.epochs = int(args['flair_epochs'])
Example #3
0
 def __init__(self):
     parser = Parser()
     args = parser.get_section('SVM')
     self.model_path = args['svm_model_path']
     self.pipeline = Pipeline([('vect',
                                CountVectorizer(tokenizer=self.do_nothing,
                                                preprocessor=None,
                                                lowercase=False)),
                               ('tfidf', TfidfTransformer()),
                               ('clf', LinearSVC(class_weight='balanced'))])
Example #4
0
def main():
    parser = Parser()
    config = parser.parse_config("client")
    client = Client(config)
    tasks = parser.parse_tasks()
    client.register_task(tasks)
    try:
        client.execute()
    except Exception as e:
        raise e
    finally:
        client.close()
Example #5
0
    def __init__(self, dataset, is_train=True):
        parser = Parser()
        args = parser.get_sections(['GENERAL', 'RNN'])
        self.dataset = dataset
        self.num_hidden = int(args['num_hidden'])
        self.hidden_size = int(args['hidden_size'])
        self.num_classes = int(args['num_classes'])
        self.num_epochs = int(args['epochs'])
        self.max_sent_length = int(args['max_sent_length'])
        self.saved_dir = args['saved_dir']
        self.display_freq = int(args['display_frequency'])
        self.rnn_keep_prob = float(args['rnn_keep_prob'])
        self.dense_keep_prob = float(args['dense_keep_prob'])

        self.x = tf.placeholder(tf.int32, [None, self.max_sent_length], name="x")
        self.y = tf.placeholder(tf.int32, [None], name="y")
        self.rnn_keep_prob_ph = tf.placeholder(tf.float32, name="rnn_keep_prob")
        self.dense_keep_prob_ph = tf.placeholder(tf.float32, name="dense_keep_prob")
        self.class_weight = tf.placeholder(tf.float32, name="class_weight")
        self.global_step = tf.Variable(0, trainable=False)

        if is_train:
            with tf.name_scope("embeddings"):
                init_embeddings = tf.constant(self.dataset.embeddings, dtype=tf.float32)
                embeddings = tf.get_variable("embeddings", initializer=init_embeddings, trainable=False)
                x_emb = tf.nn.embedding_lookup(embeddings, self.x)

            with tf.name_scope("encoder"):
                forward_cells = GRUCell(self.num_hidden)
                backward_cells = GRUCell(self.num_hidden)
                forward_cells = DropoutWrapper(forward_cells, output_keep_prob=self.rnn_keep_prob_ph)
                backward_cells = DropoutWrapper(backward_cells, output_keep_prob=self.rnn_keep_prob_ph)
                (encoder_outputs_fw, encoder_outputs_bw), _ = tf.nn.bidirectional_dynamic_rnn(forward_cells,
                                                                                              backward_cells,
                                                                                              x_emb, dtype=tf.float32)
                output = tf.concat([encoder_outputs_fw, encoder_outputs_bw], axis=2)[:, -1, :]

            with tf.name_scope("dense"):
                dense = fully_connected(output, self.hidden_size, activation_fn=tf.nn.relu)
                drop = dropout(dense, self.dense_keep_prob_ph)
                logits = fully_connected(drop, self.num_classes, activation_fn=tf.nn.relu)
                self.y_pred = tf.argmax(logits, axis=-1, output_type=tf.int32, name="y_pred")

            with tf.name_scope("loss"):
                weights = tf.gather(self.class_weight, self.y)
                xent = tf.losses.sparse_softmax_cross_entropy(logits=logits, labels=self.y, weights=weights)
                self.loss = tf.reduce_mean(xent)
                self.optimizer = tf.train.AdamOptimizer().minimize(self.loss, global_step=self.global_step)

            with tf.name_scope("accuracy"):
                correct_predictions = tf.equal(self.y_pred, self.y)
                self.accuracy = tf.reduce_mean(tf.cast(correct_predictions, "float"), name="accuracy")
Example #6
0
    def __init__(self):
        Parser.__init__(self)

        os_dist = platform.dist()[0].lower()
        self.os = os_dist
        if os_dist == 'centos' or os_dist == 'redhat':
            self.os_dist = 'rpm'
            self.pkg_dist = 'el' + platform.dist()[1][0]
        elif os_dist == 'ubuntu' or os_dist == 'debian':
            self.os_dist = 'deb'
            self.pkg_dist = platform.dist()[2]  # to do
        else:
            self.os_dist = 'pkg'
        self.arch = platform.machine()
    def __init__(self, texts_file, tags_file, clean_data=True, remove_stopwords=False, is_train=True):
        self.args = Parser().get_sections(['GENERAL', 'RNN', 'FLAIR'])
        self.max_sent_length = int(self.args['max_sent_length'])
        self.batch_size = int(self.args['batch_size'])
        self.emb_size = int(self.args['emb_size'])
        self.clean_data = clean_data
        self.remove_stopwords = remove_stopwords
        self.is_train = is_train

        self.nlp = Polish()
        self.df = self.build_dataframe(texts_file, tags_file)
        self.unk_emb = self.get_random_emb(self.emb_size)
        self.word2idx, self.idx2word = self.build_dict()
        if self.is_train:
            self.embeddings = self.get_embeddings(self.args['emb_path'])
Example #8
0
def evaluate_baselines(true_y):
    args = Parser().get_section('GENERAL')
    most_frequent_label = stats.mode(true_y).mode[0]
    most_frequent_label_baseline = [
        most_frequent_label for _ in range(len(true_y))
    ]
    random_baseline = [
        randint(0,
                int(args['num_classes']) - 1) for _ in range(len(true_y))
    ]

    return (
        "Baselines: \n"
        f"random acc: {accuracy_score(true_y, random_baseline):.01%}, "
        f"random F1: {f1_score(true_y, random_baseline, average='macro'):.01%}, \n"
        f"most frequent label acc: {accuracy_score(true_y, most_frequent_label_baseline):.01%}, "
        f"most frequent label F1: {f1_score(true_y, most_frequent_label_baseline, average='macro'):.01%}"
    )
Example #9
0
class Server(object):

	__maxListen = 1
	__runServer = None

	@property
	def serverShouldRun(self):
		if self.__runServer == None:
			self.__runServer = True
		return self.__runServer

	def stop_server(self):
		self.__runServer = False
		return self.serverShouldRun


	def __init__(self):
		self.config = Parser()
		self.scale = USBScaleSingleton()
		self.db = MySQLDataBase()


	def get_weight(self):
		return self.scale.get_weight(self.scale.DATA_MODE_GRAMS)


	@property
	def host(self):
		return self.config.get('server', 'host')


	@property
	def port(self):
		return int(self.config.get('server', 'port'))


	def handle_request(self, request):
		rVal = ''
		if request == 'close server':
			self.stop_server()
			rVal = 'server about to stop..'
		elif request == 'get weight':
			rVal = str(self.get_weight())
		elif request.startswith('store weight'):
			args = re.split('\s+', request.replace('store result', ''))
			if args == ['']:
				args = ()
			self.store_value(*args)
		elif request == 'get all':
			self.db.get_all_values()
		else:
			rVal = 'request unknown.'
		return rVal


	def do_server_loop(self):
		self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
		self.socket.setblocking(1)
		self.socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
		self.socket.bind( (self.host, self.port) )
		self.socket.listen(self.__maxListen)
		while self.serverShouldRun:
			try:
				request = ''
				response = ''
				clientsocket, address = self.socket.accept()
				clientsocket.setblocking(1)
				request = clientsocket.recv(4096)
				try:
					response = self.handle_request(request)
				except Exception, e:
					response = e
				clientsocket.send(str(response))
				clientsocket.close()
			except socket.error as e:
				print(
						'server closed with error:\n\t'+\
						'current request was: {0}\n\t'+\
						'current requestor was:{1}\n\t'+\
						'error was:{2}'.format(
								request,
								clientsocket,
								e
							)
					)
				break
Example #10
0
	def __init__(self):
		self.config = Parser()
		self.scale = USBScaleSingleton()
		self.db = MySQLDataBase()
    subparsers = parser.add_subparsers(dest="mode")

    # subparser for training
    subparsers.add_parser("train", parents=[parent_parser])

    # subparser for tagging
    subparsers.add_parser("tagging", parents=[parent_parser])

    return parser.parse_args()


def train(dataset):
    model = GRU(dataset)
    model.train()


if __name__ == "__main__":
    args = parse_args()
    config_args = Parser().get_section('RNN')
    if args.mode == "train":
        dataset = Dataset(args.text_corpus, args.tag_corpus, True, False, True)
        train(dataset)
    else:
        dataset = Dataset(args.text_corpus, args.tag_corpus, False, False,
                          False)
        model = GRU(None, False)
        tagged = model.tagging(dataset)
        tagged = [str(tag) for tag in tagged]
        with open("results.txt", 'w') as file:
            file.write("\n".join(tagged))
Example #12
0
class Server(object):

    __maxListen = 1
    __runServer = None

    @property
    def serverShouldRun(self):
        if self.__runServer == None:
            self.__runServer = True
        return self.__runServer

    def stop_server(self):
        self.__runServer = False
        return self.serverShouldRun

    def __init__(self):
        self.config = Parser()
        self.scale = USBScaleSingleton()
        self.db = MySQLDataBase()

    def get_weight(self):
        return self.scale.get_weight(self.scale.DATA_MODE_GRAMS)

    @property
    def host(self):
        return self.config.get('server', 'host')

    @property
    def port(self):
        return int(self.config.get('server', 'port'))

    def handle_request(self, request):
        rVal = ''
        if request == 'close server':
            self.stop_server()
            rVal = 'server about to stop..'
        elif request == 'get weight':
            rVal = str(self.get_weight())
        elif request.startswith('store weight'):
            args = re.split('\s+', request.replace('store result', ''))
            if args == ['']:
                args = ()
            self.store_value(*args)
        elif request == 'get all':
            self.db.get_all_values()
        else:
            rVal = 'request unknown.'
        return rVal

    def do_server_loop(self):
        self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.socket.setblocking(1)
        self.socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
        self.socket.bind((self.host, self.port))
        self.socket.listen(self.__maxListen)
        while self.serverShouldRun:
            try:
                request = ''
                response = ''
                clientsocket, address = self.socket.accept()
                clientsocket.setblocking(1)
                request = clientsocket.recv(4096)
                try:
                    response = self.handle_request(request)
                except Exception, e:
                    response = e
                clientsocket.send(str(response))
                clientsocket.close()
            except socket.error as e:
                print(
                  'server closed with error:\n\t'+\
                  'current request was: {0}\n\t'+\
                  'current requestor was:{1}\n\t'+\
                  'error was:{2}'.format(
                    request,
                    clientsocket,
                    e
                   )
                 )
                break
Example #13
0
 def __init__(self):
     self.config = Parser()
     self.scale = USBScaleSingleton()
     self.db = MySQLDataBase()
Example #14
0
 def __init__(self):
     self.config = Parser()
     self.connection = None
Example #15
0
class MySQLDataBase(object):
    def __init__(self):
        self.config = Parser()
        self.connection = None

    def __connect(self):
        host = self.config.get('database', 'host')
        user = self.config.get('database', 'user')
        password = self.config.get('database', 'password')
        dbName = self.config.get('database', 'name')
        self.connection = _mysql.connect(host=host,
                                         user=user,
                                         passwd=password,
                                         db=dbName)
        return self.connection()

    def __disconnect(self):
        if self.connection:
            self.connection.close()
        self.connection = None

    def save_changes(self):
        if not self.connection:
            return False
        self.connection.commit()
        self.__disconnect()
        self.__connect()
        return True

    def __del__(self):
        self.__disconnect()

    def make_request(self, request, save=False, expectResult=True):
        if not self.connection:
            self.__connect()
        cursor = self.connection.cursor()
        state = cursor.execute(request)
        if not state:
            cursor.close()
            return None
        if expectResult:
            result = cursor.fetchall()
        if not result:
            result = []
        cursor.close()
        if save:
            self.save_changes()
        return result

    @property
    def tableName(self):
        return self.config.get('database', 'tablename')

    @property
    def primaryKey(self):
        return self.config.get('database', 'pkey')

    @property
    def types(self):
        return self.config.get('database', 'coltypes').split(',')

    @property
    def columns(self):
        return self.config.get('database', 'columns').split(',')

    def create_table(self):
        values = []
        for i, eachColumn in enumerate(self.columns):
            value = '%s %s ' % (eachColumn, self.types[i])
            if eachColumn == self.primaryKey:
                value += 'AUTO_INCRECEMENT PRIMARY_KEY'
            values.append(value)

        sql = ''' CREATE TABLE %s (%s) ''' % (self.tableName,
                                              ', '.join(values))
        # remove the following prints
        print sql
        return self.make_request(sql, save=True)

    def get_all_values(self):
        sql = '''SELECT * FROM %s ''' % self.tableName
        # remove the following prints
        print sql
        return self.make_request(sql)

    def add_entry(self, username, value):
        timestamp = repr(time.strftime('%Y-%m-%d %H:%M:%S'))
        cols = self.columns
        vals = [username, value]
        if cols.count(self.primaryKey):
            cols.remove(self.primaryKey)
        if 'timestamp' in cols:
            vals.insert(cols.index('timestamp'), timestamp)
        sql = '''INSERT INTO %s (%s) VALUES (%s) ''' % (
            self.tableName, ', '.join(cols[:len(vals)]), ', '.join(vals))
        # remove the following prints
        print sql
        self.make_request(sql, save=True)
Example #16
0
	def __init__(self):
		self.config = Parser()
		self.connection = None
Example #17
0
class MySQLDataBase(object):


	def __init__(self):
		self.config = Parser()
		self.connection = None


	def __connect(self):
		host = self.config.get('database', 'host')
		user = self.config.get('database', 'user')
		password = self.config.get('database', 'password')
		dbName = self.config.get('database', 'name')
		self.connection = _mysql.connect(
					host=host,user=user,
					passwd=password,db=dbName
				)
		return self.connection()


	def __disconnect(self):
		if self.connection:
			self.connection.close()
		self.connection = None


	def save_changes(self):
		if not self.connection:
			return False
		self.connection.commit()
		self.__disconnect()
		self.__connect()
		return True


	def __del__(self):
		self.__disconnect()


	def make_request(self, request, save=False, expectResult=True):
		if not self.connection:
			self.__connect()
		cursor = self.connection.cursor()
		state = cursor.execute(request)
		if not state:
			cursor.close()
			return None
		if expectResult:
			result = cursor.fetchall()
		if not result:
			result = []
		cursor.close()
		if save:
			self.save_changes()
		return result


	@property
	def tableName(self):
		return self.config.get('database', 'tablename')

	@property
	def primaryKey(self):
		return self.config.get('database', 'pkey')

	@property
	def types(self):
		return self.config.get('database', 'coltypes').split(',')

	@property
	def columns(self):
		return self.config.get('database', 'columns').split(',')


	def create_table(self):
		values = []
		for i, eachColumn in enumerate(self.columns):
			value = '%s %s '%(eachColumn, self.types[i])
			if eachColumn == self.primaryKey:
				value += 'AUTO_INCRECEMENT PRIMARY_KEY'
			values.append(value)
		
		sql = ''' CREATE TABLE %s (%s) ''' % (self.tableName, ', '.join(values))
		# remove the following prints
		print sql
		return self.make_request(sql, save=True)


	def get_all_values(self):
		sql = '''SELECT * FROM %s ''' % self.tableName
		# remove the following prints
		print sql
		return self.make_request(sql)


	def add_entry(self, username, value):
		timestamp = repr(time.strftime('%Y-%m-%d %H:%M:%S'))
		cols = self.columns
		vals = [username, value]
		if cols.count(self.primaryKey):
			cols.remove(self.primaryKey)
		if 'timestamp' in cols:
			vals.insert(cols.index('timestamp'), timestamp)
		sql = '''INSERT INTO %s (%s) VALUES (%s) '''%(self.tableName, ', '.join(cols[:len(vals)]), ', '.join(vals))
		# remove the following prints
		print sql
		self.make_request(sql, save=True)