自然語言處理怎么最快入門?

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

本文整理自知乎上的一個問答,分享給正在學習自然然語言處理的朋友們!

一、自然語言處理是什么?

自然語言處理說白了,就是讓機器去幫助我們完成一些語言層面的事情,典型的比如:情感分析、文本摘要、自動問答等等。我們日常場景中比較常見到的類似Siri、微軟小冰之類的,這些的基礎都是自然語言處理,另外還有一些語音處理,這就暫且不表了。總之,你看到的機器與人利用語言交互,用機器模擬人腦閱讀,對話,評論等等這些的基礎都是自然語言處理的范疇之內。

二、自然語言處理怎么學?

自然語言處理的實際入門步驟來說,假如單單從應用來說,我覺得還是直接先從簡單的應用搞起更好一點,上來就是理論的話可能對一些人還是比較枯燥,我認為一個好的過程是:實踐-理論-實踐,先由實踐搞起,加深興趣,然后理論研究,深化理解,最后繼續實踐,知行合一。閑言少敘,下面說下自己的入門步驟:

1、分詞

針對中文而言(當然假如你處理英文,可直接跳過這一步),首先就是分詞的問題,因為中文相對于英文,并不是空格分隔的,另外進行自然語言處理的相關實踐,也不大可能直接一長段文本進行操作,所以分詞還是首當其中的。分詞的原理暫且不說(比如CRF、霍夫曼等等,有興趣可自己去了解),這里主要推薦一下常用到(Java)的幾個分詞工具:

(1)、HanLP?是一個中文自然語言處理的基礎包,它囊括了包含分詞在內的幾乎所有的自然語言處理涉及的基礎操作,同時工具包來說,分為data版和ptotable版,對于一般的分詞而言,protable完全就可以滿足要求。另外還有一些其他的操作,例如詞性識別,也是實際應用中比較多的。當然其他的類似關鍵詞提取,情感識別做個參考也就好了,實際還是要自己優化;

(2)、LTP?是哈工大的一個分詞組件,相較于HanLP而言,其包含的依存句法分析以及語義依存分析的方法,對于我們基于文本進行更高級一點的操作(比如提取句子的主語、謂語;行動關系等,另外基于此進行分詞優化實踐也有一定的提升),可以說是比較方便的;但是與此同時,LTP提供分詞的方式是利用http接口的方式,這就讓它在實際的應用中有那么一點落后,雖然它也提供了自搭服務的方式,但也逃不出請求接口。最后的最后,貌似現在已經和訊飛合作了,開放接口都需要申請,而且還不一定能用。。允悲。

(3)、jieba 說起分詞,就不得不提jieba,包括最基礎的python版本,然后還有衍生出來的java版、C#版等等,實際使用起來也是比較方便,當然對于java版而言,它沒有詞性的功能,這也是我在實際應用中使用表少的一個原因吧。

另外,分詞工具還有ansj、StanfordNLP中工具等等,用的不多也就不瞎說了。

2、關鍵詞提取

對于中文文本而言,分詞完畢,接下來我們要做的事情,大致逃不出那么幾件:關鍵詞提取、句子相似性、文本摘要等,這其中一個比較典型的應用就是關鍵詞提取。相應的實踐方式主要有以下幾種:

(1)、TF-IDF 是關鍵詞提取一個可以說是首先想到的解決方案,它說自己第二,沒人敢說第一。當然它的理論也是比較好理解的,歸結起來一句話:在一篇文本中那些不常出現(此處指的文本集)的詞在當前文本中大量出現,那它就是關鍵詞;TF、IDF也相應的就是兩個概念,想看理論,查查便知;具體到應用層級來說,對于大量文本,語料比較豐富的場景下,這種方式提取關鍵詞來說,確實也是比較方便和準確的,但在語料不足的情況下,可能也就just soso了。但是思想是最重要的,這也是我們入門的基礎。

(2)、TextRank 是基于Google的PageRank的一個應用于文本的一個關鍵詞提取算法,基于詞語窗口的思想,利用相互投票的方式,提取文本關鍵詞。TextRank有一個最大的好處就是不依賴額外文本,針對單篇文本,處理得當也就可以提取出看的過去的關鍵詞,簡單實用。關于其優化方式,比如改變詞語網絡窗口的大小,分詞的預過濾,詞性權重投票等等,都是一個不錯的方向,效果也還算顯著。其對應的實現都有開源的版本,GitHub上動動手就有了。

(3)、LDA 從嚴謹的角度而言,它并不是一個提取關鍵詞的方式,但是對于我們預先有一定分類的文本而言,利用LDA提取文本的中心詞,或者說針對類別的關鍵詞,某些情況下效果也是不錯的。具體到實現上,Java開源的有JGIbbLDA、當然python的scikit-learn,以及Spark Mllib中都包含了對應的LDA版本,可以一試。

具體到實際的使用場景,對于有大量語料,首推TF-IDF;對于單篇文本,當然還是TextRank;對于類別文本,LDA也不失為一種選擇。總之,看你實際應用需求。

3、詞向量

從關鍵詞提取直接跳轉到詞向量,感覺是一個比較大的跳躍,但實際而言,詞向量是我們后續進行機器學習或者深度學習的處理,因為機器處理的始終還是二進制,你不可能改變計算機底層的實現(當然說的是現在,沒準后來有人就真成了呢,我們當那是一個美好的愿景吧)。詞向量說白了,就是用向量的形式表示詞,這就牽涉到一個問題了,我們怎么把一個中文詞語轉化成一個向量呢。這里主要有以下幾種方式:

(1)、詞袋模型,顧名思義就是把所有的詞都放進一個袋子里,然后指定每個詞的位置。所以這樣生成的向量,就是長度等同于單詞總數,盡在詞對應的位置置1,其他位置均為0。這樣你也應該能想到,實際應用而言,不太現實。

(2)、HashTF,對應詞袋模型的困境,人們首先想到的就是怎么縮小向量的維度,同時表示相同的單詞呢,HashTF的基本思想也就是為了解決這個問題,利用Hash的思想,將大量的單詞映射到一個小維度向量中,來解讀維度爆炸的問題,當然有利有弊,仍然不能很好的解決詞語映射的問題。

(3)、Word2Vec是工業上比較常用的一個詞向量模型工具,也是實際應用中采用的。其思想包括CBOW和Skip-Gram,基本思想都是詞語和詞語周圍單詞間的一個共現關系,它在一定程度上考慮了語境和語義的影響,是一個可以實際使用的工具。

概括來說,在我們后期利用機器學習或者深度學習處理問題的時候,詞向量是我們必不可少的一步,word2vec也是我們可以考慮的一個比較不錯的選擇。

4、文本分類

文本分類是一個比較大的概念,具體到應用,其中包括了情感識別、敏感識別等,具體到實現方式,包括二類分類、多類別分類、多標簽分類等。就是為了把一組文本按照指定要求利用機器進行區分。具體到實現算法而言,不勝枚舉。。Spark Mllib中包含了大量的分類算法,可以進行實踐,這也是入門的一種比較快速的方式,先會后懂然后深入。

5、自動問答

自動問答是一個比較熱的概念,也是一個應用比較廣泛的自然語言處理案例,當前業界最高水平R-Net已經可以達到80%多的準確率,已經是一個比較了不起的成就了,但是實際操作起來,也還是有一定難度,我也在不斷摸索,暫時不瞎說了。

三、自然語言處理的深入

談到自然語言處理的深入,這個可以做的就比較多了,上面列舉的各個方面都與比較大的優化空間。但總體而言,最大的幾個問題在于分詞、詞向量的轉化以及文本特征的提取,這也是一定程序上困擾我們繼續提高的幾大阻礙。拿分詞來說,無論是基于詞典和算法的分詞還是目前基于深度學習的分詞方式,都只能說一定程度上進行分詞實現,想要達到人腦的分詞效果,實際上還是前路漫漫;詞向量的轉化在一定程序上也依賴于大量的語料,而我們也不可能在訓練模型時囊括所有的詞語,所有的語境,所有的文本,這些也都是不現實的,只能說時優化算法或者選擇一種更好的方式;文本特征的提取也是一個我們在后期進行學習過程中一個繞不過去的坎。總而言之,自然語言處理說簡單也簡單,說難也難,就看你想要達到什么樣的高度。

作者:鄭海倫

?

轉載于:https://my.oschina.net/u/3793864/blog/2962080

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281483.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281483.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281483.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

點分治題表

poj1741: tree bzoj2152: 聰聰可可 bzoj2599: [IOI2011]Race [SPOJ1825]免費旅行 bzoj4016: [FJOI2014]最短路徑樹問題 (字典序挺騷) 轉載于:https://www.cnblogs.com/TSHugh/p/8179241.html

dotnet-exec 0.8.0 released

dotnet-exec 0.8.0 releasedIntrodotnet-exec 是一個 C# 程序的小工具,可以用來運行一些簡單的 C# 程序而無需創建項目文件,而且可以自定義項目的入口方法,支持但不限于 Main 方法Install/Updatedotnet-exec 是一個 dotnet tool,可…

政策推動加速5G發展 全球統一標準成大勢所趨

2017IMT-2020(5G)峰會6月12日至13日在京召開。英特爾院士、通信與設備事業部無線標準首席技術專家吳耕對本網記者表示,未來5G技術不僅僅會以單個技術的身份去發展,它會和行業進行更多的融合。隨著行業的發展、平臺的發展、跨行業的融合,人們會…

普通高中段計算機學科知識,高中計算機學科的特點及教學內容淺探

摘要:為培養跨世紀接班人,發展和提高我國的計算機技術和水平,培養學生的計算機意識,普及計算機文化,提高科學文化素質,許多中學都相繼開設了計算機課程,計算機課程將逐步成為中小學的一門獨立的知識性與技能性相結合的基礎性學科.計算機課程的開設,豐富了基礎教育的…

Siamese Network理解

提起siamese network一般都會引用這兩篇文章: 《Learning a similarity metric discriminatively, with application to face verification》和《 Hamming Distance Metric Learning》。 本文主要通過論文《Learning a Similarity Metric Discriminatively, with A…

HashMap是如何工作的

2019獨角獸企業重金招聘Python工程師標準>>> 1 HashMap在JAVA中的怎么工作的? 基于Hash的原理 2 什么是哈希? 最簡單形式的 hash,是一種在對任何變量/對象的屬性應用任何公式/算法后, 為其分配唯一代碼的方法。 一個真…

英特爾布局5G 提供端到端的解決方案

錯失了移動互聯設備市場的英特爾,想在5G和物聯網上搶得先機。 在英特爾5G行業發展沙龍上,英特爾院士、通信與設備事業部無線標準首席技術專家吳耕表示,全球對5G產業有相當高的期待,下一代網的研發重心就是從以人為本的網向以物為本…

計算機網絡實驗進入實時模式,計算機網絡實驗1 PacketTrace基本使用.doc

計算機網絡實驗1 PacketTrace基本使用太原理工大學現代科技學院計算機通信網絡課程 實驗報告專業班級學 號姓 名指導教師 實驗名稱 同組人專業班級 學號 姓名 成績一、實驗目的掌握Cisco Packet Tracer 軟件的使用方法。二、實驗任務在Cisco Packet Tracer 中用HUB 組建局域網&…

adb不識別設備(手機)的若干情形及解決方法

1.執行adb root 提示adb: unable to connect for root: no devices/emulators found;執行adb devices ,List下無設備 》往往是數據線或USB插口問題,換根數據線或換個USB插口試試 2.執行adb devices List下提示 “592b925b no permissions (verify ud…

如何做到十五分鐘領略PowerBI的DAX精華及框架

有小伙伴問,如何最快速理解整套 DAX 精華體系,例如:15分鐘。這雖然是個不可能完成的任務,但在借助腦圖PPT的強大能力下,還是可以做到的。如果你從沒接觸過 DAX,但未來要學習 DAX,以下視頻值得看…

php html 轉xml,用PHP生成XML文檔(轉義字符)

用PHP生成XML文檔(轉義字符)我正在從PHP腳本生成XML文檔,并且需要轉義XML特殊字符。我知道應該轉義的字符列表; 但是正確的方法是什么?應該使用反斜杠(\)來轉義字符還是正確的方法?有內置的PHP函數可以為我處理此問題嗎&#xff1…

【例題 8-13 UVA - 11093】Just Finish it up

【鏈接】 我是鏈接,點我呀:) 【題意】 在這里輸入題意 【題解】 尺取法。 假設現在取[l..r]這一段。 然后發現累加的和小于0了。 那么方法只能是不走l..l1這一段了 即delta遞減(p[l]-q[l]); 直到delta>0為止。 某個時刻如果發現r1l 或者l1且rn 則合法。 如果發現l大于n了.…

springboot配置允許跨域訪問

2019獨角獸企業重金招聘Python工程師標準>>> 因springboot框架通常用于前后端分離項目,因此需配置后臺允許跨域訪問(具體看注釋),配置類如下,將該類加入工程中即可。 import org.springframework.context.a…

機器視覺傳感器選型,交互作用決定取舍

目前,如何選擇機器視覺傳感器在當代的應用可謂是越來越廣泛,如何選擇機器視覺傳感器是值得我們好好學習的,現在我們就深入了解如何選擇機器視覺傳感器。 相機是機器視覺系統的眼睛,而相機的心臟是圖像傳感器。傳感器的選擇取決于準…

大連交通大學計算機網絡,計算機網絡題庫(大連交通大學)chapter5.doc

計算機網絡題庫(大連交通大學)chapter5Chapter 5 The Link Layer and Local Area Network1.A ( ) protocol is used to move a datagram over an individual link.Aapplication-layerBtransport-layerCnetwork-layerDlink-layer2.The units of data exch…

使用qrcode類制作二維碼

<?phprequire_once ./phpqrcode/phpqrcode.php;/** 地址:http://phpqrcode.sourceforge.net/ 下載qrcode類* param string $url 要生成的鏈接* param bool $local 是否生成本地文件 * param string $logo 中間圖片地址 */ echo qrcode(https://www.cnblogs.co…

《Hadoop大明白》【1】Hadoop的核心組件

為什么80%的碼農都做不了架構師&#xff1f;>>> 本書適用于想對大數據平臺Hadoop有深入了解的程序員朋友&#xff0c;會幫助你以后在應用開發方面趟平一些坑。 1&#xff0c;Hadoop 是一個系列大數據組件構成的應用平臺&#xff0c;可由多個廉價機器搭建集群&#…

計算機專業學教育技術優勢,西南交通大學教育技術學(040110)專業介紹

一、學科概況“教育技術學”是教育學一級學科下的一個二級學科&#xff0c;教育技術學是教育學和計算機信息技術發展下新興的跨專業交叉性學科&#xff0c;也是一個理論與實踐相結合的應用學科。主要研究信息技術特別是計算機網絡技術、多媒體技術與教育技術的有效整合&#xf…

.NET7是如何優化Guid.Equals性能的?

簡介在之前的文章中&#xff0c;我們多次提到 Vector - SIMD 技術&#xff0c;也答應大家在后面分享更多.NET7 中優化的例子&#xff0c;今天就帶來一個使用 SIMD 優化Guid.Equals()方法性能的例子。為什么 Guid 能使用 SIMD 優化&#xff1f;首先就需要介紹一些背景知識&#…

go語言載入json的一個坑

問題簡介 go語言標準庫匯總內置了對 json 文件的處理&#xff0c;非常方便&#xff0c;最近在寫一個應用的時候&#xff0c;需要從 json 文件中載入 配置&#xff0c;由于是 go 新手&#xff0c;忽略一個細節&#xff0c;導致載入內容始終為空 代碼演示 代碼是最好的說明載體 p…