微軟和Apache OpenNLP專案,在OpenNLP中整合ONNX Runtime,於Java服務和應用程式提供經加速的自然語言處理(NLP)推理運算,也就是說,除了OpenNLP自己的模型格式之外,現在透過添加ONNX Runtime,來支援包括ONNX以及其他模型格式。

Apache OpenNLP是一個Java自然語言處理開源機器學習函式庫,被許多知名開源應用程式使用,包括Apache Solr、Apache UIMA和Apache Lucene等,同時也被應用在許多商業專案和學術研究中。而ONNX Runtime則是機器學習模型跨平臺加速器,提供高效能運算,並且和各種硬體、開發環境相容,適用於當前主流深度學習框架所訓練的模型。

Apache OpenNLP的發展要追溯到2000年代初期,其運用最大熵值和基於感知器(Perceptron)的演算法,進行語句偵測、標記化(Tokenization)、語言偵測和命名實體偵測等自然語言處理任務。

雖然最大熵值和感知器模型訓練方法不需要用到GPU,額外成本相對較低,但是訓練出來的模型,卻無法與使用Transformer架構的現代化自然語言處理模型效能相比,Apache OpenNLP團隊提到,儘管有許多自然語言處理開發已經轉移到Python生態系,但是Java開發人員也還是需要各種強大的自然語言處理功能,畢竟Java仍然是熱門的程式語言之一。

在2022年初Apache OpenNLP 2.0專案發布,目的是要縮小OpenNLP與現代深度學習自然語言處理模型的差距。而在Apache OpenNLP中整合ONNX Runtime,便可以不需要重複模型訓練工作,就能達成此一目標。

在Apache OpenNLP 2.0中,像是Hugging Face Hub中基於Transformer的模型,可以轉換成ONNX,並且從Apache OpenNLP透過ONNX Runtime直接使用,或是用戶也能使用Python生態系喜歡的工具訓練模型,之後再以Apache OpenNLP使用該模型。

Apache OpenNLP不提供任何模型訓練和評估功能,所有的訓練和評估工作,都需要使用者以其他工具和框架完成,同時Apache OpenNLP也不會要求用戶,應用特定的工具和框架創建和評估模型。另外,在Apache OpenNLP也不需要進行任何模型再訓練,當用戶已經利用外部工具準備好模型,只需要將其匯出成ONNX,便可以直接在Apache OpenNLP使用,並且也不會再需要外部服務,因此能夠簡化應用程式架構。

除了文件分類和命名實體辨識等任務外,開發團隊提到,在之後的版本,會繼續對諸如詞性標註和語言偵測等自然語言處理功能,提供OpenNLP介面的ONNX Runtime實作。

熱門新聞

Advertisement