Example #1
0
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})
Example #2
0
File: ftree.py Project: gaosh13/esl
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})
Example #3
0
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})
Example #4
0
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
Example #5
0
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
Example #6
0
File: qtree.py Project: gaosh13/esl
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
Example #7
0
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})
Example #8
0
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})