当前位置:   article > 正文

大语言模型评估指标BLEU,ROUGE,PPL_ppl大语言模型

ppl大语言模型
  1. # 第一步安装nltk的包-->pip install nltk
  2. from nltk.translate.bleu_score import sentence_bleu
  3. def cumulative_bleu(reference, candidate):
  4. bleu_1_gram = sentence_bleu(reference, candidate, weights=(1, 0, 0, 0))
  5. bleu_2_gram = sentence_bleu(reference, candidate, weights=(0.5, 0.5, 0, 0))
  6. bleu_3_gram = sentence_bleu(reference, candidate, weights=(0.33, 0.33, 0.33, 0))
  7. bleu_4_gram = sentence_bleu(reference, candidate, weights=(0.25, 0.25, 0.25, 0.25))
  8. # print('bleu 1-gram: %f' % bleu_1_gram)
  9. # print('bleu 2-gram: %f' % bleu_2_gram)
  10. # print('bleu 3-gram: %f' % bleu_3_gram)
  11. # print('bleu 4-gram: %f' % bleu_4_gram)
  12. return bleu_1_gram, bleu_2_gram, bleu_3_gram, bleu_4_gram
  13. # return bleu_1_gram, bleu_2_gram
  14. # 生成文本
  15. candidate_text = ["This", "is", "some", "generated", "text"]
  16. # 参考文本列表
  17. reference_texts = [["This", "is", "a", "reference", "text"],
  18. ["This", "is", "another", "reference", "text"]]
  19. # 计算 Bleu 指标
  20. c_bleu = cumulative_bleu(reference_texts, candidate_text)
  21. # 打印结果
  22. print("The Bleu score is:", c_bleu)

  1. # 第一步:安装rouge-->pip install rouge
  2. from rouge import Rouge
  3. # 生成文本
  4. generated_text = "This is some generated text."
  5. # 参考文本列表
  6. reference_texts = ["This is a reference text.", "This is another generated reference text."]
  7. # 计算 ROUGE 指标
  8. rouge = Rouge()
  9. scores = rouge.get_scores(generated_text, reference_texts[1])
  10. print(f'scores-->{scores}')
  11. # 打印结果
  12. print("ROUGE-1 precision:", scores[0]["rouge-1"]["p"])
  13. print("ROUGE-1 recall:", scores[0]["rouge-1"]["r"])
  14. print("ROUGE-1 F1 score:", scores[0]["rouge-1"]["f"])
  15. # ROUGE-1 precision: 0.8
  16. # ROUGE-1 recall: 0.6666666666666666
  17. # ROUGE-1 F1 score: 0.7272727223140496

  1. import math
  2. # 定义语料库
  3. sentences = [
  4. ['I', 'have', 'a', 'pen'],
  5. ['He', 'has', 'a', 'book'],
  6. ['She', 'has', 'a', 'cat']
  7. ]
  8. # 定义语言模型
  9. unigram = {
  10. 'I': 1/12,
  11. 'have': 1/12,
  12. 'a': 3/12,
  13. 'pen': 1/12,
  14. 'He': 1/12,
  15. 'has': 2/12,
  16. 'book': 1/12,
  17. 'She': 1/12,
  18. 'cat': 1/12
  19. }
  20. # 计算困惑度
  21. perplexity = 0
  22. for sentence in sentences:
  23. print(sentence)
  24. sentence_prob = 1
  25. for word in sentence:
  26. print(f'word-->{word}')
  27. sentence_prob *= unigram[word]
  28. print(sentence_prob)
  29. print('*'*80)
  30. print(sentence_prob)
  31. sentence_perplexity = 1/sentence_prob
  32. print(f'sentence_perplexity--》{sentence_perplexity}')
  33. perplexity += math.log(sentence_perplexity, 2) #以2为底
  34. print(f'perplexity-->{perplexity}')
  35. print('----' * 80)
  36. perplexity = 2 ** (-perplexity/len(sentences))
  37. print('困惑度为:', perplexity)
  38. # 困惑度为: 0.000325

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/865905
推荐阅读
  

闽ICP备14008679号