def addResult(arg, q): amod = [ qm if i in q['pos'] else '<a pos=%d href="#">' % i + qm + '</a>' for i, qm in enumerate(q['mod']) ] title = ' '.join(q['mod']) if arg['type'] == 0: (retId, flag) = addCluster( arg['senmap'], arg['senlist'], title, { 'display': ' '.join(amod), 'pos': q['pos'], 'other': '_other_' in q['mod'] }) if flag: markSent = cleaned_sentence(arg['sent'], arg['keypos']) arg['strlist'].append({'sentence': markSent, 'sen': retId}) elif arg['type'] == 1: if title == arg['title']: title = ' '.join(q['word']) (retId, flag) = addCluster(arg['senmap'], arg['senlist'], title, { 'display': title, 'pos': [], 'other': '_other_' in q['word'] }) if flag: markSent = cleaned_sentence(arg['sent'], arg['keypos']) arg['strlist'].append({'sentence': markSent, 'sen': retId})
def addResult(arg, q): amod = [qm if i in q['pos'] else '<a pos=%d href="#">' % i + qm + '</a>' for i, qm in enumerate(q['mod'])] title = ' '.join(q['mod']) if arg['type'] == 0: (retId, flag) = addCluster(arg['senmap'], arg['senlist'], title, {'display': ' '.join(amod), 'pos': q['pos'], 'other': '_other_' in q['mod']}) if flag: markSent = cleaned_sentence(arg['sent'], arg['keypos']) arg['strlist'].append({'sentence': markSent, 'sen': retId}) elif arg['type'] == 1: if title == arg['title']: title = ' '.join(q['word']) (retId, flag) = addCluster(arg['senmap'], arg['senlist'], title, {'display': title, 'pos': [], 'other': '_other_' in q['word']}) if flag: markSent = cleaned_sentence(arg['sent'], arg['keypos']) arg['strlist'].append({'sentence': markSent, 'sen': retId})
def addResult(arg, res, pos): qpos = [i for i, qm in enumerate(res) if not qm.isupper()] amod = [qm if i in qpos else '<a pos=%d href="#">' % i + qm + '</a>' for i, qm in enumerate(res)] title = ' '.join(res) (retId, flag) = addCluster(arg['senmap'], arg['senlist'], title, {'display': ' '.join(amod), 'pos': qpos, 'other': '_other_' in res}) if flag: pos = [i for i in pos if 0 <= i and i < len(arg['sent'])] markSent = cleaned_sentence(arg['sent'], pos) arg['strlist'].append({'sentence': markSent, 'sen': retId})
def get_qtree_db(tree, tokens, key, ctype): nkey = [] for k in key: if not is_upper(tokens[k]): nkey.append(k) if ctype == 2: # keys = [stemmer_value(tokens[k]) for k in nkey] keys = [tokens[k]['lemma'] for k in nkey] keys.sort(key=lambda word: -len(word)) # rs = cl.find({'tokens.s': {'$all': keys}}) rs = cl.find({'tokens.l': {'$all': keys}}) else: # keys = [{'$elemMatch': {'s': stemmer_value(tokens[k]), 'q': getq(tokens[k]['pos'])}} for k in nkey] # keys.sort(key=lambda word: -len(word['$elemMatch']['s'])) # rs = cl.find({'tokens': {'$all': keys}}) keys = [{ '$elemMatch': { 'l': tokens[k]['lemma'], 'q': getq(tokens[k]['pos']) } } for k in nkey] keys.sort(key=lambda word: -len(word['$elemMatch']['l'])) rs = cl.find({'tokens': {'$all': keys}}) # retJson = {'result': [], 'desc': {'sen': []}} # senmap = {} # senlist = retJson['desc']['sen'] retJson = {'result': [], 'desc': {'sen': []}} senmap2 = {} senlist2 = retJson['desc']['sen'] strlist = retJson['result'] for sen in rs: sent = sen['tree0'] tk = sen['tokens'] qtree = transfer_Node_i(sent) tp = check_find(tree, key, tokens, qtree, tk, ctype) if tp: # senId = addCluster(senmap, senlist, tp.resultSent) (senId2, flag1) = addCluster(senmap2, senlist2, tp.resultSent2, {'len': tp.cost}) if flag1: markSent = cleaned_sentence([w['t'] for w in tk], tp.qkey) resultDict = {'sentence': markSent, 'sen': senId2} strlist.append(resultDict) senlist2.sort(key=lambda word: -word['count'] * 100 + word['len'] if word['title'] != '_others_' else 0) result_part(retJson) return retJson
def get_query_db2(tree, msg, tokens, keys): keys.sort(key=lambda word: -len(word['$elemMatch']['l'])) rs = cl.find({'tokens': {'$all': keys}}) retJson = {'result': [], 'desc': {}} strlist = retJson['result'] cnt = 0 for sen in rs: sent = sen['tree0'] tk = sen['tokens'] tp = check_find(msg, tokens, sent, tk) if tp != -1: tplist = get_pos_list(msg, sent, tp) markSent = cleaned_sentence([w['t'] for w in tk], tplist) strlist.append({'sentence': markSent}) #print sen['sentence'], tplist cnt = cnt + 1 return retJson
def get_qtree_db(tree, tokens, key, ctype): nkey = [] for k in key: if not is_upper(tokens[k]): nkey.append(k) if ctype == 2: # keys = [stemmer_value(tokens[k]) for k in nkey] keys = [tokens[k]['lemma'] for k in nkey] keys.sort(key=lambda word: -len(word)) # rs = cl.find({'tokens.s': {'$all': keys}}) rs = cl.find({'tokens.l': {'$all': keys}}) else: # keys = [{'$elemMatch': {'s': stemmer_value(tokens[k]), 'q': getq(tokens[k]['pos'])}} for k in nkey] # keys.sort(key=lambda word: -len(word['$elemMatch']['s'])) # rs = cl.find({'tokens': {'$all': keys}}) keys = [{'$elemMatch': {'l': tokens[k]['lemma'], 'q': getq(tokens[k]['pos'])}} for k in nkey] keys.sort(key=lambda word: -len(word['$elemMatch']['l'])) rs = cl.find({'tokens': {'$all': keys}}) # retJson = {'result': [], 'desc': {'sen': []}} # senmap = {} # senlist = retJson['desc']['sen'] retJson = {'result': [], 'desc': {'sen': []}} senmap2 = {} senlist2 = retJson['desc']['sen'] strlist = retJson['result'] for sen in rs: sent = sen['tree0'] tk = sen['tokens'] qtree = transfer_Node_i(sent) tp = check_find(tree, key, tokens, qtree, tk, ctype) if tp: # senId = addCluster(senmap, senlist, tp.resultSent) (senId2, flag1) = addCluster(senmap2, senlist2, tp.resultSent2, {'len': tp.cost}) if flag1: markSent = cleaned_sentence([w['t'] for w in tk], tp.qkey) resultDict = {'sentence': markSent, 'sen': senId2} strlist.append(resultDict) senlist2.sort(key=lambda word: -word['count'] * 100 + word['len'] if word['title'] != '_others_' else 0) result_part(retJson) return retJson
def addResult(arg, title): (retId, flag) = addCluster(arg['senmap'], arg['senlist'], title) # print arg['senmap'], title if flag: markSent = cleaned_sentence(arg['sent'], [arg['keypos']]) arg['strlist'].append({'sentence': markSent, 'sen': retId})