目录
介绍
学习成果
目录
用诗歌初始化包裹
设计核心评估员类
定义评估者类
实施评估指标
计算BLEU分数
优势
缺点
测量胭脂分数
测试您的包裹
编写有效的单元测试
建立车轮
创建源和二进制分布
源分布(SDIST)
二元分布(BDIST)
执照
发布软件包
test.pypi.org
pypi.org
结论
关键要点
常见问题
首页 科技周边 人工智能 如何用诗歌构建抹布评估器Python包

如何用诗歌构建抹布评估器Python包

Apr 19, 2025 am 09:05 AM

介绍

想象一下,您将生产一个Python软件包,该软件包有可能完全改变开发人员和数据分析师评估其模型的方式。这次旅行始于直接的概念:一种灵活的破布评估工具,可以管理各种指标和边缘情况。您将从用诗歌初始化包裹到创建可靠的评估师类,并在潜入本文时测试代码。您将获得有关如何创建软件包,计算BLEU和Rouge分数并在线发布的知识。最终,除了拥有一个可以使用公众使用的工作工具之外,您还将对Python包装和开源贡献有更多的了解。

学习成果

  • 学会使用诗歌初始化并构建Python软件包。
  • 为多个指标开发和实施评估者类。
  • 计算和评估诸如BLEU和Rouge分数之类的指标。
  • 编写和执行测试以确保代码功能和鲁棒性。
  • 将Python软件包构建并发布给PYPI,包括处理分销和许可。

本文作为数据科学博客马拉松的一部分发表

目录

  • 用诗歌初始化包裹
  • 设计核心评估员类
  • 定义评估者类
  • 实施评估指标
  • 计算BLEU分数
  • 测量胭脂分数
  • 测试您的包裹
  • 建立车轮
  • 创建源和二进制分布
  • 发布软件包
  • 常见问题

用诗歌初始化包裹

现在,我们已经有了可以使用诗歌初始化新的Python软件包开始的要求。选择诗歌的原因是:

  • 它消除了管理多个虚拟环境的需求。
  • 它支持所有类型的Python软件包格式,包括本机和旧软件包。
  • 它即使通过``poetry.lock''文件确保了依赖项的正确版本。
  • PYPI准备单个命令。

使用命令安装诗歌几乎所有操作系统:

1

curl -ssl https://install.python-poetry.org | python3-

登录后复制

然后,我们可以使用以下命令使用样板来创建一个新的存储库。

1

诗歌新软件包_name

登录后复制

您可以将ENTER按ENTER并将其保留为默认情况下的通用问题。然后,您将降落在类似的文件夹结构中。

1

2

3

4

5

6

7

8

9

10

11

12

13

诗歌

 

├ -  pyproject.toml

 

├├前

 

├ -  poetry_demo

 

│└└前__init__.py

 

└ - 测试

 

└ -  __init__.py

登录后复制

尽管结构很好,但我们可以使用``src''布局与官方Python文档中所讨论的`flat'布局。我们将遵循博客其余部分中的“ SRC”布局。

设计核心评估员类

包装的核心包含所有源代码,以供电Python评估器软件包。它包含了我们希望拥有的所有指标将继承的基类。因此,这堂课必须是在施工期间必须最强大,最大的谨慎。此类将具有基本初始化所需的必要逻辑,一种从度量标准获得结果的方法,以及一种容易消耗的用户输入的方法。

所有这些方法必须具有自己的范围和适当的数据类型。更多地关注数据类型的原因是因为Python是动态键入的。因此,我们必须确保正确使用变量,因为这些变量仅在运行时会导致错误。因此,必须有测试套件来捕获这些微小的错误,而不是使用专用的类型检查编译器。如果我们在Python中使用适当的键入,就很好。

定义评估者类

现在,我们看到了所有评估者类都必须包含的内容,以及为什么我们最重要的是相同的实现。对于构建此类,我们正在继承Python提供的ABC - 抽象基类。选择此类的原因是它包含我们可以构建评估者基类的所有具体功能。现在,让我们定义评估器类的输入和输出。

  • 输入:候选人[字符串列表],引用[字符串列表]
  • 方法:``填充'(确保候选人和参考的长度相同),“ get_score”(计算评估指标的最终结果的方法)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

#src/evaluator_blog/evaluator.py

 

进口警告

从输入进口联盟,列表

来自ABC Import ABC,AbstractMethod

 

 

类Baseevaluator(ABC):

    def __init __(自我,候选人:列表,参考:列表) - >无:

        self.candidates =候选人

        self.references =参考

 

    @StaticMethod

    def填充(

        候选人:列表[str],参考:列表[str]

    ) - >联合[列表[str],列表[str]]:

        “““_概括_

 

        args:

            候选人(列表[str]):LLM产生的响应

            参考文献(列表[str]):针对

 

        返回:

            联合[列表[str],列表[str]]:确保“候选人”和“参考”的长度相等

        ”“”

        _msg = str(

            ”“”

            参考和候选人的长度(假设)不相同。

            ”“”

        

        警告(_msg)

        max_length = max(len(候选),len(参考))

        candidates.extend([[“”] *(max_length -len(cantifates)))))

        references.extend([“”] *(max_length -len(references)))

        返回候选人,参考

 

    @StaticMethod

    def list_to_string(l:list) - > str:

        断言(

            Len(L)> = 1

        ),“确保消息的长度大于或等于1”

 

        返回str(L [0])

 

    @AbstractMethod

    def get_score(self) - > float:

        ”“”

        计算得分函数最终结果的方法。

 

        返回:

            所选评估指标的浮点值。

        ”“”

登录后复制

在这里,我们可以发现“ __init()__”方法包含所需的参数,即对任何评估者指标的基本要求IE候选者和参考。

然后,确保“候选”和“参考”所需的填充包含定义为静态方法的长度相同的长度,因为我们每次调用时都不需要初始化此内容。因此,静态装饰器包含所需的逻辑。

最后,对于`get_score()`我们使用AbstrackMethod Decorator,这意味着所有继承基本评估器类的类都必须包含此方法。

实施评估指标

现在是图书馆实施的核心,即对指标的评估。目前,用于计算,我们使用执行任务并显示度量分数的各个库。我们主要使用``候选人'ie llm生成的响应和``参考''即地面真相,我们分别计算了价值。为简单起见,我们计算BLEU和胭脂分数。这种逻辑可扩展到市场上可用的所有指标。

计算BLEU分数

作为双语评估研究的缩写是机器翻译(候选人)的常见评估指标之一,它是快速,廉价且无关紧要的。与手动评估相比,它具有边际错误。它比较了机器翻译与专业人类反应(参考)的亲密关系,并将评估作为度量得分范围为0-1,而任何方向的评分都被称为1次接近匹配。他们在候选人的句子中考虑了n-gram(n个单词的块)。例如。 Unigram(1克)考虑了候选人和参考文献中的每个单词,并将标准的得分返回被称为精度得分。

但是,考虑到是否多次出现相同的单词,它是每个外观的最终得分,这并不总是很好,这通常是不正确的。因此,BLEU使用修改后的精度分数,其中将单词匹配的数量剪辑并用候选人中的单词数将其归一化。这里的另一个收获是,它不会考虑订购一词。因此,BLEU得分考虑了多个N-gram,并用其他参数显示1-4克的精确得分。

如何用诗歌构建抹布评估器Python包

如何用诗歌构建抹布评估器Python包

优势

  • 更快的计算和简单的计算。
  • 广泛使用且易于基准的结果。

缺点

  • 不考虑翻译的含义。
  • 不考虑句子格式。
  • 尽管它是双语的,但它仍在非英语语言中挣扎。
  • 当人类翻译已经被象征化时,很难计算得分。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

#src/devaluator_blog/metrics/bleu.py

 

从输入导入列表,可召唤,可选

来自src.evaluator_blog.evaluator导入baseevaluator

 

来自nltk.translate.bleu_score import colpus_bleu,smoothingFunction

 

”“”

NLTK的BLEU实施

”“”

Bleuscore类(baseevaluator):

    def __init __(

        自己,

        候选人:列表[str],

        参考:列表[str],

        权重:可选[列表[float]] =无,

        Smoothing_Function:可选[可呼叫] =无,

        auto_reweigh:可选[bool] = false,

    ) - >无:

        ”“”

        计算从

        Papineni,Kishore,Salim Roukos,Todd Ward和Wei-Jing Zhu。 2002。

        “ BLEU:一种自动评估机器翻译的方法。”

        在ACL会议录中。 https://aclanthology.org/p02-1040.pdf

 

            args:

                权重(可选[列表[float],可选):必须应用于每个bleu_score的权重。默认为无。

                Smoothing_Function(可选[可呼叫],可选):通过添加或调整单词的概率质量分布来克服训练数据的稀疏性问题。默认为无。

                auto_reweigh(可选[bool],可选):如果n-grams  float:

        ”“”

        计算给定候选人和参考的BLEU分数。

 

        args:

            候选人(列表[str]):候选句子列表

            参考(列表[str]):参考句子列表

            权重(可选[列表[Float],可选):BLEU评分计算的权重。默认为(1.0、0、0、0)

            Smoothing_Function(可选[函数]):平滑技术到段级别的BLEU分数

 

        返回:

            浮点:计算出的BLEU分数。

        ”“”

        #检查候选人和参考的长度是否相等

        如果len(self.candidates)!= len(self.enferences):

            self.candidates,self.references = self.padding(

                self.candidates,self。参考

            

 

        #计算BLEU分数

        返回colpus_bleu(

            list_of_references = self.References,

            假设= self.candidates,

            权重=自我。

            Smoothing_function = self.smoothing_function,

            auto_reweigh = self.auto_reweigh,

        

登录后复制

测量胭脂分数

缩写为以召回式评估为导向的研究,是将模型生成的摘要与多个人类摘要进行比较的常见评估指标之一。它以一种天真的方式比较了机器和人类生成的摘要的n克。这称为Rouge-n召回分数。为了确保与人类摘要的机器生成的摘要相关性,我们可以计算精度分数。由于我们具有精度和召回分数,因此我们可以计算F1得分。通常建议考虑`n`的多个值。 Rouge中的一个小变体是Rouge-L分数,它考虑了单词的顺序并计算LCS(最长的常见子序列)。以同样的方式,我们可以获得精度和召回得分。这里有一个略有优势,它考虑了句子的分子性并产生相关结果。

如何用诗歌构建抹布评估器Python包

优势

  • 通过比较n克和最长的共同子序列来评估自动文本摘要的质量非常有效。
  • Rouge可以应用于任何语言,使其用于多语言文本分析和评估。

缺点

  • Rouge专注于表面级文本匹配(N-Grams),这可能无法捕获更深的语义含义和连贯性。
  • 胭脂的准确性在很大程度上取决于参考摘要的质量和代表性

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

#src/evaluator_blog/metrics/rouge.py

 

进口警告

从输入导入列表,工会,dict,可召唤,元组,可选

来自.. evaluator导入baseevaluator

来自rouge_score import rouge_scorer

 

 

rugescore类(baseevaluator):

    def __init __(

        自己,

        候选人:列表,

        参考:列表,

        rouge_types:可选[Union [str [str,tuple [str]]] = [

            “ rouge1”,

            “ rouge2”,

            “ Roogel”,

            “ roogelsum”,

        ],,

        use_stemmer:可选[bool] = false,

        split_summaries:可选[bool] = false,

        tokenizer:可选[callable] = none,

    ) - >无:

        super().__ init __(候选人,参考)

 

        #默认`rouge_types`都是全部,否则用户指定的

        如果IsInstance(rouge_types,str):

            self.rouge_types = [rouge_types]

        别的:

            self.rouge_types = rouge_types

 

        #启用`use_stemmer`删除字词后缀以提高匹配能力

        self.use_stemmer = use_stemmer

 

        #如果启用了

        self.split_summaries = split_summaries

 

        #启用`tokenizer`如果用户定义或使用`rouge_scorer`默认值

        #https://github.com/google-research/google-research/blob/master/rouge/rouge_scorer.py#l83

        如果令牌:

            self.tokenizer = tokenizer

        别的:

            self.tokenizer =无

            _msg = str(

                ”“”

                利用默认令牌

                ”“”

            

            警告(_msg)

 

    def get_score(self) - > dict:

        ”“”

        返回:

            dict:相应度量评估的JSON值

        ”“”

        SCORER = Rouge_scorer.RougesCorer(

            rouge_types = self.rouge_types,

            use_stemmer = self.use_semmer,

            tokenizer = self.tokenizer,

            split_summaries = self.split_summaries,

        

 

        返回得分手。Score(self.list_to_string(self.candidates),self.list_to_string(self.references))

登录后复制

测试您的包裹

现在,在实际用法之前,我们已经准备好源文件,我们必须验证代码的工作。这就是测试阶段进入图片的地方。在Python库格式/惯例/最佳实践中,我们在名为`tests/'的文件夹下编写所有测试。这个命名惯例使开发人员可以轻松了解该文件夹具有其意义。尽管我们有多个开发工具,我们可以使用类型检查,错误处理等限制库。这迎合了第一轮检查和测试。但是,为了确保边缘案例和例外,我们可以使用Unitest,Andpytestas进行首选框架。话虽如此,我们只是使用“ UnitTest”库来设置基本测试。

编写有效的单元测试

关于“ UnitSest”的关键术语是测试案例和测试套件。

  • 测试案例:测试的最小单元,我们在其中评估一组输出的输入。
  • 测试套件:测试案例,套房或两者的集合。用于汇总测试以合作。
  • 命名约定:必须在文件名和函数名称上以`tests_'的前缀。原因是解析器将检测到它们并将其添加到测试套件中。

建立车轮

当我们运行命令`pip slotstance ``````''基本上是安装了python软件包。轮子的内容存储在“ .WHL”文件中。车轮文件存储在`dist/`。有一个构建的分布`.whl'和源分布`.gz'。由于我们正在使用诗歌,因此我们可以使用构建命令来构建分布:

1

诗歌构建

登录后复制

它在文件夹根部的`dist/`文件夹中生成了轮子和zip文件。

1

2

3

├ -  potage_name-0.0.0.1-py3-nony-any.whl

└─pongage_name-0.0.0.1.tar.gz

登录后复制

等效Python命令Aliter正在安装`build''软件包,然后从文件夹的根部运行构建命令。

1

2

Python3 -M PIP安装 - 升级构建

Python3 -m构建

登录后复制

创建源和二进制分布

现在,让我们展望创建源和二进制分布。

源分布(SDIST)

`sdist`是包含源代码和元数据的软件包的源分布,以根据PIP或POETRY等外部工具构建。必须在“ bdist”之前构建`sdist`。如果“ PIP”找不到构建分布,则源分布充当后备。然后,它从中构建一个轮子,然后安装包装要求。

二元分布(BDIST)

`bdist`包含需要移动到目标设备正确位置的必要文件。最佳支持的格式之一是`.whl'。要注意的是,它没有编译Python文件。

执照

在将包裹开放给外部世界时,始终建议拥有一个许可证,以显示您的代码可以重复使用的程度。在Github创建存储库时,我们可以选择在此处选择许可证。它创建一个具有使用选项的“许可证”文件。如果您不确定要选择哪种许可证,那么此外部资源是营救的理想选择。

如何用诗歌构建抹布评估器Python包

发布软件包

现在,我们已经有所有要求将包裹发布给外部世界的所有要求。因此,我们使用的是Publish命令,该命令将所有步骤用单个命令抽象。

test.pypi.org

如果您不确定包裹的执行方式或用于测试目的,建议将其发布到test.pypi.org而不是直接上传到官方存储库中。这使我们可以灵活地测试包装,然后再与所有人共享包裹。

pypi.org

Python官方包装包含Python社区发布的所有私人和公共软件。对于作者和组织来说,通过官方的中央存储库共享包裹很有用。将您的软件包发布到世界上所需的只是这个单个命令。

1

诗歌出版-build -username $ pypi_username -password $ pypi_password

登录后复制

结论

到本文结尾,您已经成功发布了一个python软件包,该软件包准备被数百万使用。我们已经使用诗歌初始化了一个新的软件包,在用例中工作,编写了测试,构建了软件包并将其发布到PYPI存储库中。这将为自己增加更多价值,还可以帮助您了解有关它们的结构方式的各种开源Python软件包存储库。最后但并非最不重要的一点是,这只是开始,我们可以使其尽可能扩展。我们可以参考开源Python软件包和发行版,并从同一包装中获得灵感。

关键要点

  • Python大师包装和诗歌的管理。
  • 实施和自定义评估指标,以适用于不同的用例。
  • 使用单元测试框架构建和测试可靠的Python软件包。
  • 将您的软件包发布到PYPI并了解分销格式。
  • 了解开源软件包开发和许可实践的见解。

常见问题

Q1。本文的目的是什么?

答:本文可帮助您创建和发布Python软件包,重点关注社区可以用于各种评估指标的破布评估器工具。

Q2。为什么我要使用诗歌来管理我的Python套餐?

A.诗歌通过将版本控制,虚拟环境和将任务发布到单个工具中来简化依赖关系管理和包装,从而使开发和分发更加容易。

Q3。本文涵盖了哪些评估指标?

答:本文详细介绍了如何计算BLEU和Rouge分数,这些分数是通常用于评估机器生成文本质量的指标,与参考文本相比。

Q4。如何测试Python软件包的功能?

答:您可以使用UNITSEST或PYTEST等框架来测试软件包,以确保代码按预期工作并处理边缘案例,并在发布前提供信心。

Q5。发布Python软件包的步骤是什么?

答:使用诗歌或构建构建软件包,在test.pypi.org上进行测试,然后使用诗歌出版命令将其发布到官方的pypi.org存储库中,以使其向公众使用。

本文所示的媒体不由Analytics Vidhya拥有,并由作者酌情使用。

以上是如何用诗歌构建抹布评估器Python包的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1246
24
开始使用Meta Llama 3.2 -Analytics Vidhya 开始使用Meta Llama 3.2 -Analytics Vidhya Apr 11, 2025 pm 12:04 PM

Meta的Llama 3.2:多模式和移动AI的飞跃 Meta最近公布了Llama 3.2,这是AI的重大进步,具有强大的视觉功能和针对移动设备优化的轻量级文本模型。 以成功为基础

10个生成AI编码扩展,在VS代码中,您必须探索 10个生成AI编码扩展,在VS代码中,您必须探索 Apr 13, 2025 am 01:14 AM

嘿,编码忍者!您当天计划哪些与编码有关的任务?在您进一步研究此博客之前,我希望您考虑所有与编码相关的困境,这是将其列出的。 完毕? - 让&#8217

AV字节:Meta' llama 3.2,Google的双子座1.5等 AV字节:Meta' llama 3.2,Google的双子座1.5等 Apr 11, 2025 pm 12:01 PM

本周的AI景观:进步,道德考虑和监管辩论的旋风。 OpenAI,Google,Meta和Microsoft等主要参与者已经释放了一系列更新,从开创性的新车型到LE的关键转变

向员工出售AI策略:Shopify首席执行官的宣言 向员工出售AI策略:Shopify首席执行官的宣言 Apr 10, 2025 am 11:19 AM

Shopify首席执行官TobiLütke最近的备忘录大胆地宣布AI对每位员工的基本期望是公司内部的重大文化转变。 这不是短暂的趋势。这是整合到P中的新操作范式

GPT-4O vs OpenAI O1:新的Openai模型值得炒作吗? GPT-4O vs OpenAI O1:新的Openai模型值得炒作吗? Apr 13, 2025 am 10:18 AM

介绍 Openai已根据备受期待的“草莓”建筑发布了其新模型。这种称为O1的创新模型增强了推理能力,使其可以通过问题进行思考

视觉语言模型(VLMS)的综合指南 视觉语言模型(VLMS)的综合指南 Apr 12, 2025 am 11:58 AM

介绍 想象一下,穿过​​美术馆,周围是生动的绘画和雕塑。现在,如果您可以向每一部分提出一个问题并获得有意义的答案,该怎么办?您可能会问:“您在讲什么故事?

最新的最佳及时工程技术的年度汇编 最新的最佳及时工程技术的年度汇编 Apr 10, 2025 am 11:22 AM

对于那些可能是我专栏新手的人,我广泛探讨了AI的最新进展,包括体现AI,AI推理,AI中的高科技突破,及时的工程,AI培训,AI,AI RE RE等主题

3种运行Llama 3.2的方法-Analytics Vidhya 3种运行Llama 3.2的方法-Analytics Vidhya Apr 11, 2025 am 11:56 AM

Meta's Llama 3.2:多式联运AI强力 Meta的最新多模式模型Llama 3.2代表了AI的重大进步,具有增强的语言理解力,提高的准确性和出色的文本生成能力。 它的能力t

See all articles