beibeidesignwang
NLP:自然語言處理。一般是解決文本問題,如:情感分析、自動(dòng)摘要、問答系統(tǒng)等。我親身的感受是:數(shù)學(xué)要好,概率、高數(shù)。書籍推薦的話,是西瓜書和李航的概率統(tǒng)計(jì)。本科和研究生比較適合學(xué)
楓橋夜泊123123
NLP是人工智能的一個(gè)子領(lǐng)域,作為AI產(chǎn)品經(jīng)理,我們至少要知道NLP是什么,它能做什么事,這樣我們就能獲得一種解決問題的思維,將遇到的問題和方法連接起來。接下來我從“NLP是什么、能做什么、目前遇到的難題”三個(gè)方面來簡(jiǎn)單介紹下NLP。一.什么是NLP NLP,中文叫自然語言處理,簡(jiǎn)單來說,是一門讓計(jì)算機(jī)理解、分析以及生成自然語言的學(xué)科,大概的研究過程是:研制出可以表示語言能力的模型——提出各種方法來不斷提高語言模型的能力——根據(jù)語言模型來設(shè)計(jì)各種應(yīng)用系統(tǒng)——不斷地完善語言模型。 NLP理解自然語言目前有兩種處理方式: 1.基于規(guī)則來理解自然語言,即通過制定一些系列的規(guī)則來設(shè)計(jì)一個(gè)程序,然后通過這個(gè)程序來解決自然語言問題。輸入是規(guī)則,輸出是程序; 2.基于統(tǒng)計(jì)機(jī)器學(xué)習(xí)來理解自然語言,即用大量的數(shù)據(jù)通過機(jī)器學(xué)習(xí)算法來訓(xùn)練一個(gè)模型,然后通過這個(gè)模型來解決自然語言問題。輸入是數(shù)據(jù)和想要的結(jié)果,輸出是模型。 接下來簡(jiǎn)單介紹NLP常見的任務(wù)或應(yīng)用。 二.NLP能做什么: 1.分詞 中文可以分為字、詞、短語、句子、段落、文檔這幾個(gè)層面,如果要表達(dá)一個(gè)意思,很多時(shí)候通過一個(gè)字是無法表達(dá)的一個(gè)含義的,至少一個(gè)詞才能更好表達(dá)一個(gè)含義,所以一般情況是以“詞”為基本單位,用“詞”組合來表示“短語、、句子、段落、文檔”,至于計(jì)算機(jī)的輸入是短語或句子或段落還是文檔就要看具體的場(chǎng)景。由于中文不像英文那樣詞與詞之間用空格隔開,計(jì)算機(jī)無法用區(qū)分一個(gè)文本有哪些詞,所以要進(jìn)行分詞。目前分詞常用的方法有兩種: (1)基于規(guī)則:Heuristic(啟發(fā)式)、關(guān)鍵字表 (2)基于機(jī)器學(xué)習(xí)/統(tǒng)計(jì)方法:HMM(隱馬爾科夫模型)、CRF(條件隨機(jī)場(chǎng)) (注:在這里就不具體介紹方法的原理和實(shí)現(xiàn)過程了,大家感興趣,可以自行百度了解) 現(xiàn)狀分詞這項(xiàng)技術(shù)非常成熟了,分詞的準(zhǔn)確率已經(jīng)達(dá)到了可用的程度,也有很多第三方的庫供我們使用,比如jieba,所以一般在實(shí)際運(yùn)用中我們會(huì)采用“jieba+自定義詞典”的方式進(jìn)行分詞。 2.詞編碼 現(xiàn)在把“我喜歡你”這個(gè)文本通過分詞分成“我”、“喜歡”、“你”三個(gè)詞,此時(shí)把這三詞作為計(jì)算機(jī)的輸入,計(jì)算機(jī)是無法理解的,所以我們把這些詞轉(zhuǎn)換成計(jì)算機(jī)能理解的方式,即詞編碼,現(xiàn)在普遍是將詞表示為詞向量,來作為機(jī)器學(xué)習(xí)的輸入和表示空間。目前有兩種表示空間: (1)離散表示: 表示 假設(shè)我們的語料庫是: 我喜歡你你對(duì)我有感覺嗎 詞典{“我”:1,“喜歡”:2,“你”:3,“對(duì)“:4,“有”:5,“感覺”:6,“嗎”:7} 。一共有七個(gè)維度。 所以用One-hot表示: “我” ?:[1, 0, 0, 0, 0, 0, 0] “喜歡”:[0, 1, 0, 0, 0, 0, 0] ········ “嗎” ?:[0, 0, 0, 0, 0, 0, 1] 即一個(gè)詞用一個(gè)維度表示 of word:即將所有詞的向量直接加和作為一個(gè)文檔的向量。 所以“我 喜歡 你”就表示為:“[1, 1, 1, 0, 0, 0, 0]”。 C. Bi-gram和N-gram(語言模型):考慮了詞的順序,用詞組合表示一個(gè)詞向量。 這三種方式背后的思想是:不同的詞都代表著不同的維度,即一個(gè)“單位”(詞或詞組合等)為一個(gè)維度。 (2)分布式表示:word2vec,表示一個(gè)共現(xiàn)矩陣向量。其背后的思想是“一個(gè)詞可以用其附近的詞來表示”。 離散式或分布式的表示空間都有它們各自的優(yōu)缺點(diǎn),感興趣的讀者可以自行查資料了解,在這里不闡述了。這里有一個(gè)問題,當(dāng)語料庫越大時(shí),包含的詞就越多,那詞向量的維度就越大,這樣在空間儲(chǔ)存和計(jì)算量都會(huì)指數(shù)增大,所以工程師在處理詞向量時(shí),一般都會(huì)進(jìn)行降維,降維就意味著部分信息會(huì)丟失,從而影響最終的效果,所以作為產(chǎn)品經(jīng)理,跟進(jìn)項(xiàng)目開發(fā)時(shí),也需要了解工程師降維的合理性。 3.自動(dòng)文摘 自動(dòng)文摘是指在原始文本中自動(dòng)摘要出關(guān)鍵的文本或知識(shí)。為什么需要自動(dòng)文摘?有兩個(gè)主要的原因:(1)信息過載,我們需要在大量的文本中抽出最有用、最有價(jià)值的文本;(2)人工摘要的成本非常高。目前自動(dòng)文摘有兩種解決思路:第一種是extractive(抽取式),從原始文本中找到一些關(guān)鍵的句子,組成一篇摘要;另一種方式是abstractive(摘要式),計(jì)算機(jī)先理解原始文本的內(nèi)容,再用自己的意思將其表達(dá)出來。自動(dòng)文摘技術(shù)目前在新聞?lì)I(lǐng)域運(yùn)用的最廣,在信息過載的時(shí)代,用該技術(shù)幫助用戶用最短的時(shí)間了解最多、最有價(jià)值的新聞。此外,如何在非結(jié)構(gòu)的數(shù)據(jù)中提取結(jié)構(gòu)化的知識(shí)也將是問答機(jī)器人的一大方向。 4.實(shí)體識(shí)別 實(shí)體識(shí)別是指在一個(gè)文本中,識(shí)別出具體特定類別的實(shí)體,例如人名、地名、數(shù)值、專有名詞等。它在信息檢索、自動(dòng)問答、知識(shí)圖譜等領(lǐng)域運(yùn)用的比較多。實(shí)體識(shí)別的目的就是告訴計(jì)算機(jī)這個(gè)詞是屬于某類實(shí)體,有助于識(shí)別出用戶意圖。比如百度的知識(shí)圖譜: “周星馳多大了”識(shí)別出的實(shí)體是“周星馳”(明星實(shí)體),關(guān)系是“年齡”,搜索系統(tǒng)可以知道用戶提問的是某個(gè)明星的年齡,然后結(jié)合數(shù)據(jù)“周星馳 ?出生時(shí)間 ?1962年6月22日”以及當(dāng)前日期來推算出周星馳的年齡,并把結(jié)果直接把這個(gè)結(jié)果顯示給用戶,而不是顯示候選答案的鏈接。 此外,NLP常見的任務(wù)還有:主題識(shí)別、機(jī)器翻譯、文本分類、文本生成、情感分析、關(guān)鍵字提取、文本相似度等,以后有時(shí)間再為大家做簡(jiǎn)單介紹。 三.NLP目前存在的難點(diǎn) 1.語言不規(guī)范,靈活性高 自然語言并不規(guī)范,雖然可以找一些基本規(guī)則,但是自然語言太靈活了,同一個(gè)意思可以用多種方式來表達(dá),不管是基于規(guī)則來理解自然語言還是通過機(jī)器學(xué)習(xí)來學(xué)習(xí)數(shù)據(jù)內(nèi)在的特征都顯得比較困難。 2.錯(cuò)別字 在處理文本時(shí),我們會(huì)發(fā)現(xiàn)有大量的錯(cuò)別字,怎么樣讓計(jì)算機(jī)理解這些錯(cuò)別字想表達(dá)的真正含義,也是NLP的一大難點(diǎn) 3.新詞 我們處在互聯(lián)網(wǎng)高速發(fā)展的時(shí)代,網(wǎng)上每天都會(huì)產(chǎn)生大量的新詞,我們?nèi)绾慰焖俚匕l(fā)現(xiàn)這些新詞,并讓計(jì)算機(jī)理解也是NLP的難點(diǎn) 4.用詞向量來表示詞依然存在不足 上述,我們講到,我們是通過詞向量來讓計(jì)算機(jī)理解詞,但是詞向量所表示的空間,它是離散,而不是連續(xù),比如表示一些正面的詞:好,很好,棒,厲害等,在“好”到“很好”的詞向量空間中,你是不能找到一些詞,從“好”連續(xù)到“很好”,所以它是離散、不連續(xù)的,不連續(xù)最大的問題就是不可導(dǎo).計(jì)算機(jī)是處理可導(dǎo)的函數(shù)非常容易,不可導(dǎo)的話,計(jì)算量就上來了。當(dāng)然現(xiàn)在也有一些算法是計(jì)算詞向量做了連續(xù)近似化,但這肯定伴隨著信息的損失??傊~向量并不是最好的表示詞的方式,需要一種更好的數(shù)學(xué)語言來表示詞,當(dāng)然可能我們?nèi)祟惖淖匀徽Z言本身就是不連續(xù)的,或者人類無法創(chuàng)建出“連續(xù)”的自然語言。 小結(jié):通過上述的內(nèi)容,我們已經(jīng)大概知道了“NLP是什么、能做什么以及目前存在的難題”。作為人工智能產(chǎn)品經(jīng)理,了解NLP技術(shù)能夠提高我們自己的技術(shù)理解力,在理解行業(yè)需求、推進(jìn)項(xiàng)目開展都有非常大的幫助,其實(shí)這可以讓我們獲得是一種連接能力,將需求與工程師連接起來,將問題與解決方案連接起來。雖然NLP等人工智能技術(shù)存在很多不足,但我們需要調(diào)整好自己的心態(tài),人工智能應(yīng)用化才剛剛開始,必然是不夠完美的,不要成為批判者,而是成為人工智能時(shí)代的推進(jìn)者。 nt-sizf@?2W??
優(yōu)質(zhì)工程師考試問答知識(shí)庫