1. 程式人生 > >快速了解掌握中文自然語言處理

快速了解掌握中文自然語言處理

自然語言處理 Hadoop

NLP是什麽
在計算機領域, NLP(Natural Language Processing),也就是人們常說的「自然語言處理」,就是研究如何讓計算機讀懂人類語言。這包括,既要能讓計算機理解自然語言文本的意義,也能以自然語言文本來表達給定的深層的意圖、思想等。所以,這項技術往往體現了人工智能的最高任務與境界,也就是說,只有當計算機具備了理解自然語言的能力時,機器才算實現了真正的智能。但是,由於中文詞語是由漢字千變萬化組成的,所以中文領域的「自然語言處理」顯得尤為復雜。因此,這一領域的研究將涉及自然語言,即人們日常使用的語言,所以它與語言學的研究有著密切的聯系,但又有重要的區別。自然語言處理並不是一般地研究自然語言,而在於研制能有效地實現自然語言通信的計算機系統,特別是其中的軟件系統。因而它是計算機科學的一部分。自然語言處理(NLP)是計算機科學,人工智能,語言學關註計算機和人類(自然)語言之間的相互作用的領域。
專註於「自然語言處理」領域多年, NLP 的技術和服務一直伴隨著大快的發展而不斷進步。從自動翻譯、情報檢索、自動標引、自動文摘、自動寫故事小說等領域,都可以用我們的工具類DKNLPBase來處理,NLP 技術已不再單純的停留在概念層面,而是逐步滲透並成功應用在大快的各個領域中。技術分享圖片

為什麽需要NLP
舉個例子,日常生活中,我們總會碰到一些不知道怎麽讀的生僻字, 這時往往就會去搜索引擎搜索,比如“4 個又念什麽”。我們發現,搜索結果一定是向你展示“ 4 個又組成的字”是怎樣的,並一旁附上拼音及註釋等,而不是“ 4 個又念什麽”這幾個孤零零的詞或者其表面的匹配結果。技術分享圖片

這其實就是NLP技術的一個體現了。通過這項技術,人們不必花費大量心力去學習和了解難懂的計算機語言,而是用自己最習慣的語言來使用計算機,並進一步了解這背後的意義。

NLP究竟能用來幹什麽
大快NLP模塊是大快大數據一體化平臺的一個組件,用戶引用該組件可以有效進行自然語言的處理工作,如進行文章摘要,語義判別以及提高內容檢索的精確度和有效性。
自然語言處理如今不僅作為人工智能核心課題來研究,而且也作為新一代計算機的核心課題來研究。從知識產業角度看,專家系統,數據庫,知識庫,計算機輔助設計系統(CAD)、計算機輔助教學系統(CAI)、計算機輔助決策系統,辦公室自動化管理系統,智能機器人等,都需要用自然語言處理,具有篇章理解能力的自然語言理解系統可用於機器自動翻譯、情報檢索、自動標引、自動文摘、自動寫故事小說等領域,都可以用我們的工具類DKNLPBase來處理。
標準分詞
方法簽名:List<Term> StandardTokenizer.segment(String txt);
返回:分詞列表。
簽名參數說明:txt:要分詞的語句。
範例:下例驗證一段話第5個分詞是阿法狗。
public void testSegment() throws Exception
????{
????????String text = "商品和服務";
????????List<Term> termList = DKNLPBase.segment(text);
????????assertEquals("商品", termList.get(0).word);
???assertEquals("和", termList.get(1).word);
????????assertEquals("服務", termList.get(2).word);
????????text = "柯傑解說“李世石VS阿法狗第二局” 結局竟是這樣";
????????termList = DKNLPBase.segment(text);
????????assertEquals("阿法狗", termList.get(5).word); // 能夠識別"阿法狗"
}
關鍵詞提取
方法簽名:List<String> extractKeyword(String txt,int keySum);
返回:關鍵詞列表.
簽名參數說明:txt:要提取關鍵詞的語句,keySum要提取關鍵詞的數量
範例:給出一段話提取一個關鍵詞是“程序員”。
public void testExtractKeyword() throws Exception
????{
????????String content = "程序員(英文Programmer)是從事程序開發、維護的專業人員。" +
???????????????"一般將程序員分為程序設計人員和程序編碼人員," +
???????????????"但兩者的界限並不非常清楚,特別是在中國。" +
???????????????"軟件從業人員分為初級程序員、高級程序員、系統" +
???????????????"分析員和項目經理四大類。";
????????List<String> keyword = DKNLPBase.extractKeyword(content, 1);
????????assertEquals(1, keyword.size());
????????assertEquals("程序員", keyword.get(0));
????}
短語提取
方法簽名:List<String> extractPhrase(String txt, int phSum);
返回:短語
簽名參數說明:txt:要提取短語的語句,phSum短語數量
範例:給出一段文字,能代表文章的五個短語,第一個短語是算法工程師。技術分享圖片

NLP在最近幾年取得了很好的進展,但還有許多的難題需要去解決,所以大快在積極的嘗試,不過也正是這樣有挑戰的問題,才能讓更多有才華的人投身到大快來推動它的發展。

快速了解掌握中文自然語言處理