Python文本分析--1自然語言處理基礎(chǔ)(一)

置身于大數(shù)據(jù)時代,組織和企業(yè)的不同系統(tǒng)、流程和交易會產(chǎn)生的大量的數(shù)據(jù),在管理這些數(shù)據(jù)時碰到了不少困難。而且,由于大數(shù)據(jù)對3V一詞(volume、variety、velocity)的模糊定義,大數(shù)據(jù)一詞也經(jīng)常錯誤使用。有時候很難去量化什么樣的數(shù)據(jù)才是“大”數(shù)據(jù),一些人認(rèn)為數(shù)據(jù)庫里成10億條的記錄就是“大數(shù)據(jù)”,但是這個量級與傳感器或者社交媒體產(chǎn)生的pb級數(shù)據(jù)相比,又顯得很小??偠灾?,普遍任務(wù)在所有組織中,無論是什么行業(yè),都存在大量的非結(jié)構(gòu)化文本數(shù)據(jù)。例如,大量的數(shù)據(jù)可能以tweet、狀態(tài)消息、散列標(biāo)簽、文章、博客、wiki等形式出現(xiàn)在社交媒體上,另外,零售和電商也會生成大量的文本數(shù)據(jù),如從新產(chǎn)品信息和到客戶評論和反饋產(chǎn)生的元數(shù)據(jù)信息,凡此種種,皆有可能。

與文本數(shù)據(jù)相關(guān)聯(lián)的挑戰(zhàn)主要有兩個,第一個挑戰(zhàn)就是如何有效地存儲和管理這些數(shù)據(jù)。文本數(shù)據(jù)通常以非結(jié)構(gòu)化的形式存在,且不遵循任何特定的預(yù)設(shè)數(shù)據(jù)模型,也不符合關(guān)系型數(shù)據(jù)庫的模式(Schema)定義。不過,基于語句的語義(semantics),可以存儲在基于SQL的數(shù)據(jù)管理系統(tǒng)中,如SQL Server或MySQL,也可以存儲在基于NoSQL的系統(tǒng),如MongoDB、CouchDB等,最近以來,也常存儲在基于信息檢索的數(shù)據(jù)存儲中,如ElasticSearch和Solr。

擁有大量文本數(shù)據(jù)集的組織通常將數(shù)據(jù)保存在數(shù)據(jù)倉庫和基于文件的系統(tǒng)當(dāng)中,如Hadoop,在Hadoop上可以將所有數(shù)據(jù)轉(zhuǎn)儲到HDFS(Hadoop分布式文件系統(tǒng))上按需訪問,這也是數(shù)據(jù)湖的主要設(shè)計原則之一。

第二個與分析文本數(shù)據(jù)相關(guān)的挑戰(zhàn)就是如何從中獲取有意義、有價值的信息。雖然現(xiàn)在我們擁有大量的機(jī)器學(xué)習(xí)和數(shù)據(jù)分析技術(shù),但其中絕大多數(shù)都是針對數(shù)值數(shù)據(jù)進(jìn)行了優(yōu)化。所以,我們必須使用專門用于自然語言處理的技術(shù)、轉(zhuǎn)換和模型來分析文本數(shù)據(jù),更具體來講,是自然語言。這與結(jié)構(gòu)化數(shù)據(jù)和普通編程語言的處理截然不同,后者很容易被機(jī)器理解。請記住,文本數(shù)據(jù)是高度非結(jié)構(gòu)化的,因此它不遵循結(jié)構(gòu)化或規(guī)則的語法和模式。因此,我們不能直接使用統(tǒng)計學(xué)或機(jī)器學(xué)習(xí)模型來分析這些數(shù)據(jù)。

非結(jié)構(gòu)化數(shù)據(jù),尤其是文本、圖像和視頻,蘊(yùn)含著豐富的信息。雖然,這是座潛在的金礦,但是,由于處理和分析該類數(shù)據(jù)固有的復(fù)雜性,處理這種非結(jié)構(gòu)化數(shù)據(jù)所要花費(fèi)的時間和精力,讓習(xí)慣處理結(jié)構(gòu)化數(shù)據(jù)的人常常望而卻步。自然語言處理(NLP,Natural Language Processing)就是利用相關(guān)的工具、技術(shù)和算法處理和和理解基于自然語言的數(shù)據(jù),這些數(shù)據(jù)通常包括文本、語音等非結(jié)構(gòu)化的數(shù)據(jù)。然而,在深入研究文本數(shù)據(jù)分析的特定技術(shù)或算法之前,我們將會介紹一些與自然語言和非結(jié)構(gòu)化文本相關(guān)的核心概念和原則,這樣做的主要目的是讓你熟悉與自然語言處理和文本分析相關(guān)的概念和領(lǐng)域。

本書主要使用Python編程易語言處理和分析文本數(shù)據(jù),作為修訂版,我們使用的是Python3.x,以及最新的開源框架用于分析。本章的例子都非常簡單易懂,但是,如果您想在閱讀本章之前先了解Python、基本框架和架構(gòu),那么可以快速瀏覽第2章“使用Python處理自然語言”。

本章會介紹與自然語言、語言學(xué)、文本數(shù)據(jù)格式、句法(syntax)、語義(semantics)和語法(grammar)相關(guān)的概念,所有這些都是NLP本身的主要組成部分,然后討論更高級的主題,如文本語料庫(text corpora)、自然語言處理、深度學(xué)習(xí)和文本分析。本章展示的所有代碼示例都可以在本書的官方GitHub存儲庫中找到,請通過https://github.com/dipanjanS/text-analytics-with-python/tree/master/New-Second-Edition訪問。

1.1 自然語言

文本數(shù)據(jù)雖然是非結(jié)構(gòu)化數(shù)據(jù),但通常屬于某種特定的語言,遵循特定的句法和語義。所有文本數(shù)據(jù),如簡單的單詞、句子或文檔,都與某種自然語言相關(guān)。在本節(jié)中,我們將討論自然語言的定義、語言哲學(xué)、語言習(xí)得以及語言的使用。

1.1.1 什么是自然語言

要理解文本分析和自然語言處理,首先要理解是什么讓語言變得“自然”。簡單講,自然語言不同于如計算機(jī)編程語言這種通過人工構(gòu)建和創(chuàng)造而來的語言,而是人類在自然使用和交流過程中逐漸演進(jìn)和發(fā)展而來的語言。

不同的人類語言,如英語、日語或梵語,都可以稱為自然語言。自然語言可以用不同的方式進(jìn)行交流,包括說話、寫作,甚至是使用符號。人們對理解語言的起源、性質(zhì)和哲學(xué)一直充滿興致。我們將在下一節(jié)簡要進(jìn)行介紹。

1.1.2 語言哲學(xué)

現(xiàn)在我們知道了什么是自然語言。但細(xì)想一下如下這些問題,語言的起源是什么?是什么讓英語成為“英語”? “水果”一詞的意義是如何產(chǎn)生的?人類如何使用語言交流?這些無疑都是些沉甸甸的哲學(xué)問題。

來看看語言的哲學(xué)層面,主要包含如下四個問題:

? ? ? 語言的自然含義

? ? ? 語言的使用

? ? ? 語言認(rèn)知(cognition)

? ? ? 語言和現(xiàn)實(shí)的關(guān)系

語言的含義本質(zhì)上與語言的語義及含義本身相關(guān),所以,語言哲學(xué)家或語言學(xué)家嘗試找出語言所蘊(yùn)含的含義確實(shí)是“意指”什么含義。例如,各種單詞和句子的含義是如何形成的,語言中的單詞是怎么成為同義詞的,是如何建立關(guān)聯(lián)關(guān)系的,等等。更重要的是,語言中的結(jié)構(gòu)和語法如何為語義鋪平道路,或者更具體地說,如何將具有自身含義的單詞組織在一起,形成更有意義的句子。語言學(xué)是研究語言的科學(xué),是專門研究這些問題的學(xué)科。

句法、語言、語法和解析樹是解決這些問題的一些方法。語言的含義在兩個人通過語言交流時表現(xiàn)出來,通常是在說者和聽者之間。但從非語言的角度看,身體語言、先前的經(jīng)歷和心理影響等因素對語言的意義起著重要的作用,在這個過程中,每個人都會以自己的方式解析和推論所蘊(yùn)含的含義,所以,也要考慮這些重要因素。

語言的使用關(guān)注的是語言如何作為一個實(shí)體在各種場景中使用,以及如何用于人與人之間的交流。這包括分析說話以及敘說是所使用的語言,包括說話人的意圖、語調(diào)、內(nèi)容和表達(dá)時所涉及的動作。這在語言學(xué)上通常被稱為“言語行為”。對于一些更高級的概念,如語言創(chuàng)造和人類的認(rèn)知活動,如語言習(xí)得,一門研究語言的學(xué)習(xí)和使用的學(xué)科——同樣也倍受關(guān)注。

語言認(rèn)知重點(diǎn)關(guān)注人類大腦的認(rèn)知功能是如何負(fù)責(zé)理解和解釋語言的。我們來看說者和聽者這個典型案例,從消息傳遞到解析會涉及到多個環(huán)節(jié)。認(rèn)知研究就是試圖找出大腦是如何將特定的詞語組合成句子,并將其關(guān)聯(lián)成有意義的信息,以及交流雙方在使用語言交流時,語言與人思維過程之間的關(guān)系。

語言與現(xiàn)實(shí)的關(guān)系探討的是語言表達(dá)方面的真實(shí)性。語言哲學(xué)家們試圖衡量這些表達(dá)的真實(shí)程度,以及它們與真實(shí)事件之間的關(guān)系。這種關(guān)系可以用幾種方式表達(dá),我們將探討其中的一些。

其中最著名的模型之一就是“參考三角形(Triangle of Reference)”,用來描述如何在聽者的思想中傳遞含義和想法,以及這些含義是如何關(guān)聯(lián)回現(xiàn)實(shí)世界實(shí)體或事實(shí)上的。參考三角形是在Charles Ogden和Ivor Richard編著的《表意的含義(The Meaning of Meaning)》一書中首先提及,如圖1-1所示:

圖1-1 參考三角形模型

參考三角形模型也就是所謂的表意的含義模型,圖1-1所示為人類感知沙發(fā)的真實(shí)案例。符號指的是用于描述物體的語言學(xué)符號,如單詞或其他可以引發(fā)人類思考的對象。在這里,符號就是沙發(fā),這讓人想到什么是沙發(fā),一件可以用來坐下或躺下放松的家具,一些讓我們感到舒適的東西。這些想法就是參考,通過這些參考,人們可以把它關(guān)聯(lián)到現(xiàn)實(shí)世界存在的某個物品上,也就是所謂的被參考物。上圖中,被參考物就是那個人所感知到的在自己面前的沙發(fā)。

另外一個確定語言與現(xiàn)實(shí)之間關(guān)系的方法是“契合方向(direction of fit)”,這里我們討論兩個主要方向。第一個契合的方向,“單詞到世界”所講的是場景是通過語言的使用來反映現(xiàn)實(shí)。這表示使用單詞來匹配或關(guān)聯(lián)現(xiàn)實(shí)世界中正在發(fā)生或已經(jīng)發(fā)生的事情?!鞍7茽栬F塔真的很大”這句話就是一個很好的例子,它反映的是現(xiàn)實(shí)世界的真是存在。另外一個契合方向,“世界到單詞”描述的是通過語言使用改變現(xiàn)實(shí)的場景。例如,”我要去游泳“這句話,通過要去游泳來改變現(xiàn)實(shí),通過句子來交流所要表達(dá)的事實(shí)。圖1-2所示兩個契合 方向之間的關(guān)系:

圖1-2 契合表示方法的方向

基于從現(xiàn)實(shí)世界感知到的參照物,人可以以符號或單詞的形式形成一種表征,從而可以將同樣的表征傳達(dá)給另一個人。這就形成了一個基于所接收到的符號對現(xiàn)實(shí)世界的表征,并循環(huán)往復(fù)。



【1.1未完待續(xù)】

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容