介紹
想象一下,您將生產(chǎn)一個Python軟件包,該軟件包有可能完全改變開發(fā)人員和數(shù)據(jù)分析師評估其模型的方式。這次旅行始于直接的概念:一種靈活的破布評估工具,可以管理各種指標(biāo)和邊緣情況。您將從用詩歌初始化包裹到創(chuàng)建可靠的評估師類,并在潛入本文時測試代碼。您將獲得有關(guān)如何創(chuàng)建軟件包,計算BLEU和Rouge分?jǐn)?shù)并在線發(fā)布的知識。最終,除了擁有一個可以使用公眾使用的工作工具之外,您還將對Python包裝和開源貢獻有更多的了解。
學(xué)習(xí)成果
- 學(xué)會使用詩歌初始化并構(gòu)建Python軟件包。
- 為多個指標(biāo)開發(fā)和實施評估者類。
- 計算和評估諸如BLEU和Rouge分?jǐn)?shù)之類的指標(biāo)。
- 編寫和執(zhí)行測試以確保代碼功能和魯棒性。
- 將Python軟件包構(gòu)建并發(fā)布給PYPI,包括處理分銷和許可。
本文作為數(shù)據(jù)科學(xué)博客馬拉松的一部分發(fā)表。
目錄
- 用詩歌初始化包裹
- 設(shè)計核心評估員類
- 定義評估者類
- 實施評估指標(biāo)
- 計算BLEU分?jǐn)?shù)
- 測量胭脂分?jǐn)?shù)
- 測試您的包裹
- 建立車輪
- 創(chuàng)建源和二進制分布
- 發(fā)布軟件包
- 常見問題
用詩歌初始化包裹
現(xiàn)在,我們已經(jīng)有了可以使用詩歌初始化新的Python軟件包開始的要求。選擇詩歌的原因是:
- 它消除了管理多個虛擬環(huán)境的需求。
- 它支持所有類型的Python軟件包格式,包括本機和舊軟件包。
- 它即使通過``poetry.lock''文件確保了依賴項的正確版本。
- PYPI準(zhǔn)備單個命令。
使用命令安裝詩歌幾乎所有操作系統(tǒng):
curl -ssl https://install.python-poetry.org | python3-
然后,我們可以使用以下命令使用樣板來創(chuàng)建一個新的存儲庫。
詩歌新軟件包_name
您可以將ENTER按ENTER并將其保留為默認情況下的通用問題。然后,您將降落在類似的文件夾結(jié)構(gòu)中。
詩歌 ├ - pyproject.toml ├├前 ├ - poetry_demo │└└前__init__.py └ - 測試 └ - __init__.py
盡管結(jié)構(gòu)很好,但我們可以使用``src''布局與官方Python文檔中所討論的`flat'布局。我們將遵循博客其余部分中的“ SRC”布局。
設(shè)計核心評估員類
包裝的核心包含所有源代碼,以供電Python評估器軟件包。它包含了我們希望擁有的所有指標(biāo)將繼承的基類。因此,這堂課必須是在施工期間必須最強大,最大的謹(jǐn)慎。此類將具有基本初始化所需的必要邏輯,一種從度量標(biāo)準(zhǔn)獲得結(jié)果的方法,以及一種容易消耗的用戶輸入的方法。
所有這些方法必須具有自己的范圍和適當(dāng)?shù)臄?shù)據(jù)類型。更多地關(guān)注數(shù)據(jù)類型的原因是因為Python是動態(tài)鍵入的。因此,我們必須確保正確使用變量,因為這些變量僅在運行時會導(dǎo)致錯誤。因此,必須有測試套件來捕獲這些微小的錯誤,而不是使用專用的類型檢查編譯器。如果我們在Python中使用適當(dāng)?shù)逆I入,就很好。
定義評估者類
現(xiàn)在,我們看到了所有評估者類都必須包含的內(nèi)容,以及為什么我們最重要的是相同的實現(xiàn)。對于構(gòu)建此類,我們正在繼承Python提供的ABC - 抽象基類。選擇此類的原因是它包含我們可以構(gòu)建評估者基類的所有具體功能?,F(xiàn)在,讓我們定義評估器類的輸入和輸出。
- 輸入:候選人[字符串列表],引用[字符串列表]
- 方法:``填充'(確保候選人和參考的長度相同),“ get_score”(計算評估指標(biāo)的最終結(jié)果的方法)
#src/evaluator_blog/evaluator.py 進口警告 從輸入進口聯(lián)盟,列表 來自ABC Import ABC,AbstractMethod 類Baseevaluator(ABC): def __init __(自我,候選人:列表,參考:列表) - >無: self.candidates =候選人 self.references =參考 @StaticMethod def填充( 候選人:列表[str],參考:列表[str] ) - >聯(lián)合[列表[str],列表[str]]: “““_概括_ args: 候選人(列表[str]):LLM產(chǎn)生的響應(yīng) 參考文獻(列表[str]):針對 返回: 聯(lián)合[列表[str],列表[str]]:確?!昂蜻x人”和“參考”的長度相等 ”“” _msg = str( ”“” 參考和候選人的長度(假設(shè))不相同。 ”“” ) 警告(_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: ”“” 計算得分函數(shù)最終結(jié)果的方法。 返回: 所選評估指標(biāo)的浮點值。 ”“”
在這里,我們可以發(fā)現(xiàn)“ __init()__”方法包含所需的參數(shù),即對任何評估者指標(biāo)的基本要求IE候選者和參考。
然后,確?!昂蜻x”和“參考”所需的填充包含定義為靜態(tài)方法的長度相同的長度,因為我們每次調(diào)用時都不需要初始化此內(nèi)容。因此,靜態(tài)裝飾器包含所需的邏輯。
最后,對于`get_score()`我們使用AbstrackMethod Decorator,這意味著所有繼承基本評估器類的類都必須包含此方法。
實施評估指標(biāo)
現(xiàn)在是圖書館實施的核心,即對指標(biāo)的評估。目前,用于計算,我們使用執(zhí)行任務(wù)并顯示度量分?jǐn)?shù)的各個庫。我們主要使用``候選人'ie llm生成的響應(yīng)和``參考''即地面真相,我們分別計算了價值。為簡單起見,我們計算BLEU和胭脂分?jǐn)?shù)。這種邏輯可擴展到市場上可用的所有指標(biāo)。
計算BLEU分?jǐn)?shù)
作為雙語評估研究的縮寫是機器翻譯(候選人)的常見評估指標(biāo)之一,它是快速,廉價且無關(guān)緊要的。與手動評估相比,它具有邊際錯誤。它比較了機器翻譯與專業(yè)人類反應(yīng)(參考)的親密關(guān)系,并將評估作為度量得分范圍為0-1,而任何方向的評分都被稱為1次接近匹配。他們在候選人的句子中考慮了n-gram(n個單詞的塊)。例如。 Unigram(1克)考慮了候選人和參考文獻中的每個單詞,并將標(biāo)準(zhǔn)的得分返回被稱為精度得分。
但是,考慮到是否多次出現(xiàn)相同的單詞,它是每個外觀的最終得分,這并不總是很好,這通常是不正確的。因此,BLEU使用修改后的精度分?jǐn)?shù),其中將單詞匹配的數(shù)量剪輯并用候選人中的單詞數(shù)將其歸一化。這里的另一個收獲是,它不會考慮訂購一詞。因此,BLEU得分考慮了多個N-gram,并用其他參數(shù)顯示1-4克的精確得分。
優(yōu)勢
- 更快的計算和簡單的計算。
- 廣泛使用且易于基準(zhǔn)的結(jié)果。
缺點
- 不考慮翻譯的含義。
- 不考慮句子格式。
- 盡管它是雙語的,但它仍在非英語語言中掙扎。
- 當(dāng)人類翻譯已經(jīng)被象征化時,很難計算得分。
#src/devaluator_blog/metrics/bleu.py 從輸入導(dǎo)入列表,可召喚,可選 來自src.evaluator_blog.evaluator導(dǎo)入baseevaluator 來自nltk.translate.bleu_score import colpus_bleu,smoothingFunction ”“” NLTK的BLEU實施 ”“” Bleuscore類(baseevaluator): def __init __( 自己, 候選人:列表[str], 參考:列表[str], 權(quán)重:可選[列表[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: 權(quán)重(可選[列表[float],可選):必須應(yīng)用于每個bleu_score的權(quán)重。默認為無。 Smoothing_Function(可選[可呼叫],可選):通過添加或調(diào)整單詞的概率質(zhì)量分布來克服訓(xùn)練數(shù)據(jù)的稀疏性問題。默認為無。 auto_reweigh(可選[bool],可選):如果n-grams float: ”“” 計算給定候選人和參考的BLEU分?jǐn)?shù)。 args: 候選人(列表[str]):候選句子列表 參考(列表[str]):參考句子列表 權(quán)重(可選[列表[Float],可選):BLEU評分計算的權(quán)重。默認為(1.0、0、0、0) Smoothing_Function(可選[函數(shù)]):平滑技術(shù)到段級別的BLEU分?jǐn)?shù) 返回: 浮點:計算出的BLEU分?jǐn)?shù)。 ”“” #檢查候選人和參考的長度是否相等 如果len(self.candidates)!= len(self.enferences): self.candidates,self.references = self.padding( self.candidates,self。參考 ) #計算BLEU分?jǐn)?shù) 返回colpus_bleu( list_of_references = self.References, 假設(shè)= self.candidates, 權(quán)重=自我。 Smoothing_function = self.smoothing_function, auto_reweigh = self.auto_reweigh, )
測量胭脂分?jǐn)?shù)
縮寫為以召回式評估為導(dǎo)向的研究,是將模型生成的摘要與多個人類摘要進行比較的常見評估指標(biāo)之一。它以一種天真的方式比較了機器和人類生成的摘要的n克。這稱為Rouge-n召回分?jǐn)?shù)。為了確保與人類摘要的機器生成的摘要相關(guān)性,我們可以計算精度分?jǐn)?shù)。由于我們具有精度和召回分?jǐn)?shù),因此我們可以計算F1得分。通常建議考慮`n`的多個值。 Rouge中的一個小變體是Rouge-L分?jǐn)?shù),它考慮了單詞的順序并計算LCS(最長的常見子序列)。以同樣的方式,我們可以獲得精度和召回得分。這里有一個略有優(yōu)勢,它考慮了句子的分子性并產(chǎn)生相關(guān)結(jié)果。
優(yōu)勢
- 通過比較n克和最長的共同子序列來評估自動文本摘要的質(zhì)量非常有效。
- Rouge可以應(yīng)用于任何語言,使其用于多語言文本分析和評估。
缺點
- Rouge專注于表面級文本匹配(N-Grams),這可能無法捕獲更深的語義含義和連貫性。
- 胭脂的準(zhǔn)確性在很大程度上取決于參考摘要的質(zhì)量和代表性
#src/evaluator_blog/metrics/rouge.py 進口警告 從輸入導(dǎo)入列表,工會,dict,可召喚,元組,可選 來自.. evaluator導(dǎo)入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:相應(yīng)度量評估的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))
測試您的包裹
現(xiàn)在,在實際用法之前,我們已經(jīng)準(zhǔn)備好源文件,我們必須驗證代碼的工作。這就是測試階段進入圖片的地方。在Python庫格式/慣例/最佳實踐中,我們在名為`tests/'的文件夾下編寫所有測試。這個命名慣例使開發(fā)人員可以輕松了解該文件夾具有其意義。盡管我們有多個開發(fā)工具,我們可以使用類型檢查,錯誤處理等限制庫。這迎合了第一輪檢查和測試。但是,為了確保邊緣案例和例外,我們可以使用Unitest,Andpytestas進行首選框架。話雖如此,我們只是使用“ UnitTest”庫來設(shè)置基本測試。
編寫有效的單元測試
關(guān)于“ UnitSest”的關(guān)鍵術(shù)語是測試案例和測試套件。
- 測試案例:測試的最小單元,我們在其中評估一組輸出的輸入。
- 測試套件:測試案例,套房或兩者的集合。用于匯總測試以合作。
- 命名約定:必須在文件名和函數(shù)名稱上以`tests_'的前綴。原因是解析器將檢測到它們并將其添加到測試套件中。
建立車輪
當(dāng)我們運行命令`pip slotstance
詩歌構(gòu)建
它在文件夾根部的`dist/`文件夾中生成了輪子和zip文件。
區(qū) ├ - potage_name-0.0.0.1-py3-nony-any.whl └─pongage_name-0.0.0.1.tar.gz
等效Python命令A(yù)liter正在安裝`build''軟件包,然后從文件夾的根部運行構(gòu)建命令。
Python3 -M PIP安裝 - 升級構(gòu)建 Python3 -m構(gòu)建
創(chuàng)建源和二進制分布
現(xiàn)在,讓我們展望創(chuàng)建源和二進制分布。
源分布(SDIST)
`sdist`是包含源代碼和元數(shù)據(jù)的軟件包的源分布,以根據(jù)PIP或POETRY等外部工具構(gòu)建。必須在“ bdist”之前構(gòu)建`sdist`。如果“ PIP”找不到構(gòu)建分布,則源分布充當(dāng)后備。然后,它從中構(gòu)建一個輪子,然后安裝包裝要求。
二元分布(BDIST)
`bdist`包含需要移動到目標(biāo)設(shè)備正確位置的必要文件。最佳支持的格式之一是`.whl'。要注意的是,它沒有編譯Python文件。
執(zhí)照
在將包裹開放給外部世界時,始終建議擁有一個許可證,以顯示您的代碼可以重復(fù)使用的程度。在Github創(chuàng)建存儲庫時,我們可以選擇在此處選擇許可證。它創(chuàng)建一個具有使用選項的“許可證”文件。如果您不確定要選擇哪種許可證,那么此外部資源是營救的理想選擇。
發(fā)布軟件包
現(xiàn)在,我們已經(jīng)有所有要求將包裹發(fā)布給外部世界的所有要求。因此,我們使用的是Publish命令,該命令將所有步驟用單個命令抽象。
test.pypi.org
如果您不確定包裹的執(zhí)行方式或用于測試目的,建議將其發(fā)布到test.pypi.org而不是直接上傳到官方存儲庫中。這使我們可以靈活地測試包裝,然后再與所有人共享包裹。
pypi.org
Python官方包裝包含Python社區(qū)發(fā)布的所有私人和公共軟件。對于作者和組織來說,通過官方的中央存儲庫共享包裹很有用。將您的軟件包發(fā)布到世界上所需的只是這個單個命令。
詩歌出版-build -username $ pypi_username -password $ pypi_password
結(jié)論
到本文結(jié)尾,您已經(jīng)成功發(fā)布了一個python軟件包,該軟件包準(zhǔn)備被數(shù)百萬使用。我們已經(jīng)使用詩歌初始化了一個新的軟件包,在用例中工作,編寫了測試,構(gòu)建了軟件包并將其發(fā)布到PYPI存儲庫中。這將為自己增加更多價值,還可以幫助您了解有關(guān)它們的結(jié)構(gòu)方式的各種開源Python軟件包存儲庫。最后但并非最不重要的一點是,這只是開始,我們可以使其盡可能擴展。我們可以參考開源Python軟件包和發(fā)行版,并從同一包裝中獲得靈感。
關(guān)鍵要點
- Python大師包裝和詩歌的管理。
- 實施和自定義評估指標(biāo),以適用于不同的用例。
- 使用單元測試框架構(gòu)建和測試可靠的Python軟件包。
- 將您的軟件包發(fā)布到PYPI并了解分銷格式。
- 了解開源軟件包開發(fā)和許可實踐的見解。
常見問題
Q1。本文的目的是什么?答:本文可幫助您創(chuàng)建和發(fā)布Python軟件包,重點關(guān)注社區(qū)可以用于各種評估指標(biāo)的破布評估器工具。
Q2。為什么我要使用詩歌來管理我的Python套餐?A.詩歌通過將版本控制,虛擬環(huán)境和將任務(wù)發(fā)布到單個工具中來簡化依賴關(guān)系管理和包裝,從而使開發(fā)和分發(fā)更加容易。
Q3。本文涵蓋了哪些評估指標(biāo)?答:本文詳細介紹了如何計算BLEU和Rouge分?jǐn)?shù),這些分?jǐn)?shù)是通常用于評估機器生成文本質(zhì)量的指標(biāo),與參考文本相比。
Q4。如何測試Python軟件包的功能?答:您可以使用UNITSEST或PYTEST等框架來測試軟件包,以確保代碼按預(yù)期工作并處理邊緣案例,并在發(fā)布前提供信心。
Q5。發(fā)布Python軟件包的步驟是什么?答:使用詩歌或構(gòu)建構(gòu)建軟件包,在test.pypi.org上進行測試,然后使用詩歌出版命令將其發(fā)布到官方的pypi.org存儲庫中,以使其向公眾使用。
本文所示的媒體不由Analytics Vidhya擁有,并由作者酌情使用。
以上是如何用詩歌構(gòu)建抹布評估器Python包的詳細內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機

Video Face Swap
使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級代碼編輯軟件(SublimeText3)

還記得今年早些時候破壞了Genai行業(yè)的大量開源中國模型嗎?盡管DeepSeek占據(jù)了大多數(shù)頭條新聞,但Kimi K1.5是列表中的重要名字之一。模型很酷。

讓我們來談?wù)劇? 對創(chuàng)新AI突破的分析是我正在進行的AI中正在進行的福布斯列覆蓋的一部分,包括識別和解釋各種有影響力的AI復(fù)雜性(請參閱此處的鏈接)。 前往Agi和

到2025年中期,AI“軍備競賽”正在加熱,XAI和Anthropic都發(fā)布了他們的旗艦車型Grok 4和Claude 4。這兩種模型處于設(shè)計理念和部署平臺的相反端,但他們卻在

我們將討論:公司開始委派AI的工作職能,以及那些最不可能用人工智能替代的角色AI如何重塑行業(yè)和就業(yè),以及企業(yè)和工人的工作方式。

但是我們可能甚至不必等10年就可以看到一個。實際上,可以被認為是真正有用的,類人類機器的第一波。 近年來,有許多原型和生產(chǎn)模型從T中走出來

直到上一年,迅速的工程被認為是與大語言模型(LLM)互動的關(guān)鍵技能。然而,最近,LLM在推理和理解能力方面已經(jīng)顯著提高。自然,我們的期望

許多人充滿熱情地打入健身房,并相信自己正在正確實現(xiàn)自己的健身目標(biāo)。但是由于飲食計劃差和缺乏方向,結(jié)果不存在。雇用私人教練AL

我相信您必須了解通用的AI代理Manus。它是幾個月前推出的,在過去的幾個月中,他們?yōu)橄到y(tǒng)添加了幾個新功能?,F(xiàn)在,您可以生成視頻,創(chuàng)建網(wǎng)站并做很多MO
