python通过rouge-chinese库实现中文Rouge评价指标(超简单)

这篇具有很好参考价值的文章主要介绍了python通过rouge-chinese库实现中文Rouge评价指标(超简单)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Rouge-Chinese库 (Python)

专用于计算中文rouge指标的python库 (paper)

完整代码请见github仓库:https://github.com/Isaac-JL-Chen/rouge_chinese,欢迎star!

与英文rouge库的不同点

rouge-chinese库基于rouge库,针对中文NLP任务做出了改进。使用原始的rouge库计算中文的rouge score会遇到一些问题,例如,会产生栈溢出以及占据过大内存的问题(长文章甚至会占据数十GB),不支持对中文文章的分句,以及使用union rouge score近似rouge score,导致结果不准确。新的rouge-chinese库不仅从根源上解决了这些问题,优化了算法,rouge-chinese库还舍弃了默认的rouge score近似指标union rouge score,转而通过优化后的算法提供用户最原始、准确和官方的rouge score指标。

  1. 改进了中文的分句机制。原始的rouge库只根据’.'进行分句。rouge-chinese库除了英文标点外,还对中文的常见分句标点(。!?…)进行了囊括。
  2. 优化了rouge-L score计算中的内存占用。rouge-chinese库计算rouge-L score时不再需要生成最长子序列,就可以直接计算出最长子序列的长度,并得出最终的rouge-L score。最长子序列的生成是算法中内存消耗最大的一块,由于其中含有递归算法,他会占用大量的栈,尤其是在遇到长文章时,容易导致内存溢出或栈溢出的问题。rouge-chinese库成功的绕过了这一步骤。
  3. 更准确和官方的rouge scores。由于先前的rouge库算法存在内存占用过大的问题,因此他们使用分句后计算union rouge score的方法来近似实际的rouge score,但这会带来一定的误差,部分情况误差较大。由于我们成功解决了内存占用过大的问题,新算法支持计算出最准确,最原始和最官方的rouge score。

简单使用教程

安装方法

pip install rouge-chinese

or:

git clone https://github.com/Isaac-JL-Chen/rouge_chinese.git
cd rouge_chinese
python setup.py install
# or
pip install -U .

当做python库使用

为一对hypothesis和reference计算rouge score (最常用)
from rouge_chinese import Rouge
import jieba # you can use any other word cutting library

hypothesis = "###刚刚发声,A股这种情况十分罕见!大聪明逆市抄底330亿,一篇研报引爆全球,市场逻辑生变?"
hypothesis = ' '.join(jieba.cut(hypothesis)) 

reference = "刚刚过去的这个月,美股总市值暴跌了将近6万亿美元(折合人民币超过40万亿),这背后的原因可能不仅仅是加息这么简单。最近瑞士信贷知名分析师Zoltan Polzsar撰写了一篇极其重要的文章,详细分析了现有世界秩序的崩坏本质以及美国和西方将要采取的应对策略。在该文中,Zoltan Polzsar直指美国通胀的本质和其长期性。同期,A股市场亦出现了大幅杀跌的情况。"
reference = ' '.join(jieba.cut(reference))

rouge = Rouge()
scores = rouge.get_scores(hypothesis, reference)

输出:

[
  {
    "rouge-1": {
      "f": 0.4786324739396596,
      "p": 0.6363636363636364,
      "r": 0.3835616438356164
    },
    "rouge-2": {
      "f": 0.2608695605353498,
      "p": 0.3488372093023256,
      "r": 0.20833333333333334
    },
    "rouge-l": {
      "f": 0.44705881864636676,
      "p": 0.5277777777777778,
      "r": 0.3877551020408163
    }
  }
]

注意: “f” 表示 f1_score, “p” 表示 precision, “r” 表示 recall.

为多对hypothesis和reference计算rouge score
import json
from rouge_chinese import Rouge

# Load some sentences
with open('./tests/data.json') as f:
  data = json.load(f)

hyps, refs = map(list, zip(*[[d['hyp'], d['ref']] for d in data]))
rouge = Rouge()
scores = rouge.get_scores(hyps, refs)
# or
scores = rouge.get_scores(hyps, refs, avg=True)

输出 (avg=False): a list of n dicts:

[{"rouge-1": {"f": _, "p": _, "r": _}, "rouge-2" : { .. }, "rouge-l": { ... }}]

输出 (avg=True): a single dict with average values:

{"rouge-1": {"f": _, "p": _, "r": _}, "rouge-2" : { ..     }, "rouge-l": { ... }}
计算两个文件的rouge scores (一行一行计算)

对两个有相同行数 (n) 的文件 hyp_path, ref_path,计算两个文件对应两行的n个rouge scores或者整个文件平均的rouge scores。

from rouge_chinese import FilesRouge

files_rouge = FilesRouge()
scores = files_rouge.get_scores(hyp_path, ref_path)
# or
scores = files_rouge.get_scores(hyp_path, ref_path, avg=True)

通过shell使用rouge-chinese (JSON 输出)

$rouge -h
usage: rouge_chinese [-h] [-f] [-a] hypothesis reference

Rouge Metric Calculator

positional arguments:
  hypothesis  Text of file path
  reference   Text or file path

optional arguments:
  -h, --help  show this help message and exit
  -f, --file  File mode
  -a, --avg   Average mode

e.g.

# Single Sentence
rouge_chinese "### 刚刚 发声 , A股 这种 情况 十分 罕见 ! 大 聪明 逆市 抄底 330 亿 , 一篇 研报 引爆 全球 , 市场 逻辑 生变 ?" \
      "刚刚 过去 的 这个 月 , 美股 总 市值 暴跌 了 将近 6 万亿美元 ( 折合 人民币 超过 40 万亿 ) , 这 背后 的 原因 可能 不仅仅 是 加息 这么 简单 。 最近 瑞士 信贷 知名 分析师 Zoltan   Polzsar 撰写 了 一篇 极其重要 的 文章 , 详细分析 了 现有 世界秩序 的 崩坏 本质 以及 美国 和 西方 将要 采取 的 应对 策略 。 在 该文 中 , Zoltan   Polzsar 直指 美国 通胀 的 本质 和 其 长期性 。 同期 , A股 市场 亦 出现 了 大幅 杀跌 的 情况 。"

# Scoring using two files (line by line)
rouge_chinese -f ./tests/hyp.txt ./ref.txt

# Avg scoring - 2 files
rouge_chinese -f ./tests/hyp.txt ./ref.txt --avg

完整代码请见github仓库:https://github.com/Isaac-JL-Chen/rouge_chinese,欢迎star!文章来源地址https://www.toymoban.com/news/detail-603670.html

到了这里,关于python通过rouge-chinese库实现中文Rouge评价指标(超简单)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【AIGC】10、Chinese CLIP | 专为中文图文匹配设计

    【AIGC】10、Chinese CLIP | 专为中文图文匹配设计

    论文:Chinese CLIP: Contrastive Vision-Language Pretraining in Chinese 代码:https://github.com/OFA-Sys/Chinese-CLIP 出处:阿里达摩院 时间:2022.11 贡献: 提出了 Chinese CLIP,是经过在大尺度中文图像-文本对儿的两阶段预训练 CLIP 的成功极大地促进了对比学习在视觉-语言模型预训练上的研究和应用

    2024年02月13日
    浏览(13)
  • 【多模态】4、Chinese CLIP | 专为中文图文匹配设计

    【多模态】4、Chinese CLIP | 专为中文图文匹配设计

    论文:Chinese CLIP: Contrastive Vision-Language Pretraining in Chinese 代码:https://github.com/OFA-Sys/Chinese-CLIP 出处:阿里达摩院 时间:2022.11 贡献: 提出了 Chinese CLIP,是经过在大尺度中文图像-文本对儿的两阶段预训练 CLIP 的成功极大地促进了对比学习在视觉-语言模型预训练上的研究和应用

    2024年02月16日
    浏览(12)
  • 中文版LLaMA:Chinese-LLaMA-Alpaca

    GitHub:GitHub - ymcui/Chinese-LLaMA-Alpaca: 中文LLaMAAlpaca大语言模型+本地CPU/GPU训练部署 (Chinese LLaMA Alpaca LLMs) 以ChatGPT、GPT-4等为代表的大语言模型(Large Language Model, LLM)掀起了新一轮自然语言处理领域的研究浪潮,展现出了类通用人工智能(AGI)的能力,受到业界广泛关注。然而,

    2024年02月12日
    浏览(11)
  • chinese-stable-diffusion中文场景文生图prompt测评集合

    我在git上新建了一个仓库,主要是总结一波了chainese-stable-diffusion的模型算法,非常欢迎关注:  GitHub - leeguandong/Awesome-Chinese-Stable-Diffusion: 中文文生图stable diffsion模型集合 中文文生图stable diffsion模型集合. Contribute to leeguandong/Awesome-Chinese-Stable-Diffusion development by creating an accou

    2024年02月04日
    浏览(11)
  • 中文大模型 Chinese-LLaMA-Alpaca-2 开源且可以商用

    中文大模型 Chinese-LLaMA-Alpaca-2 开源且可以商用

    “  Meta 开源 LLAMA2 后,国内出现了不少以此为基座模型训练的中文模型,这次我们来看看其中一个不错的中文模型:Chinese-LLaMA-Alpaca-2 。 ” 01 — 目前在开源大模型中,比较有名的是Meta的LLAMA模型系列和清华的ChatGLM模型。 特别是在中文领域上,ChatGLM模型经过中文问答和对

    2024年02月06日
    浏览(12)
  • Benchmarking Chinese Text Recognition: Datasets, Baselines| OCR 中文数据集【论文翻译】

    Benchmarking Chinese Text Recognition: Datasets, Baselines| OCR 中文数据集【论文翻译】

    https://arxiv.org/pdf/2112.15093.pdf https://github.com/FudanVI/benchmarking-chinese-text-recognition 深度学习蓬勃发展的局面见证了近年来文本识别领域的迅速发展。然而,现有的文本识别方法主要针对英文文本。作为另一种广泛使用的语言,中文文本识别在各个领域都有广泛的应用市场。根据我

    2024年02月10日
    浏览(7)
  • 多模态表征—CLIP及中文版Chinese-CLIP:理论讲解、代码微调与论文阅读

    多模态表征—CLIP及中文版Chinese-CLIP:理论讲解、代码微调与论文阅读

    我之前一直在使用CLIP/Chinese-CLIP,但并未进行过系统的疏导。这次正好可以详细解释一下。相比于CLIP模型,Chinese-CLIP更适合我们的应用和微调,因为原始的CLIP模型只支持英文,对于我们的中文应用来说不够友好。Chinese-CLIP很好地弥补了这方面的不足,它使用了大量的中文-文

    2024年03月15日
    浏览(12)
  • 【个人笔记本】本地化部署详细流程 LLaMA中文模型:Chinese-LLaMA-Alpaca-2

    不推荐小白,环境配置比较复杂 下载原始模型:Chinese-LLaMA-Alpaca-2 linux部署llamacpp环境 使用llamacpp将Chinese-LLaMA-Alpaca-2模型转换为gguf模型 windows部署Text generation web UI 环境 使用Text generation web UI 加载模型并进行对话 笔记本环境: 操作系统:win11 CPU:AMD R7535HS GPU:笔记本4060显卡

    2024年02月08日
    浏览(17)
  • LLM-LLaMA中文衍生模型:Chinese-LLaMA-Alpaca【扩充词表、Lora部分参数预训练、微调】

    GitHub:GitHub - ymcui/Chinese-LLaMA-Alpaca: 中文LLaMAAlpaca大语言模型+本地CPU/GPU训练部署 (Chinese LLaMA Alpaca LLMs) 中文LLaMA模型 中文LLaMA模型在原版的基础上扩充了中文词表,使用了中文通用纯文本数据进行二次预训练。 模型名称 训练数据 重构模型[1] 大小[2] LoRA下载[3] Chinese-LLaMA-7B 通用

    2024年02月15日
    浏览(14)
  • 【AI实战】从零开始搭建中文 LLaMA-33B 语言模型 Chinese-LLaMA-Alpaca-33B

    【AI实战】从零开始搭建中文 LLaMA-33B 语言模型 Chinese-LLaMA-Alpaca-33B

    2023年2月25日消息,Meta 推出了一种针对研究社区的基于人工智能 (AI) 的新型大型语言模型,与微软、谷歌等一众受到 ChatGPT 刺激的公司一同加入人工智能竞赛。 Meta 的 LLaMA 是“大型语言模型 Meta AI” (Large Language Model Meta AI)的缩写,它可以在非商业许可下提供给政府、社区

    2024年02月13日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包