介紹
想像一下,您將生產一個Python軟件包,該軟件包有可能完全改變開發人員和數據分析師評估其模型的方式。這次旅行始於直接的概念:一種靈活的破布評估工具,可以管理各種指標和邊緣情況。您將從用詩歌初始化包裹到創建可靠的評估師類,並在潛入本文時測試代碼。您將獲得有關如何創建軟件包,計算BLEU和Rouge分數並在線發布的知識。最終,除了擁有一個可以使用公眾使用的工作工具之外,您還將對Python包裝和開源貢獻有更多的了解。
學習成果
- 學會使用詩歌初始化並構建Python軟件包。
- 為多個指標開發和實施評估者類。
- 計算和評估諸如BLEU和Rouge分數之類的指標。
- 編寫和執行測試以確保代碼功能和魯棒性。
- 將Python軟件包構建並發布給PYPI,包括處理分銷和許可。
本文作為數據科學博客馬拉鬆的一部分發表。
目錄
- 用詩歌初始化包裹
- 設計核心評估員類
- 定義評估者類
- 實施評估指標
- 計算BLEU分數
- 測量胭脂分數
- 測試您的包裹
- 建立車輪
- 創建源和二進制分佈
- 發佈軟件包
- 常見問題
用詩歌初始化包裹
現在,我們已經有了可以使用詩歌初始化新的Python軟件包開始的要求。選擇詩歌的原因是:
- 它消除了管理多個虛擬環境的需求。
- 它支持所有類型的Python軟件包格式,包括本機和舊軟件包。
- 它即使通過``poetry.lock''文件確保了依賴項的正確版本。
- PYPI準備單個命令。
使用命令安裝詩歌幾乎所有操作系統:
curl -ssl https://install.python-poetry.org | python3-
然後,我們可以使用以下命令使用樣板來創建一個新的存儲庫。
詩歌新軟件包_name
您可以將ENTER按ENTER並將其保留為默認情況下的通用問題。然後,您將降落在類似的文件夾結構中。
詩歌 ├ - pyproject.toml ├├前 ├ - poetry_demo │└└前__init__.py └ - 測試 └ - __init__.py
儘管結構很好,但我們可以使用``src''佈局與官方Python文檔中所討論的`flat'佈局。我們將遵循博客其餘部分中的“ SRC”佈局。
設計核心評估員類
包裝的核心包含所有源代碼,以供電Python評估器軟件包。它包含了我們希望擁有的所有指標將繼承的基類。因此,這堂課必須是在施工期間必須最強大,最大的謹慎。此類將具有基本初始化所需的必要邏輯,一種從度量標準獲得結果的方法,以及一種容易消耗的用戶輸入的方法。
所有這些方法必須具有自己的範圍和適當的數據類型。更多地關注數據類型的原因是因為Python是動態鍵入的。因此,我們必須確保正確使用變量,因為這些變量僅在運行時會導致錯誤。因此,必須有測試套件來捕獲這些微小的錯誤,而不是使用專用的類型檢查編譯器。如果我們在Python中使用適當的鍵入,就很好。
定義評估者類
現在,我們看到了所有評估者類都必須包含的內容,以及為什麼我們最重要的是相同的實現。對於構建此類,我們正在繼承Python提供的ABC - 抽象基類。選擇此類的原因是它包含我們可以構建評估者基類的所有具體功能。現在,讓我們定義評估器類的輸入和輸出。
- 輸入:候選人[字符串列表],引用[字符串列表]
- 方法:``填充'(確保候選人和參考的長度相同),“ get_score”(計算評估指標的最終結果的方法)
#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克的精確得分。
優勢
- 更快的計算和簡單的計算。
- 廣泛使用且易於基準的結果。
缺點
- 不考慮翻譯的含義。
- 不考慮句子格式。
- 儘管它是雙語的,但它仍在非英語語言中掙扎。
- 當人類翻譯已經被象徵化時,很難計算得分。
#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(最長的常見子序列)。以同樣的方式,我們可以獲得精度和召回得分。這裡有一個略有優勢,它考慮了句子的分子性並產生相關結果。
優勢
- 通過比較n克和最長的共同子序列來評估自動文本摘要的質量非常有效。
- Rouge可以應用於任何語言,使其用於多語言文本分析和評估。
缺點
- Rouge專注於表面級文本匹配(N-Grams),這可能無法捕獲更深的語義含義和連貫性。
- 胭脂的準確性在很大程度上取決於參考摘要的質量和代表性
#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
詩歌構建
它在文件夾根部的`dist/`文件夾中生成了輪子和zip文件。
區 ├ - potage_name-0.0.0.1-py3-nony-any.whl └─pongage_name-0.0.0.1.tar.gz
等效Python命令Aliter正在安裝`build''軟件包,然後從文件夾的根部運行構建命令。
Python3 -M PIP安裝 - 升級構建 Python3 -m構建
創建源和二進制分佈
現在,讓我們展望創建源和二進制分佈。
源分佈(SDIST)
`sdist`是包含源代碼和元數據的軟件包的源分佈,以根據PIP或POETRY等外部工具構建。必須在“ bdist”之前構建`sdist`。如果“ PIP”找不到構建分佈,則源分佈充當後備。然後,它從中構建一個輪子,然後安裝包裝要求。
二元分佈(BDIST)
`bdist`包含需要移動到目標設備正確位置的必要文件。最佳支持的格式之一是`.whl'。要注意的是,它沒有編譯Python文件。
執照
在將包裹開放給外部世界時,始終建議擁有一個許可證,以顯示您的代碼可以重複使用的程度。在Github創建存儲庫時,我們可以選擇在此處選擇許可證。它創建一個具有使用選項的“許可證”文件。如果您不確定要選擇哪種許可證,那麼此外部資源是營救的理想選擇。
發佈軟件包
現在,我們已經有所有要求將包裹發布給外部世界的所有要求。因此,我們使用的是Publish命令,該命令將所有步驟用單個命令抽象。
test.pypi.org
如果您不確定包裹的執行方式或用於測試目的,建議將其發佈到test.pypi.org而不是直接上傳到官方存儲庫中。這使我們可以靈活地測試包裝,然後再與所有人共享包裹。
pypi.org
Python官方包裝包含Python社區發布的所有私人和公共軟件。對於作者和組織來說,通過官方的中央存儲庫共享包裹很有用。將您的軟件包發佈到世界上所需的只是這個單個命令。
詩歌出版-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中文網其他相關文章!

自2008年以來,我一直倡導這輛共享乘車麵包車,即後來被稱為“ Robotjitney”,後來是“ Vansit”,這是城市運輸的未來。 我預見這些車輛是21世紀的下一代過境解決方案Surpas

革新結帳體驗 Sam's Club的創新性“ Just Go”系統建立在其現有的AI驅動“掃描和GO”技術的基礎上,使會員可以在購物旅行期間通過Sam's Club應用程序進行掃描。

NVIDIA在GTC 2025上的增強可預測性和新產品陣容 NVIDIA是AI基礎架構的關鍵參與者,正在專注於提高其客戶的可預測性。 這涉及一致的產品交付,達到績效期望以及

Google的Gemma 2:強大,高效的語言模型 Google的Gemma語言模型家族以效率和性能而慶祝,隨著Gemma 2的到來而擴展。此最新版本包括兩種模型:270億個參數VER

這一領先的數據劇集以數據科學家,天體物理學家和TEDX演講者Kirk Borne博士為特色。 Borne博士是大數據,AI和機器學習的著名專家,為當前狀態和未來的Traje提供了寶貴的見解

這次演講中出現了一些非常有見地的觀點——關於工程學的背景信息,這些信息向我們展示了為什麼人工智能如此擅長支持人們的體育鍛煉。 我將從每位貢獻者的觀點中概括出一個核心思想,以展示三個設計方面,這些方面是我們探索人工智能在體育運動中應用的重要組成部分。 邊緣設備和原始個人數據 關於人工智能的這個想法實際上包含兩個組成部分——一個與我們放置大型語言模型的位置有關,另一個與我們人類語言和我們的生命體徵在實時測量時“表達”的語言之間的差異有關。 Alexander Amini 對跑步和網球都很了解,但他還

卡特彼勒(Caterpillar)的首席信息官兼高級副總裁傑米·恩格斯特(Jamie Engstrom)領導了一支由28個國家 /地區的2200多名IT專業人員組成的全球團隊。 在卡特彼勒(Caterpillar)工作了26年,其中包括她目前的四年半,Engst

Google Photos的新Ultra HDR工具:快速指南 使用Google Photos的新型Ultra HDR工具增強照片,將標準圖像轉換為充滿活力的高動態範圍傑作。對於社交媒體而言,此工具可提高任何照片的影響,


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

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