置身于大數(shù)據(jù)時(shí)代感局,組織和企業(yè)的不同系統(tǒng)胚想、流程和交易會(huì)產(chǎn)生的大量的數(shù)據(jù)琐凭,在管理這些數(shù)據(jù)時(shí)碰到了不少困難。而且柒昏,由于大數(shù)據(jù)對(duì)3V一詞(volume洞辣、variety躏仇、velocity)的模糊定義,大數(shù)據(jù)一詞也經(jīng)常錯(cuò)誤使用愁憔。有時(shí)候很難去量化什么樣的數(shù)據(jù)才是“大”數(shù)據(jù),一些人認(rèn)為數(shù)據(jù)庫里成10億條的記錄就是“大數(shù)據(jù)”孽拷,但是這個(gè)量級(jí)與傳感器或者社交媒體產(chǎn)生的pb級(jí)數(shù)據(jù)相比吨掌,又顯得很小∨。總而言之膜宋,普遍任務(wù)在所有組織中,無論是什么行業(yè)炼幔,都存在大量的非結(jié)構(gòu)化文本數(shù)據(jù)秋茫。例如,大量的數(shù)據(jù)可能以tweet乃秀、狀態(tài)消息学辱、散列標(biāo)簽、文章环形、博客策泣、wiki等形式出現(xiàn)在社交媒體上,另外抬吟,零售和電商也會(huì)生成大量的文本數(shù)據(jù)萨咕,如從新產(chǎn)品信息和到客戶評(píng)論和反饋產(chǎn)生的元數(shù)據(jù)信息,凡此種種火本,皆有可能危队。
與文本數(shù)據(jù)相關(guān)聯(lián)的挑戰(zhàn)主要有兩個(gè),第一個(gè)挑戰(zhàn)就是如何有效地存儲(chǔ)和管理這些數(shù)據(jù)钙畔。文本數(shù)據(jù)通常以非結(jié)構(gòu)化的形式存在茫陆,且不遵循任何特定的預(yù)設(shè)數(shù)據(jù)模型,也不符合關(guān)系型數(shù)據(jù)庫的模式(Schema)定義擎析。不過簿盅,基于語句的語義(semantics),可以存儲(chǔ)在基于SQL的數(shù)據(jù)管理系統(tǒng)中,如SQL Server或MySQL桨醋,也可以存儲(chǔ)在基于NoSQL的系統(tǒng)棚瘟,如MongoDB、CouchDB等喜最,最近以來偎蘸,也常存儲(chǔ)在基于信息檢索的數(shù)據(jù)存儲(chǔ)中,如ElasticSearch和Solr瞬内。
擁有大量文本數(shù)據(jù)集的組織通常將數(shù)據(jù)保存在數(shù)據(jù)倉庫和基于文件的系統(tǒng)當(dāng)中迷雪,如Hadoop,在Hadoop上可以將所有數(shù)據(jù)轉(zhuǎn)儲(chǔ)到HDFS(Hadoop分布式文件系統(tǒng))上按需訪問虫蝶,這也是數(shù)據(jù)湖的主要設(shè)計(jì)原則之一章咧。
第二個(gè)與分析文本數(shù)據(jù)相關(guān)的挑戰(zhàn)就是如何從中獲取有意義、有價(jià)值的信息秉扑。雖然現(xiàn)在我們擁有大量的機(jī)器學(xué)習(xí)和數(shù)據(jù)分析技術(shù)慧邮,但其中絕大多數(shù)都是針對(duì)數(shù)值數(shù)據(jù)進(jìn)行了優(yōu)化。所以舟陆,我們必須使用專門用于自然語言處理的技術(shù)误澳、轉(zhuǎn)換和模型來分析文本數(shù)據(jù),更具體來講秦躯,是自然語言忆谓。這與結(jié)構(gòu)化數(shù)據(jù)和普通編程語言的處理截然不同,后者很容易被機(jī)器理解踱承。請(qǐng)記住倡缠,文本數(shù)據(jù)是高度非結(jié)構(gòu)化的,因此它不遵循結(jié)構(gòu)化或規(guī)則的語法和模式茎活。因此昙沦,我們不能直接使用統(tǒng)計(jì)學(xué)或機(jī)器學(xué)習(xí)模型來分析這些數(shù)據(jù)。
非結(jié)構(gòu)化數(shù)據(jù)载荔,尤其是文本盾饮、圖像和視頻,蘊(yùn)含著豐富的信息懒熙。雖然丘损,這是座潛在的金礦,但是工扎,由于處理和分析該類數(shù)據(jù)固有的復(fù)雜性徘钥,處理這種非結(jié)構(gòu)化數(shù)據(jù)所要花費(fèi)的時(shí)間和精力,讓習(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ù)或算法之前笨忌,我們將會(huì)介紹一些與自然語言和非結(jié)構(gòu)化文本相關(guān)的核心概念和原則,這樣做的主要目的是讓你熟悉與自然語言處理和文本分析相關(guān)的概念和領(lǐng)域俱病。
本書主要使用Python編程易語言處理和分析文本數(shù)據(jù)官疲,作為修訂版,我們使用的是Python3.x亮隙,以及最新的開源框架用于分析途凫。本章的例子都非常簡單易懂,但是溢吻,如果您想在閱讀本章之前先了解Python维费、基本框架和架構(gòu),那么可以快速瀏覽第2章“使用Python處理自然語言”促王。
本章會(huì)介紹與自然語言犀盟、語言學(xué)、文本數(shù)據(jù)格式蝇狼、句法(syntax)阅畴、語義(semantics)和語法(grammar)相關(guān)的概念,所有這些都是NLP本身的主要組成部分迅耘,然后討論更高級(jí)的主題贱枣,如文本語料庫(text corpora)、自然語言處理颤专、深度學(xué)習(xí)和文本分析纽哥。本章展示的所有代碼示例都可以在本書的官方GitHub存儲(chǔ)庫中找到,請(qǐng)通過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ì)算機(jī)編程語言這種通過人工構(gòu)建和創(chuàng)造而來的語言,而是人類在自然使用和交流過程中逐漸演進(jìn)和發(fā)展而來的語言终娃。
不同的人類語言味廊,如英語、日語或梵語棠耕,都可以稱為自然語言余佛。自然語言可以用不同的方式進(jìn)行交流,包括說話窍荧、寫作辉巡,甚至是使用符號(hào)。人們對(duì)理解語言的起源蕊退、性質(zhì)和哲學(xué)一直充滿興致郊楣。我們將在下一節(jié)簡要進(jìn)行介紹。
1.1.2 語言哲學(xué)
現(xiàn)在我們知道了什么是自然語言瓤荔。但細(xì)想一下如下這些問題净蚤,語言的起源是什么?是什么讓英語成為“英語”茉贡? “水果”一詞的意義是如何產(chǎn)生的塞栅?人類如何使用語言交流?這些無疑都是些沉甸甸的哲學(xué)問題腔丧。
來看看語言的哲學(xué)層面放椰,主要包含如下四個(gè)問題:
? ? ? 語言的自然含義
? ? ? 語言的使用
? ? ? 語言認(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é)科魂拦。
句法毛仪、語言、語法和解析樹是解決這些問題的一些方法芯勘。語言的含義在兩個(gè)人通過語言交流時(shí)表現(xiàn)出來箱靴,通常是在說者和聽者之間。但從非語言的角度看荷愕,身體語言衡怀、先前的經(jīng)歷和心理影響等因素對(duì)語言的意義起著重要的作用,在這個(gè)過程中路翻,每個(gè)人都會(huì)以自己的方式解析和推論所蘊(yùn)含的含義狈癞,所以茄靠,也要考慮這些重要因素茂契。
語言的使用關(guān)注的是語言如何作為一個(gè)實(shí)體在各種場(chǎng)景中使用,以及如何用于人與人之間的交流慨绳。這包括分析說話以及敘說是所使用的語言掉冶,包括說話人的意圖、語調(diào)脐雪、內(nèi)容和表達(dá)時(shí)所涉及的動(dòng)作厌小。這在語言學(xué)上通常被稱為“言語行為”。對(duì)于一些更高級(jí)的概念战秋,如語言創(chuàng)造和人類的認(rèn)知活動(dòng)璧亚,如語言習(xí)得,一門研究語言的學(xué)習(xí)和使用的學(xué)科——同樣也倍受關(guān)注脂信。
語言認(rèn)知重點(diǎn)關(guān)注人類大腦的認(rèn)知功能是如何負(fù)責(zé)理解和解釋語言的癣蟋。我們來看說者和聽者這個(gè)典型案例,從消息傳遞到解析會(huì)涉及到多個(gè)環(huán)節(jié)狰闪。認(rèn)知研究就是試圖找出大腦是如何將特定的詞語組合成句子疯搅,并將其關(guān)聯(lián)成有意義的信息,以及交流雙方在使用語言交流時(shí)埋泵,語言與人思維過程之間的關(guān)系幔欧。
語言與現(xiàn)實(shí)的關(guān)系探討的是語言表達(dá)方面的真實(shí)性。語言哲學(xué)家們?cè)噲D衡量這些表達(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所示為人類感知沙發(fā)的真實(shí)案例。符號(hào)指的是用于描述物體的語言學(xué)符號(hào)屠缭,如單詞或其他可以引發(fā)人類思考的對(duì)象箍鼓。在這里,符號(hào)就是沙發(fā)呵曹,這讓人想到什么是沙發(fā)款咖,一件可以用來坐下或躺下放松的家具,一些讓我們感到舒適的東西奄喂。這些想法就是參考铐殃,通過這些參考,人們可以把它關(guān)聯(lián)到現(xiàn)實(shí)世界存在的某個(gè)物品上跨新,也就是所謂的被參考物富腊。上圖中,被參考物就是那個(gè)人所感知到的在自己面前的沙發(fā)域帐。
另外一個(gè)確定語言與現(xiàn)實(shí)之間關(guān)系的方法是“契合方向(direction of fit)”赘被,這里我們討論兩個(gè)主要方向。第一個(gè)契合的方向肖揣,“單詞到世界”所講的是場(chǎng)景是通過語言的使用來反映現(xiàn)實(shí)民假。這表示使用單詞來匹配或關(guān)聯(lián)現(xiàn)實(shí)世界中正在發(fā)生或已經(jīng)發(fā)生的事情×牛“埃菲爾鐵塔真的很大”這句話就是一個(gè)很好的例子羊异,它反映的是現(xiàn)實(shí)世界的真是存在。另外一個(gè)契合方向彤断,“世界到單詞”描述的是通過語言使用改變現(xiàn)實(shí)的場(chǎng)景野舶。例如,”我要去游泳“這句話瓦糟,通過要去游泳來改變現(xiàn)實(shí)筒愚,通過句子來交流所要表達(dá)的事實(shí)。圖1-2所示兩個(gè)契合 方向之間的關(guān)系:
基于從現(xiàn)實(shí)世界感知到的參照物菩浙,人可以以符號(hào)或單詞的形式形成一種表征巢掺,從而可以將同樣的表征傳達(dá)給另一個(gè)人。這就形成了一個(gè)基于所接收到的符號(hào)對(duì)現(xiàn)實(shí)世界的表征劲蜻,并循環(huán)往復(fù)陆淀。
【1.1未完待續(xù)】