【NLG】(四)文本生成评价指标—— diversity原理及代码示例

前奏:

【NLG】(一)文本生成评价指标——BLEU原理及代码示例

【NLG】(二)文本生成评价指标—— METEOR原理及代码示例

【NLG】(三)文本生成评价指标—— ENTROPY原理及代码示例


1.diversity原理

衡量生成的文本中,词的丰富度。

2.优缺点

优点:

  • 衡量了文本词的丰富,即:重复词越少,文本更丰富,该指标值越大

3.如何算diversity

输入数据:

字与字分开的文本。

给一句话的每个字之间插入一个空格,比如:

输入为:["吃饭了吗?", "没有"]

输出:["吃 饭 了 吗 ?", "没  有"]

def insert_black(list_value):
    len_text = len(list_value)
    res_list = []
    for i in range(len_text):
        gen_value = gen_list[i]
        list_split = ''.join(["%s " % j for j in gen_value])
        res_list.append(list_split)
    return res_list

代码:

def calc_diversity(predicts):
    '''
    生成结果加入空格
    '''
    tokens = [0.0, 0.0]
    types = [defaultdict(int), defaultdict(int)]
    for gg in predicts:
        g = gg.rstrip().split()
        for n in range(2):
            for idx in range(len(g)-n):
                ngram = ' '.join(g[idx:idx+n+1])
                types[n][ngram] = 1
                tokens[n] += 1
    div1 = len(types[0].keys())/tokens[0]
    div2 = len(types[1].keys())/tokens[1]
    return [div1, div2]

if __name__ == '__main__':
    predicts = ['你 说 什 么 ?', '你 说 的 是 啥 ?']
    etp_score, div_score = entropy(predicts)

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值