()
return entity_prob
统计每个通过上述匹配方式，匹配到的mention出现的次数，以及被链接的次数，计算
    匹配链接比=匹配次数/链接次数 按照匹配链接比，计算排序前15000实体 并且 匹配次数>15
    计算实体链接概率得分
    :return:
统计每个通过上述匹配方式，匹配到的mention出现的次数，以及被链接的次数，计算
    匹配链接比=匹配次数/链接次数 按照匹配链接比，计算排序前15000实体 并且 匹配次数>15
    计算实体链接概率得分
    :return:
统计每个通过上述匹配方式，匹配到的mention出现的次数，以及被链接的次数，计算 匹配链接比 = 匹配次数 / 链接次数 按照匹配链接比，计算排序前15000实体 并且 匹配次数 > 15 计算实体链接概率得分 : return :
def entity_link_prob():
    '''
    统计每个通过上述匹配方式，匹配到的mention出现的次数，以及被链接的次数，计算
    匹配链接比=匹配次数/链接次数 按照匹配链接比，计算排序前15000实体 并且 匹配次数>15
    计算实体链接概率得分
    :return:
    '''
    kb_en = pd.read_pickle('data/entity_id.pkl')
    entity_dict={}
    for en in kb_en:
        entity_dict[en]={'link_num':0.1,'match_num':0.1}
    trie_obj = Trie()
    for en in kb_en:
        if len(en)>1:
            trie_obj.insert(en)
    with open('original_data/train.json') as f:
        for i,line in enumerate(f):
            temDict = json.loads(line)
            text = temDict['text']
            mention_data = temDict['mention_data']
            match_list=trie_obj.search_entity(text)
            for men in mention_data:
                if men['mention'] in entity_dict:
                    entity_dict[men['mention']]['link_num']+=1
            for en in match_list:
                if en[0] in entity_dict:
                    entity_dict[en[0]]['match_num']+=1

    entity_num={}
    for en in entity_dict:
        entity_num[en]=entity_dict[en]['match_num']/entity_dict[en]['link_num']
    en_sorted = sorted(entity_num.items(), key=lambda item: item[1],reverse=True)
    entity_prob={}
    for i in en_sorted[:15000]:
        if entity_dict[i[0]]['match_num']>15:
            # print(i,entity_dict[i[0]]['match_num'],sigmoid(i[1]))
            entity_prob[i[0]] = fun_prob(i[1])
        # print(i)
    return entity_prob
def entity_link_prob ( ) : kb_en = pd . read_pickle ( 'data/entity_id.pkl' ) entity_dict = { } for en in kb_en : entity_dict [ en ] = { 'link_num' : 0.1 , 'match_num' : 0.1 } trie_obj = Trie ( ) for en in kb_en : if len ( en ) > 1 : trie_obj . insert ( en ) with open ( 'original_data/train.json' ) as f : for i , line in enumerate ( f ) : temDict = json . loads ( line ) text = temDict [ 'text' ] mention_data = temDict [ 'mention_data' ] match_list = trie_obj . search_entity ( text ) for men in mention_data : if men [ 'mention' ] in entity_dict : entity_dict [ men [ 'mention' ] ] [ 'link_num' ] += 1 for en in match_list : if en [ 0 ] in entity_dict : entity_dict [ en [ 0 ] ] [ 'match_num' ] += 1 entity_num = { } for en in entity_dict : entity_num [ en ] = entity_dict [ en ] [ 'match_num' ] / entity_dict [ en ] [ 'link_num' ] en_sorted = sorted ( entity_num . items ( ) , key = lambda item : item [ 1 ] , reverse = True ) entity_prob = { } for i in en_sorted [ : 15000 ] : if entity_dict [ i [ 0 ] ] [ 'match_num' ] > 15 : # print(i,entity_dict[i[0]]['match_num'],sigmoid(i[1])) entity_prob [ i [ 0 ] ] = fun_prob ( i [ 1 ] ) # print(i) return entity_prob