def updateLabels(): """This functions is to be run after a new wordnet is uploaded so that concept labels for that language are created and visible as concept names. """ sfreq=dd(int) f = query_omw("""SELECT id FROM smt WHERE tag='freq'""") if f: for r in query_omw("""SELECT s_id, sml_id FROM sm WHERE smt_id=?""", str(f[0]['id'])): sfreq[r['s_id']]=r['sml_id'] senses =dd(lambda: dd(list)) #senses[ss_id][lang_id]=[(ls_id, lemma, freq), ...] forms = dd(lambda: dd(int)) #forms[lang][word] = freq langs=set() eng_id=1 ### we know this :-) for r in query_omw("""SELECT s_id, ss_id, lemma, lang_id FROM (SELECT w_id, canon, ss_id, s_id FROM (SELECT id as s_id, ss_id, w_id FROM s) JOIN w ON w_id = w.id ) JOIN f ON canon = f.id"""): senses[r['ss_id']][r['lang_id']].append((r['s_id'], r['lemma'], sfreq[r['s_id']])) forms[r['lang_id']][r['lemma']] += 1 langs.add(r['lang_id']) for ss in senses: for l in senses[ss]: senses[ss][l].sort(key=lambda x: (-x[2], ### sense freq (freq is good) forms[l][x[1]], ### uniqueness (freq is bad) len(x[1]), ### length (short is good) x[1])) ### lemma (so it is the same) # make the labels label = dd(lambda: dd(str)) lgs=sorted(langs) values=list() for ss in senses: for l in lgs: if senses[ss][l]: label[ss][l]=senses[ss][l][0][1] else: for lx in lgs: ### start with eng and go through till you find one if senses[ss][lx]: label[ss][l]=senses[ss][lx][0][1] break else: label[ss][l]="?????" values.append((ss, l, label[ss][l])) # write the labels (delete old ones first) write_omw("""DELETE FROM label""") blk_write_omw("""INSERT INTO label(ss_id, lang_id, label, u) VALUES (?,?,?,"omw")""", values) return True
def blk_insert_omw_sm(tuple_list): return blk_write_omw("""INSERT INTO sm (id, s_id, smt_id, sml_id, u) VALUES (?,?,?,?,?)""", tuple_list)
def blk_insert_omw_sm_src(tuple_list): return blk_write_omw("""INSERT INTO sm_src (sm_id, src_id, conf, u) VALUES (?,?,?,?)""", tuple_list)
def blk_insert_omw_wf_link(tuple_list): return blk_write_omw("""INSERT INTO wf_link (w_id, f_id, src_id, conf, u) VALUES (?,?,?,?,?)""", tuple_list)
def blk_insert_omw_s(tuple_list): return blk_write_omw("""INSERT INTO s (id, ss_id, w_id, u) VALUES (?,?,?,?)""", tuple_list)
def blk_insert_omw_f(tuple_list): return blk_write_omw("""INSERT INTO f (id, lang_id, pos_id, lemma, u) VALUES (?,?,?,?,?)""", tuple_list)
def blk_insert_omw_w(tuple_list): return blk_write_omw("""INSERT INTO w (id, canon, u) VALUES (?,?,?)""", tuple_list)
def blk_insert_omw_ssslink(tuple_list): return blk_write_omw("""INSERT INTO ssslink (id, s_id, srel_id, ss_id, u) VALUES (?,?,?,?,?)""", tuple_list)
def blk_insert_omw_ssslink_src(tuple_list): return blk_write_omw("""INSERT INTO ssslink_src (ssslink_id, src_id, conf, lang_id, u) VALUES (?,?,?,?,?)""", tuple_list)
def blk_insert_omw_ssexe(tuple_list): return blk_write_omw("""INSERT INTO ssexe (id, ss_id, lang_id, ssexe, u) VALUES (?,?,?,?,?)""", tuple_list)
def blk_insert_omw_def(tuple_list): return blk_write_omw("""INSERT INTO def (id, ss_id, lang_id, def, u) VALUES (?, ?,?,?,?)""", tuple_list)
def blk_insert_omw_ss(tuple_list): """ tuple_list = [(id, ili_id, pos_id, u), ...]""" return blk_write_omw("""INSERT INTO ss (id, ili_id, pos_id, u) VALUES (?,?,?,?)""", tuple_list)
def blk_insert_into_ili(tuple_list): return blk_write_omw("""INSERT INTO ili (id, kind_id, def, status_id, origin_src_id, src_key, u) VALUES (?,?,?,?,?,?,?)""", tuple_list)
def blk_insert_src_meta(tuple_list): """ tupple_list must of of format [(src_id, attr, val, u), ...] """ return blk_write_omw("""INSERT INTO src_meta (src_id, attr, val, u) VALUES (?,?,?,?)""", tuple_list)