def get_right_shoulder_pitch(kinect_pos, world=None): if world is None: world = get_robot_world(kinect_pos) shoulder = kinect_pos[kinecthandler.joints_map[joints.SHOULDER_RIGHT]] spine_shoulder = kinect_pos[kinecthandler.joints_map[joints.SPINE_SHOULDER]] spine_mid = kinect_pos[kinecthandler.joints_map[joints.SPINE_MID]] elbow = kinect_pos[kinecthandler.joints_map[joints.ELBOW_RIGHT]] finger_tip = kinect_pos[kinecthandler.joints_map[joints.HAND_TIP_RIGHT]] head = kinect_pos[kinecthandler.joints_map[joints.HEAD]] wrist = kinect_pos[kinecthandler.joints_map[joints.WRIST_RIGHT]] shoulder_elbow = utils.get_vector(elbow, shoulder, transform=world[0]) shoulder_elbow = utils.normalize(shoulder_elbow) shoulder_spin_shoulder = utils.get_vector(spine_shoulder, shoulder, transform=world[0]) shoulder_spin_shoulder = utils.normalize(shoulder_spin_shoulder) modified_spine_mid = [shoulder[0], spine_mid[1], spine_mid[2]] # spine_shoulder_spine_mid = utils.get_vector(modified_spine_mid, spine_shoulder, transform=world[0]) spine_shoulder_spine_mid = utils.get_vector(modified_spine_mid, shoulder, transform=world[0]) spine_shoulder_spine_mid = utils.normalize(spine_shoulder_spine_mid) cross = np.cross(spine_shoulder_spine_mid, shoulder_spin_shoulder) cross = np.reshape(utils.normalize(cross), (3, 1)) # Only z and y needed cross = [cross[2], cross[1]] cross = utils.normalize(cross) # Only z and y needed shoulder_elbow = [shoulder_elbow[2], shoulder_elbow[1]] shoulder_elbow = utils.normalize(shoulder_elbow) sign = 1 # If the elbow is higher than the shoulder if shoulder_elbow[1] < 0 or finger_tip[1] > head[1] or wrist[1] > shoulder[1]: sign = -1 res = sign * np.arccos(np.dot(shoulder_elbow, cross)[0]) res = max(res, -1.57) res = min(res, 1.57) return res
def get_left_elbow_yaw(kinect_pos, shoulder_roll=None, shoulder_pitch=None, world=None): if world is None: world = get_robot_world(kinect_pos) if shoulder_roll is None: shoulder_roll = get_left_shoulder_roll(kinect_pos, world) if shoulder_pitch is None: shoulder_pitch = get_left_shoulder_pitch(kinect_pos, world) shoulder = kinect_pos[kinecthandler.joints_map[joints.SHOULDER_LEFT]] elbow = kinect_pos[kinecthandler.joints_map[joints.ELBOW_LEFT]] wrist = kinect_pos[kinecthandler.joints_map[joints.WRIST_LEFT]] pitch_matrix = np.matrix([[1, 0, 0], [0, np.cos(shoulder_pitch), -np.sin(shoulder_pitch)], [0, np.sin(shoulder_pitch), np.cos(shoulder_pitch)]]) roll_matrix = np.matrix([[np.cos(shoulder_roll), 0, np.sin(shoulder_roll)], [0, 1, 0], [-np.sin(shoulder_roll), 0, np.cos(shoulder_roll)]]) transform = world[0] * pitch_matrix * roll_matrix elbow_shoulder = utils.get_vector(shoulder, elbow, transform=transform) elbow_shoulder = utils.normalize(elbow_shoulder) modified_elbow = [elbow[0], elbow[1] + 2, elbow[2]] elbow_vertical = utils.get_vector(modified_elbow, elbow, transform=transform) elbow_wrist = utils.get_vector(wrist, elbow, transform=transform) elbow_wrist = utils.normalize([elbow_wrist[0], elbow_wrist[1]]) cross_arm = np.cross(elbow_vertical, elbow_shoulder) cross_arm = utils.normalize([cross_arm[0], cross_arm[1]]) # cross_arm = np.array([cross_arm[0], cross_arm[1]]) # elbow_wrist = np.array([elbow_wrist[0], elbow_wrist[1]]) sign = -1 if elbow_wrist[1] > 0: sign = 1 dot = utils.normalized_dot(elbow_wrist, cross_arm) return sign * (np.arccos(dot))
def get_left_knee_pitch(kinect_pos, world=None): if world is None: world = get_robot_world(kinect_pos) hip = kinect_pos[kinecthandler.joints_map[joints.HIP_LEFT]] knee = kinect_pos[kinecthandler.joints_map[joints.KNEE_LEFT]] ankle = kinect_pos[kinecthandler.joints_map[joints.ANKLE_LEFT]] hip_knee = utils.get_vector(knee, hip, transform=world[0]) knee_ankle = utils.get_vector(ankle, knee, transform=world[0]) res = np.arccos(utils.normalized_dot(hip_knee, knee_ankle)) res = min(np.pi/2., res) return res
def get_left_elbow_roll(kinect_pos, world=None): if world is None: world = get_robot_world(kinect_pos) shoulder = kinect_pos[kinecthandler.joints_map[joints.SHOULDER_LEFT]] elbow = kinect_pos[kinecthandler.joints_map[joints.ELBOW_LEFT]] wrist = kinect_pos[kinecthandler.joints_map[joints.WRIST_LEFT]] shoulder_elbow = utils.get_vector(elbow, shoulder, transform=world[0]) elbow_wrist = utils.get_vector(wrist, elbow, transform=world[0]) res = -np.arccos(utils.normalized_dot(shoulder_elbow, elbow_wrist)) res = min(res, -0.069) res = max(res, -1.483) return res
def get_left_ankle_pitch(kinect_pos, world=None): # TODO : Test if world is None: world = get_robot_world(kinect_pos) knee = kinect_pos[kinecthandler.joints_map[joints.KNEE_LEFT]] ankle = kinect_pos[kinecthandler.joints_map[joints.ANKLE_LEFT]] foot = kinect_pos[kinecthandler.joints_map[joints.FOOT_LEFT]] ankle_foot = utils.get_vector(foot, ankle, transform=world[0]) ankle_knee = utils.get_vector(knee, ankle, transform=world[0]) res = -1*(np.pi/2 - np.arccos(utils.normalized_dot(ankle_foot, ankle_knee))) res = max(-np.pi/4., res) res = min(0, res) return res
def get_muse_vectors(source_texts: List, target_texts: List, source_model_path: str, target_model_path: str): source_model = KeyedVectors.load_word2vec_format(source_model_path, encoding='utf-8') target_model = KeyedVectors.load_word2vec_format(target_model_path, encoding='utf-8') source_vecs = [ get_vector(text.lower().split(), source_model) for text in source_texts ] target_vecs = [ get_vector(text.lower().split(), target_model) for text in target_texts ] return source_vecs, target_vecs
def get_hip_pitch(kinect_pos, ankle_pitch=None, world=None): # TODO : Test if world is None: world = get_robot_world(kinect_pos) if ankle_pitch is None: ankle_pitch = get_right_ankle_pitch(kinect_pos, world=world) spine_base = kinect_pos[kinecthandler.joints_map[joints.SPINE_BASE]] spine_shoulder = kinect_pos[kinecthandler.joints_map[joints.SPINE_SHOULDER]] modified_spine_base = [spine_base[0], spine_base[1] - 1, spine_base[2]] spine = utils.get_vector(spine_shoulder, spine_base, transform=world[0]) vertical_spine = utils.get_vector(spine_base, modified_spine_base, transform=world[0]) angle = -np.arccos(utils.normalized_dot(vertical_spine, spine)) res = angle + ankle_pitch res = min(res, 0.34) res = max(res, -1.39) return res
def get_head_pitch(kinect_pos, world=None, must_filter=True): if world is None: world = get_robot_world(kinect_pos) head = kinect_pos[kinecthandler.joints_map[joints.HEAD]] neck = kinect_pos[kinecthandler.joints_map[joints.NECK]] modified_neck = [neck[0], neck[1] - 1, neck[2]] neck_head = utils.get_vector(head, neck, transform=world[0]) modified_neck_head = utils.get_vector(head, modified_neck, transform=world[0]) res = np.arccos(utils.normalized_dot(neck_head, modified_neck_head)) sign = 1 if head[2] > neck[2]: sign = -1 res *= sign res = max(res, -0.66) res = min(res, 0.5) if must_filter: res = utils.value_filter("h_pitch", res) return res
def get_left_shoulder_roll(kinect_pos, world=None): if world is None: world = get_robot_world(kinect_pos) cross = np.cross(world[1][1], world[1][2]) shoulder = kinect_pos[kinecthandler.joints_map[joints.SHOULDER_LEFT]] elbow = kinect_pos[kinecthandler.joints_map[joints.ELBOW_LEFT]] shoulder_elbow = utils.get_vector(elbow, shoulder, transform=world[0]) res = -1 * ((np.pi / 2.) - np.arccos(utils.normalized_dot(shoulder_elbow, cross))) res = max(res, -0.085) res = min(res, 1.13) return res
def get_robot_world(kinect_pos): hip_right = kinect_pos[kinecthandler.joints_map[joints.HIP_RIGHT]] hip_left = kinect_pos[kinecthandler.joints_map[joints.HIP_LEFT]] spine_shoulder = kinect_pos[kinecthandler.joints_map[joints.SPINE_SHOULDER]] hip_vector = utils.get_vector(hip_right, hip_left) spine_shoulder_to_hip = utils.get_vector(hip_right, spine_shoulder) z = utils.normalized_cross(hip_vector, spine_shoulder_to_hip) x = utils.normalize(hip_vector) y = np.cross(z, x) z_0 = np.array([0, 0, 1]) y_0 = np.array([0, 1, 0]) x_0 = np.array([1, 0, 0]) x1 = utils.normalized_dot(x, x_0) x2 = utils.normalized_dot(x, y_0) x3 = utils.normalized_dot(x, z_0) y1 = utils.normalized_dot(y, x_0) y2 = utils.normalized_dot(y, y_0) y3 = utils.normalized_dot(y, z_0) z1 = utils.normalized_dot(z, x_0) z2 = utils.normalized_dot(z, y_0) z3 = utils.normalized_dot(z, z_0) A = np.matrix([[x1, x2, x3], [y1, y2, y3], [z1, z2, z3]]) return [A, np.array([x, y, z])]
import tensorflow as tf import numpy as np import utils from capsNet import CapsNet if __name__ == "__main__": vec, label, map_label = utils.get_vector('train', 12, None) vec = np.array(vec).astype(np.float) vec_test, label_test, _ = utils.get_vector('test', 12, map_label) vec_test = np.array(vec_test).astype(np.float) vec = np.array(vec.reshape(-1, 12, 25, 1)).astype(np.float32) vec_test = vec_test.reshape(-1, 12, 25, 1) caps_model = CapsNet() earlyStopping = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=8) reduce_lr = tf.keras.callbacks.ReduceLROnPlateau(monitor='val_loss', factor=0.2, patience=3, min_lr=1e-5) #tensorBoard = tf.keras.callbacks.TensorBoard(log_dir='logs') caps_model.compile(optimizer=tf.keras.optimizers.Adam(1e-3), loss=caps_model.margin_loss, metrics=['accuracy']) caps_model.fit(vec, label, batch_size=32, epochs=50, validation_data=(vec_test, label_test), callbacks=[earlyStopping, reduce_lr])
def get_word_vecs(line, glove): l = [] for word in line.split(): l.append(get_vector(word.lower(), glove)) return l
def get_bets_olimp(bets_olimp, match_id, proxies_olimp, proxy, time_out, pair_mathes, place, n=0): global sport_list key_id = str(match_id) match_exists = False for pair_match in pair_mathes: if match_id in pair_match: match_exists = True minute_complite = if_exists(sport_list, 'name', pair_match[2], 'min') my_sport_name = pair_match[2] if match_exists is False: err_str = 'Олимп: матч ' + str( match_id ) + ' не найден в спике активных, поток get_bets_olimp завершен.' raise OlimpMatchСompleted(err_str) resp_temp = '' try: res, time_resp = get_match_olimp(match_id, proxies_olimp, proxy, time_out, pair_mathes, place) resp = res.json().get('data') if res.status_code == 404: # res: {"error":{"err_code":404,"err_desc":"Прием ставок приостановлен"},"data":null}, status_code: 404 # prnts('Олимп ' + key_id + '. Получен пустой ответ при запросе матча, ставим math_block=True, time_resp: ' + str(time_resp) + ', res: ' + str(res.text) + ', status_code: ' + str(res.status_code)) math_block = True math_block = False resp_temp = str(resp) time_start_proc = time.time() if not math_block: if place == 'pre': if resp: math_block = resp.get('ms', False) else: math_block = False else: math_block = True if not resp or str(resp.get( 'ms', '1')) != '2' or resp.get('error', { 'err_code': 0 }).get('err_code') == 404 else False # 1 - block, 2 - available if str(resp.get('ms', '')) == '4': err_str = 'Олимп: матч, ' + my_sport_name + ' - ' + str( match_id) + ' завершен, т.к. ms=4' raise OlimpMatchСompleted(err_str) if not math_block: timer = resp.get('t', '') minute = -1 # (2:0) Перерыв try: minute = int( re.findall('\d{1,2}\\"', resp.get('sc', ''))[0].replace('"', '')) except: pass if minute_complite: if minute >= (int(minute_complite) - 2): err_str = 'Олимп: матч, ' + my_sport_name + ' - ' + str( match_id) + ' завершен, т.к. ' + str( minute_complite - 2) + ' минут прошло.' raise OlimpMatchСompleted(err_str) skId = resp.get('sport_id') skName = resp.get('sn') sport_name = resp.get('cn') champid = sport_name # NOT FOUND name = resp.get('n') # if name == 'Ювентус - Удинезе': # print('resp: ' + str(resp)) start_time = int(resp.get('t', 0)) start_after_min = math.floor((start_time - int(time.time())) / 60) if place == 'pre': if start_after_min: if start_after_min <= 5: err_str = 'Олимп: pre матч, ' + skName + ' - ' + str( match_id) + ' завершен, т.к. ' + str( start_after_min) + ' минут до начала матча.' raise OlimpMatchСompleted(err_str) if not start_after_min: start_after_min = 0 if start_after_min <= -120: err_str = 'Олимп: матч, ' + skName + ' - ' + str( match_id) + ' завершен, т.к. прошло ' + str( abs(start_after_min)) + ' минут от начала матча.' raise OlimpMatchСompleted(err_str) score = '' sc1 = 0 sc2 = 0 try: score = resp.get('sc', '0:0').split(' ')[0] try: sc1 = int(score.split(':')[0]) except Exception as e: pass # prnts('err util_olimp sc1: ' + str(e)) try: sc2 = int(score.split(':')[1]) except Exception as e: pass # prnts('err util_olimp sc2: ' + str(e)) except: if DEBUG: prnts('err util_olimp error split: ' + str(resp.get('sc', '0:0'))) try: bets_olimp[key_id].update({ 'sport_id': skId, 'place': place, 'sport_name': skName, 'league': sport_name, 'liga_id': champid, 'name': name, 'score': score, 'time_start': timer, 'start_after_min': start_after_min, 'start_time': start_time, 'time_req': round(time.time()) }) except: bets_olimp[key_id] = { 'bk_name': 'olimp', 'sport_id': skId, 'place': place, 'sport_name': skName, 'league': sport_name, 'liga_id': champid, 'name': name, 'score': score, 'time_start': timer, 'start_after_min': start_after_min, 'start_time': start_time, 'time_req': round(time.time()), # 'time_change_total': round(time.time()), # 'avg_change_total': [], 'kofs': {} } for c in resp.get('it', []): # del: угловые group_kof = c.get('n', '').replace(' ', '').lower() group_kof = group_kof.replace('азиатские', '') if group_kof in [ 'основные', 'голы', 'инд.тотал', 'доп.тотал', 'исходыпотаймам', 'победасучетомфоры', 'форы', 'тоталы', 'инд.тоталы' ]: for d in c.get('i', []): if 'обе забьют: '.lower() \ in d.get('n', '').lower() \ or 'забьет: '.lower() \ in d.get('n', '').lower() \ or 'никто не забьет: '.lower() \ in d.get('n', '').lower() \ or 'победа '.lower() \ in d.get('n', '').lower() \ or d.get('n', '').lower().endswith(' бол') \ or d.get('n', '').lower().endswith(' мен') \ or 'с форой'.lower() \ in d.get('n', '').lower() \ or 'первая не проиграет'.lower() \ in d.get('n', '').lower() \ or 'вторая не проиграет'.lower() \ in d.get('n', '').lower() \ or 'ничьей не будет' \ in d.get('n', '').lower() \ or 'ничья'.lower() \ in d.get('n', '').lower() \ or 'форы' in group_kof: c1 = str(resp.get('c1', '')) c2 = str(resp.get('c2', '')) if 'форы' in group_kof: key_r = d.get('n', '').replace( c1, 'П1сфорой').replace(c2, 'П2сфорой') key_r = key_r.replace(' ', '') else: key_r = d.get('n', '').replace(c1, 'Т1').replace( c2, 'Т2') coef = str([ abbreviations[c.replace(' ', '')] if c.replace( ' ', '') in abbreviations.keys() else c.replace(' ', '') if '(' not in c.replace( ' ', '') else to_abb(c) for c in [key_r] ][0]) if coef: value = d.get('v', 0) kof_order = bets_olimp[key_id].get( 'kofs', {}).get(coef, {}).get('hist', {}).get('order', []) time_change = bets_olimp[key_id].get( 'kofs', {}).get(coef, {}).get('hist', {}).get( 'time_change', time.time()) avg_change = bets_olimp[key_id].get( 'kofs', {}).get(coef, {}).get('hist', {}).get('avg_change', []) try: if value != kof_order[-1]: kof_order.append(value) avg_change.append(0) time_change = time.time() elif value == kof_order[-1]: avg_change[-1] = round(time.time() - time_change) except IndexError: # firs kof_order.append(value) avg_change.append(0) try: bets_olimp[key_id]['kofs'].update({ coef: { 'time_req': round(time.time()), 'value': value, 'apid': d.get('apid', ''), 'factor': d.get('v', 0), 'sport_id': skId, 'event': match_id, 'vector': get_vector(coef, sc1, sc2), 'hist': { 'time_change': time_change, 'avg_change': avg_change, 'order': kof_order } } }) except: pass # if key_id == '52495128': # prnts(key_id) # prnts(bets_olimp) # prnts(resp) else: if bets_olimp.get(key_id): if DEBUG: prnts( 'Олимп матч {}, {} заблокирован:{}'.format( place, key_id, math_block), 'hide') else: if DEBUG: prnts( 'Олимп матч {}, {} заблокирован и это первое добаление:{}' .format(place, key_id, math_block), 'hide') if bets_olimp.get(key_id): bets_olimp[key_id].update({'time_req': round(time.time())}) else: pass # prnts('Олимп, не смог обновить время time_req, т.к. матч ' + str(key_id) + ' заблокирован и это первое добавление?') try: if bets_olimp.get(key_id): for j in list(bets_olimp[key_id].get('kofs', {})): try: kof_order = bets_olimp[key_id]['kofs'][j].get( 'hist', {}).get('order', []) time_change = bets_olimp[key_id]['kofs'][j].get( 'hist', {}).get('time_change', time.time()) avg_change = bets_olimp[key_id]['kofs'][j].get( 'hist', {}).get('avg_change', []) try: if 0 != kof_order[-1]: kof_order.append(0) # avg_change.append(round(time.time() - time_change)) avg_change.append(0) time_change = time.time() elif 0 == kof_order[-1]: avg_change[-1] = round(time.time() - time_change) except IndexError: # firs kof_order.append(0) avg_change.append(0) if bets_olimp.get(key_id, {}).get('kofs', {}).get(j): bets_olimp[key_id]['kofs'][j]['value'] = 0 bets_olimp[key_id]['kofs'][j]['factor'] = 0 bets_olimp[key_id]['kofs'][j][ 'time_req'] = round(time.time()) if bets_olimp[key_id]['kofs'][j].get( 'hist') is None: bets_olimp[key_id]['kofs'][j]['hist'] = {} bets_olimp[key_id]['kofs'][j]['hist'][ 'avg_change'] = avg_change bets_olimp[key_id]['kofs'][j]['hist'][ 'time_change'] = time_change bets_olimp[key_id]['kofs'][j]['hist'][ 'kof_order'] = kof_order if kof_order[-1]: # prnts('Олимп x, матч заблокирован, знач. выставил в 0: ' + key_id + ' ' + str(j), 'hide') prnts( 'Олимп x, матч заблокирован, знач. выставил в 0: ' + key_id + ' ' + str(j) + 'math_block: ' + str(math_block) + ' запрос №: ' + n) else: pass # prnts('Олимп x, матч заблокирован и это первое добавлени значение не выставляю в 0: ' + key_id + ' ' + str(j), 'hide') prnts( 'Олимп x, матч заблокирован и это первое добавлени: ' + key_id + ' ' + str(j) + ' math_block: ' + str(math_block) + ' запрос №: ' + n) except Exception as e: exc_type, exc_value, exc_traceback = sys.exc_info() err_str = 'error: ' + str(e) + ' (' + str( repr( traceback.format_exception( exc_type, exc_value, exc_traceback))) + ')' prnts( 'Олимп x, матч:' + key_id + ' ошибка 00 при удалении старой котирофки: ' + str(err_str) + ' math_block: ' + str(math_block) + ' запрос №: ' + n) time.sleep(5) except Exception as e: exc_type, exc_value, exc_traceback = sys.exc_info() err_str = 'error: ' + str(e) + ' (' + str( repr( traceback.format_exception(exc_type, exc_value, exc_traceback))) + ')' prnts('Олимп x, матч:' + key_id + ' ошибка 0 при удалении установке в 0 котирофки: ' + str(err_str) + ' math_block: ' + str(math_block) + ' запрос №: ' + n) time.sleep(5) return time_resp + (time.time() - time_start_proc) # for val in bets_olimp.get(key_id, {}).get('kofs', {}).values(): # time_change_kof = val.get('hist', {}).get('time_change') # time_change_tot = bets_olimp.get(key_id, {}).get('time_change_total') # avg_change_total = bets_olimp.get(key_id, {}).get('avg_change_total', []) # if round(time_change_tot) < round(time_change_kof): # avg_change_total.append(round(time_change_kof - time_change_tot)) # bets_olimp[key_id].update({'time_change_total': round(time_change_kof)}) # bets_olimp[key_id].update({'avg_change_total': avg_change_total}) try: for i in list(bets_olimp): if str(i) == key_id: for j in list(bets_olimp[i].get('kofs', {})): hide_time = 4 if bets_olimp[i].get('place') == 'pre': hide_time = TIMEOUT_PRE_MATCH + hide_time if round( float(time.time() - float(bets_olimp[i]['kofs'][j].get( 'time_req', 0))) ) > hide_time and bets_olimp[i]['kofs'][j].get( 'value', 0) > 0: try: bets_olimp[i]['kofs'][j]['value'] = 0 bets_olimp[i]['kofs'][j]['factor'] = 0 bets_olimp[i]['kofs'][j]['time_req'] = round( time.time()) if DEBUG: prnts('2: ' + i + ' ' + j + ' - выставил в 0') prnts( 'Олимп, матч:' + key_id + ' данные по котировке из БК не получены более ' + str(hide_time) + ' сек., знач. выставил в 0: ' + str(j) + ' ' + str(i) + ' запрос №: ' + n) except Exception as e: exc_type, exc_value, exc_traceback = sys.exc_info( ) err_str = 'error: ' + str(e) + ' (' + str( repr( traceback.format_exception( exc_type, exc_value, exc_traceback))) + ')' prnts( 'Олимп, матч:' + key_id + ' ошибка 1 при удалении старой котирофки: ' + str(err_str) + ' запрос №: ' + n) time.sleep(5) except Exception as e: exc_type, exc_value, exc_traceback = sys.exc_info() err_str = 'error: ' + str(e) + ' (' + str( repr( traceback.format_exception(exc_type, exc_value, exc_traceback))) + ')' prnts('Олимп, матч:' + key_id + ' ошибка 2 при удалении старой котирофки: ' + str(err_str) + ' запрос №: ' + n) time.sleep(5) return time_resp + (time.time() - time_start_proc) except OlimpMatchСompleted as e: if bets_olimp.get(key_id): bets_olimp.pop(key_id) raise OlimpMatchСompleted('4 ' + str(e)) except Exception as e: exc_type, exc_value, exc_traceback = sys.exc_info() prnts('Олимп, матч: ' + key_id + ' фатальная ошибка:' + str( repr(traceback.format_exception( exc_type, exc_value, exc_traceback))) + ' запрос №: ' + n + '\ndata:' + str(resp_temp)) # if bets_olimp.get(key_id): # bets_olimp.pop(key_id) raise ValueError(e)
def getMostSimilar(ID, articles): # What info do these articles contain? articles = sorted(articles, key = lambda x: getSimilarity(getWeights(ID), utils.get_vector(x)))
def userUpdate(ID, article): vect = np.array(utils.get_vector(article)) IDvect = np.array(getWeights(ID)) newVect = vect + IDvect updateClient(ID, newVect)
def get_suggested_responses(query, model_name, model, pro_vecs, con_vecs, texts_pro, texts_con, responses, lowercase_to_uppercase, num_responses=5, classify_responses=True, responses_to_response=False, is_indexed=False, **kwargs): pre_path = ""#"python/" # import time # start = time.time() config_path = pre_path + "kialo_config.json" most_similar, stances = [], [] distances_pro, distances_con, most_similar_pro, most_similar_con = [], [], [], [] query_text = query.lower() query_vec = [] if model_name == 'tfidf': texts_pro.append(query_text) texts_con.append(query_text) distances_pro, most_similar_pro = utils.get_tfidf_sim(texts_pro, num_responses, query_text) distances_con, most_similar_con = utils.get_tfidf_sim(texts_con, num_responses, query_text) else: if model_name == 'sbert': query_vec = utils.get_sbert_vec(model, query_text) else: query_vec = utils.get_vector(model, query_text) if model_name == 'sbert' and is_indexed: query_vec /= np.linalg.norm(query_vec, keepdims=True) distances_pro, most_similar_pro = faiss_index.search(pro_vecs, query_vec, texts_pro, num_responses) distances_con, most_similar_con = faiss_index.search(con_vecs, query_vec, texts_con, num_responses) else: if model_name == 'sbert' and False: #add check encoder check instead of false distances_pro, most_similar_pro = utils.get_sbert_mostsimilar_crossencoder(pro_vecs, query_text, query_vec, num_responses) distances_con, most_similar_con = utils.get_sbert_mostsimilar_crossencoder(con_vecs, query_text, query_vec, num_responses) print(distances_pro) else: distances_pro, most_similar_pro = utils.most_sim_cos(pro_vecs, query_vec, num_responses) distances_con, most_similar_con = utils.most_sim_cos(con_vecs, query_vec, num_responses) stances = ["pro"] * len(most_similar_pro) stances.extend(["con"] * len(most_similar_con)) most_similar = most_similar_pro most_similar.extend(most_similar_con) distances = distances_pro distances.extend(distances_con) if not classify_responses: distances, most_similar, stances = zip(*sorted(zip(distances, most_similar, stances), reverse=True)) most_similar = most_similar[:num_responses] stances = stances[:num_responses] if responses_to_response: stances = [] most_similar_response = [] for claim in most_similar: if claim in responses: for response in responses[claim]: r = response.lower() most_similar_response.append(r) if r in texts_pro: stances.append('pro') else: stances.append('con') if classify_responses: most_similar = [] temp_stances = [] pro_count, con_count = 0, 0 for i, claim in enumerate(most_similar_response): if stances[i] == 'pro' and pro_count < num_responses: most_similar.append(claim) pro_count += 1 temp_stances.append('pro') elif stances[i] == 'con' and con_count < num_responses: most_similar.append(claim) con_count += 1 temp_stances.append('con') stances = temp_stances else: most_similar = most_similar_response[:num_responses] stances = stances[:num_responses] #format return values return_array = [] for i, text in enumerate(most_similar): return_array.append({"text": lowercase_to_uppercase[text], "stance": stances[i]}) #format of returned value # { # "suggested_responses": [ # { # "text": text1, # "stance": stance1 # }, # { # "text": text2, # "stance": stance2 # } # ] # } return json.dumps({"suggested_responses": return_array})
def get_fonbet_info(match_id, factor_id, param, bet_type=None): dop_stat = dict() sc1 = None sc2 = None prnt('get_fonbet_info: match_id:{}, factor_id:{}, param:{}, bet_type:{}'. format(match_id, factor_id, param, bet_type)) header = copy.deepcopy(fb_headers) url = url_fonbet + "/line/eventView?eventId=" + str(match_id) + "&lang=ru" prnt('FORK_RECHECK.PY: get_fonbet_info rq: ' + url + ' ' + str(header), 'hide') resp = requests_retry_session().get(url, headers=header, timeout=10, verify=False) prnt('FORK_RECHECK.PY: get_fonbet_info rs: ' + str(resp.text), 'hide') res = resp.json() result = res.get('result') if result == "error": prnt('fonbet err : ' + str(res)) return 0, '0:0', round(resp.elapsed.total_seconds(), 2), {} for event in res.get("events"): if event.get('id') == match_id: sc = event.get('score', '0:0').replace('-', ':') period = 1 time_break_fonbet = False if re.match('\(\d+:\d+\)', event.get('scoreComment', '').replace('-', ':').replace(' ', '')) and \ str(event.get('timer', '')) == '45:00' and \ event.get('timerSeconds', 0) == 45.0: time_break_fonbet = True period = 2 elif re.match('\(\d+:\d+\)', event.get('scoreComment', '').replace('-', ':').replace(' ', '')) and \ event.get('timerSeconds', 0) / 60 > 45.0: period = 2 try: sc1 = int(sc.split(':')[0]) except: pass try: sc2 = int(sc.split(':')[1]) except: pass dop_stat = { 'cur_score': sc, 'sc1': sc1, 'sc2': sc2, '1st_half_score': event.get('scoreComment'), 'minutes': round(event.get('timerSeconds', 0) / 60) + (event.get('timerSeconds', 0) % 60 / 100), 'timer': event.get('timer'), 'period': period, 'timebreak': time_break_fonbet } if bet_type: dop_stat.update({'vector': get_vector(bet_type, sc1, sc2)}) for cat in event.get('subcategories'): for kof in cat.get('quotes'): if kof.get('factorId') == factor_id: if param: err_str = None if kof.get('pValue') != param: prnt( 'Изменилась тотал ставки, param не совпадает: ' + 'new: ' + str(kof.get('pValue')) + ', old: ' + str(param)) if bet_type: prnt('поиск нового id тотала: ' + bet_type) new_wager = get_new_bets_fonbet(match_id, proxies={}) new_wager = new_wager.get( str(match_id), {}).get('kofs', {}).get(bet_type) if new_wager: prnt('Тотал найден: ' + str(new_wager)) k = new_wager.get('value', 0) sc = new_wager.get('score', '0:0').replace( '-', ':') return k, sc, round( resp.elapsed.total_seconds(), 2), dop_stat else: err_str = 'Тотал не найден: ' + str( new_wager) else: err_str = 'Тип ставки, например 1ТМ(2.5) - не задан: bet_type:' + bet_type if err_str: prnt(err_str) raise BetIsLost(err_str) k = kof.get('value', 0) prnt('fonbet kof is blocked ' + str(kof.get('blocked', 'None'))) if kof.get('blocked'): prnt('fonbet kof is blocked ' + str(kof)) k = 0 prnt('fonbet score: ' + sc) dop_stat.update({'val': k}) prnt('FORK_RECHECK.PY: get_olimp_info end work', 'hide') return k, sc, round(resp.elapsed.total_seconds(), 2), dop_stat
def get_bets_fonbet(bets_fonbet, match_id, proxies_fonbet, proxy, time_out, pair_mathes, arr_fonbet_top_kofs, place): global VICTS, TTO, TTU, TT1O, TT1U, TT2O, TT2U, BASE_LINE, FORA global sport_list match_exists = False for pair_match in pair_mathes: if match_id in pair_match: match_exists = True if match_exists is False: err_str = 'Фонбет: матч ' + str( match_id ) + ' не найден в спике активных, поток get_bets_fonbet завершен.' raise FonbetMatchСompleted(err_str) key_id = str(match_id) try: resp, time_resp = get_match_fonbet(match_id, proxies_fonbet, proxy, time_out, pair_mathes) # if key_id == '18967969': # print(resp) time_start_proc = time.time() TT = [] for bet in [TTO, TTU, TT1O, TT1U, TT2O, TT2U, FORA]: TT.extend(bet) for event in resp.get("events"): if event.get('parentId') == 0: score = event.get('score', '0:0').replace('-', ':') sc1 = 0 sc2 = 0 try: scs = re.findall('[0-9]:[0-9]', score)[0] try: sc1 = int(scs.split(':')[0]) except Exception as e: prnts('err util_fonbet sc1: ' + str(match_id) + ' score=' + str(score) + ' ' + str(e)) try: sc2 = int(scs.split(':')[1]) except Exception as e: prnts('err util_fonbet sc2: ' + str(match_id) + ' score=' + str(score) + ' ' + str(e)) except Exception as e: prnts('err util_fonbet scs: ' + str(match_id) + ' score=' + str(score) + ' ' + str(e)) timer = event.get('timer', '00:00') minute = event.get('timerSeconds', 0) / 60 skId = event.get('skId') liga_id = event.get('sportId') skName = event.get('skName') minute_complite = if_exists(sport_list, 'fonbet', skId, 'min') if minute_complite: if minute >= (minute_complite - 2): err_str = 'Фонбет: матч, ' + skName + ' - ' + str( match_id) + ' завершен, т.к. ' + str( minute_complite - 2) + ' минут прошло.' raise FonbetMatchСompleted(err_str) sport_name = event.get('sportName') name = event.get('name') # print('name:' + str(name)) # if name == 'SKA-1946 – HK Riga': # import json # print(json.dumps(event, ensure_ascii=False)) priority = event.get('priority') score_1st = event.get('scoreComment', '').replace('-', ':') start_time = int(event.get('startTimeTimestamp', 0)) start_after_min = math.floor( (start_time - int(time.time())) / 60) # start_after_min = event.get('time') # if DEBUG: # prnts('key_id: {}, start_after_min_cal: {}, start_after_min:{}'.format(key_id, start_after_min_cal, start_after_min)) if place == 'pre': if start_after_min: if start_after_min <= 5: err_str = 'Фонбет: pre матч, ' + skName + ' - ' + str( match_id) + ' завершен, т.к. ' + str( start_after_min ) + ' минут до начала матча.' raise FonbetMatchСompleted(err_str) if not start_after_min: start_after_min = 0 if start_after_min <= -120: err_str = 'Фонбет: матч, ' + skName + ' - ' + str( match_id) + ' завершен, т.к. прошло ' + str( abs(start_after_min)) + ' минут от начала матча.' raise FonbetMatchСompleted(err_str) # place_in = event.get('place') if event.get('parentId' ) == 0 or 'st half' in name or 'nd half' in name: if event.get('parentId') == 0: try: bets_fonbet[key_id].update({ 'sport_id': skId, 'liga_id': liga_id, 'place': place, 'sport_name': skName, 'league': sport_name, 'name': name, 'priority': priority, 'score': score, 'score_1st': score_1st, 'time': timer, 'minute': minute, 'start_time': start_time, 'start_after_min': start_after_min, 'time_req': round(time.time()) }) except Exception as e: bets_fonbet[key_id] = { 'bk_name': 'fonbet', 'sport_id': skId, 'liga_id': liga_id, 'place': place, 'sport_name': skName, 'league': sport_name, 'name': name, 'priority': priority, 'score': score, 'score_1st': score_1st, 'time': timer, 'minute': minute, 'start_time': start_time, 'start_after_min': start_after_min, 'time_req': round(time.time()), # 'time_change_total': round(time.time()), # 'avg_change_total': [], 'kofs': {} } half = '' if 'st half' in name or 'nd half' in name: half = name.replace('st half', '').replace('nd half', '') for cat in event.get('subcategories', {}): cat_name = cat.get('name') cat_name_list = [ '1X2 (90 min)', '1X2', 'Goal - no goal', 'Total', 'Totals', 'Team Totals-1', 'Team Totals-2', 'Hcap' ] if place == 'pre': cat_name_list.append('By games') if cat_name in cat_name_list: for kof in cat.get('quotes'): factorId = str(kof.get('factorId')) pValue = kof.get('pValue', '') p = kof.get('p', '').replace('+', '') kof_is_block = kof.get('blocked', False) if kof_is_block: value = 0 else: value = kof.get('value', 0) for vct in VICTS: coef = half + str(vct[0]) if str(vct[1]) == factorId: kof_order = bets_fonbet[key_id].get( 'kofs', {}).get(coef, {}).get( 'hist', {}).get('order', []) time_change = bets_fonbet[key_id].get( 'kofs', {}).get(coef, {}).get('hist', {}).get( 'time_change', time.time()) avg_change = bets_fonbet[key_id].get( 'kofs', {}).get(coef, {}).get( 'hist', {}).get('avg_change', []) try: if value != kof_order[-1]: kof_order.append(value) avg_change.append(0) time_change = time.time() elif value == kof_order[-1]: avg_change[-1] = round( time.time() - time_change) except IndexError: # firs kof_order.append(value) avg_change.append(0) is_hot = False if int(factorId ) in arr_fonbet_top_kofs.get( key_id, []): is_hot = True is_base_line = False if int(factorId) in BASE_LINE: is_base_line = True bets_fonbet[key_id]['kofs'].update({ coef: { 'time_req': round(time.time()), 'event': event.get('id'), 'liga_id': liga_id, 'value': value, 'param': '', 'factor': factorId, 'base_line': is_base_line, 'score': score, 'vector': get_vector(coef, sc1, sc2), 'is_hot': is_hot, 'hist': { 'time_change': time_change, 'avg_change': avg_change, 'order': kof_order } } }) # if is_hot: # print(bets_fonbet[key_id]) for stake in TT: coef = half + str( stake[0].format(p)) # + num_team if str(stake[1]) == factorId: kof_order = bets_fonbet[key_id].get( 'kofs', {}).get(coef, {}).get( 'hist', {}).get('order', []) time_change = bets_fonbet[key_id].get( 'kofs', {}).get(coef, {}).get('hist', {}).get( 'time_change', time.time()) avg_change = bets_fonbet[key_id].get( 'kofs', {}).get(coef, {}).get( 'hist', {}).get('avg_change', []) try: if value != kof_order[-1]: kof_order.append(value) avg_change.append(0) time_change = time.time() elif value == kof_order[-1]: avg_change[-1] = round( time.time() - time_change) except IndexError: # firs kof_order.append(value) avg_change.append(0) is_hot = False if int(factorId ) in arr_fonbet_top_kofs.get( key_id, []): is_hot = True bets_fonbet[key_id]['kofs'].update({ coef: { 'time_req': round(time.time()), 'event': event.get('id'), 'liga_id': liga_id, 'value': value, 'param': pValue, 'factor': factorId, 'score': score, 'vector': get_vector(coef, sc1, sc2), 'is_hot': is_hot, 'hist': { 'time_change': time_change, 'avg_change': avg_change, 'order': kof_order } } }) # for val in bets_fonbet.get(key_id, {}).get('kofs', {}).values(): # time_change_kof = val.get('hist', {}).get('time_change') # time_change_tot = bets_fonbet.get(key_id, {}).get('time_change_total') # avg_change_total = bets_fonbet.get(key_id, {}).get('avg_change_total', []) # if round(time_change_tot) < round(time_change_kof): # avg_change_total.append(round(time_change_kof - time_change_tot)) # bets_fonbet[key_id].update({'time_change_total': time_change_kof}) # bets_fonbet[key_id].update({'avg_change_total': avg_change_total}) try: for i in list(bets_fonbet): if str(i) == key_id: for j in list(bets_fonbet[i].get('kofs', {})): hide_time = 4 if bets_fonbet[i].get('place') == 'pre': hide_time = TIMEOUT_PRE_MATCH + hide_time if round( float(time.time() - float(bets_fonbet[i]['kofs'][j].get( 'time_req', 0))) ) > hide_time and bets_fonbet[i]['kofs'][j].get( 'value', 0) > 0: try: bets_fonbet[i]['kofs'][j]['value'] = 0 if DEBUG: prnts( 'Фонбет, данные по котировке из БК не получены более ' + str(hide_time) + ' сек., знач. выставил в 0: ' + str(j) + ' ' + str(i)) except Exception as e: exc_type, exc_value, exc_traceback = sys.exc_info( ) err_str = 'error: ' + str(e) + ' (' + str( repr( traceback.format_exception( exc_type, exc_value, exc_traceback))) + ')' prnts( 'Фонбет, ошибка 1 при удалении старой котирофки: ' + str(err_str)) time.sleep(5) except Exception as e: exc_type, exc_value, exc_traceback = sys.exc_info() err_str = 'error: ' + str(e) + ' (' + str( repr( traceback.format_exception(exc_type, exc_value, exc_traceback))) + ')' prnts('Фонбет, ошибка 2 при удалении старой котирофки: ' + str(err_str)) time.sleep(5) return time_resp + (time.time() - time_start_proc) except FonbetMatchСompleted as e: if bets_fonbet.get(key_id): bets_fonbet.pop(key_id) raise FonbetMatchСompleted('4 ' + str(e)) except Exception as e: prnts(e) # if bets_fonbet.get(key_id): # bets_fonbet.pop(key_id) raise ValueError(e)