您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 > 

03 facebook大語言模型(大數據處理需要用到的九種編程語言)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-06-01 00:00:22【】1人已围观

简介lia是個高階、不可思議的快速和善于表達的語言,比起R要快的許多,比起Python又有潛力處理更具規模的數據,也很容易上手。“Julia會變的日漸重要,最終,在R和Python可以做的事情在Julia

lia是個高階、不可思議的快速和善于表達的語言,比起R要快的許多,比起Python又有潛力處理更具規模的數據,也很容易上手。

“Julia會變的日漸重要,最終,在R和Python可以做的事情在Julia也可以”。Butler是這么認為的。

Dris買粉絲ll說,它就是因為它年輕,才會有可能變成主流又有前景。

Java

Dris買粉絲ll說,Java和以Java為基礎的架構,是由硅谷里最大的幾家科技公司的核心所建立的,如果你從Twitter、Linkedin或是Facebook里觀察,你會發現Java對于所有數據工程基礎架構而言,是非常基礎的語言。

Java沒有和R和Python一樣好的可視化功能,它也不是統計建模的最佳工具,但是如果你需要建立一個龐大的系統、使用過去的原型,那Java通常會是你最基的選擇。

Hadoop and Hive

為了迎合大量數據處理的需求,以Java為基礎的工具群興起。Hadoop為處理一批批數據處理,發展以Java為基礎的架構關鍵;相較于其他處理工具,Hadoop慢許多,但是無比的準確和可被后端數據庫分析廣泛使用。和Hive搭配的很好,Hive是基于查詢的架構下,運作的相當好。

Scala

又是另一個以Java為基礎的語言,和Java很像,對任何想要進行大規模的機械學習或是建立高階的算法,Scala會是逐漸興起的工具。它是善于呈現且擁有建立可靠系統的能力。

“Java像是用鋼鐵建造的;Scala則是讓你能夠把它拿進窯烤然后變成鋼的黏土”Dris買粉絲ll說。

Kafka andStorm

說到當你需要快速的、實時的分析時,你會想到什么?Kafka將會是你的最佳伙伴。其實它已經出現五年有了,只是因為最近串流處理興起才變的越來越流行。

Kafka是從Linkedin內誕生的,是一個特別快速的查詢訊息系統。Kafka的缺點呢?就是它太快了,因此在實時操作時它會犯錯,有時候會漏掉東西。

魚與熊掌不可兼得,「必須要在準確度跟速度之間做一個選擇」,Dris買粉絲ll說。所以全部在硅谷的科技大公司都利用兩個管道:用Kafka或Storm處理實時數據,接下來打開Hadoop處理一批批處理數據系統,這樣聽起來有點麻煩又會有些慢,但好處是,它非常非常精準。

Storm是另一個從Scala寫出來的架構,在硅谷逐漸大幅增加它在串流處理的受歡迎程度,被Twitter并購,這并不意外,因為Twitter對快速事件處理有極大的興趣。

Matlab

Matlab可以說是歷久不衰,即使它標價很高;在非常特定的利基市場它使用的相當廣泛,包括密集的研究機器學習、信號處理、圖像辨識等等。

Octave

Octave和Matlab很像,除了它是免費的之外。然而,在學術信號處理的圈子,幾乎都會提到它。

GO

GO是另一個逐漸興起的新進者,從Google開發出來的,放寬點說,它是從C語言來的,并且在建立強大的基礎架構上,漸漸地成為Java和Python的競爭者。

這么多的軟件可以使用,但我認為不見得每個都一定要會才行,知道你的目標和方向是什么,就選定一個最適合的工具使用吧!可以幫助你提升效率又達到精準的結果。

淺談中文分詞與自然語言處理

最近出于興趣和需要,重新回顧中文分詞技術,期間有些心得,以及一些關于自然語言處理的淺薄之見,這里簡單分享一下。

首先, 中文分詞_百度百科 里面簡單介紹了其中主要的分詞算法以及相應的優缺點,包括字符匹配法、統計法以及理解法,其中字符匹配法和統計法比較流行且可以取到相對不錯的效果,而理解法則相對比較復雜高級,但是我認為這才是真正解決中文分詞任務的根本算法。

如今用于中文分詞的算法和模型雖算不上比比皆是,但也算是唾手可得,開源的如jieba、ltp、Hanlp等等,提供中文分詞服務的如騰訊云、百度大腦、訊飛AI平臺等,以及其他如Jiagu等。

其實這些平臺算法的差距并不算太大,分詞準確率基本上都是在80%以上,然而在98%以下(這里胡謅個數),在一些不太嚴格的應用場景下基本已經夠用了,只要挑一個在自己的業務場景下表現最好的即可。

在我看來,對于中文分詞這項任務而言,最關鍵最核心的其實并不是算法模型,這些都不是所謂的瓶頸,最重要的其實是高質量、大規模的詞典。對于字符匹配法而言,詞典是基礎,沒有詞典自然連分都分不出來;對于統計學習法而言,其效果一方面取決于算法和模型的選擇,一方面取決于其訓練數據的數量與質量,需要堆人力物力,比如找專門的標注公司標注數據等。但是就算是人標的數據,也難免有所錯誤遺漏,所以在有錯誤的訓練數據下,模型也不可能學的太好,同時訓練數據再大,也難以覆蓋全部語料,總會出現OOV,總有些句子會訓練不到,此時還強求模型可以做到“舉一反三”有些不切實際。

詞條中還提到了關于中文分詞的技術難點:歧義識別與新詞識別,關于歧義識別,上面并沒有提具體的解決思路,對于新詞識別而言,這又是自然語言處理領域很基礎并且很重要的點,可以參見一下我之前的文章: 《NLP基礎任務之新詞發現探索之路》 | lightsmile's Blog ,也有另一個思路,比如說爬取網上一些網站的相關條目,比如百度百科等。

簡單看了一下 jieba 、 ansj_seg 、 Jiagu 的分詞詞典,發現其中jieba的詞典質量最差,其中不少詞性都是錯誤的,Jiagu的詞典還算不錯,就是一些新詞不全,ansi_seg的沒有細看。

盡管這些工具在一些評測數據的結果可以達到90以上的成績,但是在我看來,還是不夠的,我覺得中文分詞這個基礎而又艱巨的任務還是要到99%以上才可以,否則分詞都分不對,那些在分詞基礎之上的任務更是不行,畢竟詞是基本的語義單元。

然而在現在深度學習盛行的潮流下,許多任務如文本分類、命名實體識別等并不一定需要依賴于分詞,直接基于字符(char)的Embedding也可以取得不錯的效果,并且也可以規避OOV(out of vocabulary words,未登錄詞)的問題。

但是深度學習,尤其是監督學習的很關鍵之處是得有大規模的高質量訓練數據,不然巧婦難為無米之炊,再好的模型也難以從垃圾中學到有用的知識。

話說回來,雖然自然語言處理是計算機科學與其他領域的交叉學科,深度學習、機器學習算是人工智能的一部分,然而許多時候往往十分依賴人工,而所謂的智能其實也不智能。

無論是計算機視覺領域里的圖像分類還是自然語言處理領域的文本分類,其任務都是學習一個從輸入 映射到輸出或者說標簽 的函數 ,具體來說就是將 表征為多維向量 ,將 表征為多維向量 ,然后讓 進入一個模型進行一系列的運算后得到一個 ,通過不斷地比較 和 的值并調整模型的參數使模型的運算結果 更為準確即更加貼近 (過程有點類似于 “猜數字”游戲 ),從而最終得到一個近似函數 ,我們就可以用來代替未知的 用于預測未來的樣本 ,得到它對應的 。

我們可以發現,以上學習算法確實可以得到能夠解決問題的模型,然而局限之處在于它也只能做這個任務,即對輸入 預測 ,別的啥也干不了。

關于模型的選擇和取舍,工業界和學術界的標準其實差別很大。學術界里有的論文是開創性的,而許多論文其實都是在原來基礎上小修小改,將最近的較新的思想和算法一堆,實驗結果比原來指標高一點又是一篇文章,程序運行占用多大內存、跑了多長時間這些都不是主要因素,也就是一切向指標看齊。

而工業界則更加看重的是性價比,不同的公司、不同的部門、不同的階段其主要矛盾不同。比如說Facebook之前出的fastText,盡管模型很簡單,最終效果可能比不上一些其他復雜的模型,但是其訓練速度超快、基于CPU就可以,并且可以很方便地對模型進行壓縮。許多時候,一些指標高低差幾個點并沒有那么關鍵,模型大小、訓練時間、預測時間在很多時候是比較關鍵的因素,除非由于甲方或客戶不滿意,或者家大業大,有的是資源,那么這時候效果和指標又成為主要矛盾,這時的優化可能要以一定的時間和空間為代價。

原來的自然語言處理各任務基本上都構建在分詞的基礎之上,粗略來說有一個 語法 、 語義 到 語用 的遞進的過程。這一層一層的任務雖然耦合的很好,但是

這種Pipline將會導致下層的錯誤都將會被積累到上層,其直接影響就是越到上層其準確率越低,甚至低到慘不忍睹的程度。然而在表示學習,尤其是深度學習崛起以后,其強大的特征學習能力,使得現在的模型多為end-to-end模型,其結果是一方面可以使得相關人員擺脫繁瑣的特征工程,可以將特征提取與組合設計的工作交給神經網絡模型去隱形完成,大大解放了生產力;令一方面可以將模型視為整體的一部分,即它的輸入直接對應原始輸入,它的輸出直接是我們想要的結果,有點直達病灶的意思,擺脫了原來Pipline錯誤累積的困境。

不過我個人看來成也end-to-end,敗也end-to-end,雖然簡化了任務,但是有點太過開門見山,得到的模型一個個都是彼此孤立的,各做各的事情,然而從整體論的角度來看它們都是整個自然語言處理系統的一部分,一些特征本來是可以共享,一些結果是彼此相互依賴的。這也又涉及到參數共享、多任務學習等概念,不細表。由于神經網絡的可解釋性較差,這使得模型更加像一個黑盒,訓練調參的過程更像是在煉丹,因為誰也不知道具體能煉出個什么玩意兒。

如下圖很形象地詮釋了這一現狀:

下面就深度學習下的自然語言處理四大任務進行簡單對比(都是個人淺薄之見,難免有不足之處,還望海涵)。自然語言處理四大任務分別是:序列標注、文本分類、句子關系、文本生成。

序列標注任務的原始語料是一連串的句子,經過標注后的語料格式大概如下(以命名實體識別為例):

我們可以發現,每一行的格式都是一個字符以及它所對應的類別,如 B_{ type} 、 O ,那么對于每一個字符模型需要預測的類別數量總計為 2*len(types) + 1 ,其中2是指 BI 這種標注規范, len(types) 指類型種類的數量(如人名、地名、機構名共三種),1是指 O 。可以發現模型需要擬合的函數的值域還是很小的,即 O(len(types)) 。

文本分類任務的標注語料格式大概如下(以情感極性分析為例):

每一行的格式都包含原始文本以及它所對應的類別(或者說標簽),我們可以發現模型需要預測的類別數量總計為 len(types) ,即類型種類的數量(以新聞語料分類,如 娛樂 、 軍事 、 科技 、 體育 等),可以發現模型需要擬合的函數的值域也是較小的,即 O(len(types)) 。

句子關系任務的標注語料格式大致如下(以語句相似度為例):

每一行都是兩個句子以及它們的關系( 1 代表語義相同, 0 代表語義不同),我們可以發現模型需要預測的類別數量總計為 len(relations) ,即關系種類的數量,可以發現模型需要擬合的函數的值域也是較小的,即 O(len(relations)) 。

文本生成任務的標注語料格式大致如下(以機器翻譯為例):

我們可以發現每一行都是源語言句子以及目標語言的對應翻譯。雖然此時模型和序列標注模型一樣

很赞哦!(9)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片

职业:程序员,设计师

现居:四川成都青白江区

工作室:小组

Email:[email protected]