日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Spark 的情感分析

發(fā)布時間:2023/12/18 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spark 的情感分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?Spark 的情感分析

本文描述了基于 Spark 如何構(gòu)建一個文本情感分析系統(tǒng)。文章首先介紹文本情感分析基本概念和應(yīng)用場景,其次描述采用 Spark 作為分析的基礎(chǔ)技術(shù)平臺的原因和本文使用到技術(shù)組件,然后介紹基于 Spark 如何構(gòu)建文本情感分析系統(tǒng),最后提出幾種提高正確率的方法。

?

IBM 公司在 2015 年對外宣告了一個新的科技和商務(wù)時代的來臨—認(rèn)知時代。這個巨大的轉(zhuǎn)變,來自 IBM 對技術(shù)和商業(yè)領(lǐng)域的三個重要的洞察力[1]。第一,這個世界被數(shù)據(jù)所充斥。第二,這個世界通過代碼被改造。第三,認(rèn)知計算的出現(xiàn)。其中,認(rèn)知計算可以:

  • 通過感知與互動,理解非結(jié)構(gòu)化數(shù)據(jù)
  • 通過生成假設(shè)、評估、辯證、和建議來推理
  • 從專家培訓(xùn)、每一次互動、及持續(xù)取得數(shù)據(jù)中學(xué)習(xí)。

本文描述了一個基于 Spark 構(gòu)建的認(rèn)知系統(tǒng):文本情感分析系統(tǒng),分析和理解社交論壇的非結(jié)構(gòu)化文本數(shù)據(jù)。

基于 Spark 的文本情感分析

文本情感分析是指對具有人為主觀情感色彩文本材料進(jìn)行處理、分析和推理的過程。文本情感分析主要的應(yīng)用場景是對用戶關(guān)于某個主題的評論文本進(jìn)行處理和分析。比如,人們在打算去看一部電影之前,通常會去看豆瓣電影板塊上的用戶評論,再決定是否去看這部電影。另外一方面,電影制片人會通過對專業(yè)論壇上的用戶評論進(jìn)行分析,了解市場對于電影的總體反饋。本文中文本分析的對象為網(wǎng)絡(luò)短評,為非正式場合的短文本語料,在只考慮正面傾向和負(fù)面傾向的情況下,實現(xiàn)文本傾向性的分類。

文本情感分析主要涉及如下四個技術(shù)環(huán)節(jié)。

  • 收集數(shù)據(jù)集:本文中,以分析電影《瘋狂動物城》的用戶評論為例子,采集豆瓣上《瘋狂動物城》的用戶短評和短評評分作為樣本數(shù)據(jù),通過樣本數(shù)據(jù)訓(xùn)練分類模型來判斷微博上的一段話對該電影的情感傾向。
  • 設(shè)計文本的表示模型:讓機(jī)器“讀懂”文字,是文本情感分析的基礎(chǔ),而這首先要解決的問題是文本的表示模型。通常,文本的表示采用向量空間模型,也就是說采用向量表示文本。向量的特征項是模型中最小的單元,可以是一個文檔中的字、詞或短語,一個文檔的內(nèi)容可以看成是它的特征項組成的集合,而每一個特征項依據(jù)一定的原則都被賦予上權(quán)重。
  • 選擇文本的特征:當(dāng)可以把一個文檔映射成向量后,那如何選擇特征項和特征值呢?通常的做法是先進(jìn)行中文分詞(----本文使用 jieba 分詞工具),把用戶評論轉(zhuǎn)化成詞語后,可以使用 TF-IDF(Term Frequency–Inverse Document Frequency,詞頻-逆文檔頻率)算法來抽取特征,并計算出特征值。
  • 選擇分類模型:常用的分類算法有很多,如:決策樹、貝葉斯、人工神經(jīng)網(wǎng)絡(luò)、K-近鄰、支持向量機(jī)等等。在文本分類上使用較多的是貝葉斯和支持向量機(jī)。本文中,也以這兩種方法來進(jìn)行模型訓(xùn)練。
  • 為什么采用 Spark

    傳統(tǒng)的單節(jié)點計算已經(jīng)難以滿足用戶生成的海量數(shù)據(jù)的處理和分析的要求。比如,豆瓣網(wǎng)站上《瘋狂動物城》電影短評就有 111421 條,如果需要同時處理來自多個大型專業(yè)網(wǎng)站上所有電影的影評,單臺服務(wù)器的計算能力和存儲能力都很難滿足需求。這個時候需要考慮引入分布式計算的技術(shù),使得計算能力和存儲能力能夠線性擴(kuò)展。

    Spark 是一個快速的、通用的集群計算平臺,也是業(yè)內(nèi)非常流行的開源分布式技術(shù)。Spark 圍繞著 RDD(Resilient Distributed Dataset)彈性分布式數(shù)據(jù)集,擴(kuò)展了廣泛使用的 MapReduce[5]計算模型,相比起 Hadoop[6]的 MapReduce 計算框架,Spark 更為高效和靈活。Spark 主要的特點如下:

  • 內(nèi)存計算:能夠在內(nèi)存中進(jìn)行計算,它會優(yōu)先考慮使用各計算節(jié)點的內(nèi)存作為存儲,當(dāng)內(nèi)存不足時才會考慮使用磁盤,這樣極大的減少了磁盤 I/O,提高了效率。
  • 惰性求值:RDD 豐富的計算操作可以分為兩類,轉(zhuǎn)化操作和行動操作。而當(dāng)程序調(diào)用 RDD 的轉(zhuǎn)化操作(如數(shù)據(jù)的讀取、Map、Filter)的時候,Spark 并不會立刻開始計算,而是記下所需要執(zhí)行的操作,盡可能的將一些轉(zhuǎn)化操作合并,來減少計算數(shù)據(jù)的步驟,只有在調(diào)用行動操作(如獲取數(shù)據(jù)的行數(shù) Count)的時候才會開始讀入數(shù)據(jù),進(jìn)行轉(zhuǎn)化操作、行動操作,得到結(jié)果。
  • 接口豐富:Spark 提供 Scala,Java,Python,R 四種編程語言接口,可以滿足不同技術(shù)背景的工程人員的需求。并且還能和其他大數(shù)據(jù)工具密切配合。例如 Spark 可以運(yùn)行在 Hadoop 之上,能夠訪問所有支持 Hadoop 的數(shù)據(jù)源(如 HDFS、Cassandra、Hbase)。
  • 本文以 Spark 的 Python 接口為例,介紹如何構(gòu)建一個文本情感分析系統(tǒng)。作者采用 Python 3.5.0,Spark1.6.1 作為開發(fā)環(huán)境,使用 Jupyter Notebook[7]編寫代碼。Jupyter Notebook 是由 IPython Notebook 演化而來,是一套基于 Web 的交互環(huán)境,允許大家將代碼、代碼執(zhí)行、數(shù)學(xué)函數(shù)、富文檔、繪圖以及其它元素整合為單一文件。在運(yùn)行 pyspark 的之前,需要指定一下 pyspark 的運(yùn)行環(huán)境,如下所示:

    清單 1. 指定 pyspark 的 ipython notebook 運(yùn)行環(huán)境
    export PYSPARK_PYTHON=ipython3 PYSPARK_DRIVER_PYTHON_OPTS="notebook"

    接下里就可以在 Jupyter Notebook 里編寫代碼了。

    基于 Spark 如何構(gòu)建文本情感分析系統(tǒng)

    在本文第 1 章,介紹了文本情感分析主要涉及的四個技術(shù)環(huán)節(jié)。基于 Spark 構(gòu)建的文本分類系統(tǒng)的技術(shù)流程也是這樣的。在大規(guī)模的文本數(shù)據(jù)的情況下,有所不同的是文本的特征維度一般都是非常巨大的。試想一下所有的中文字、詞有多少,再算上其他的語言和所有能在互聯(lián)網(wǎng)上找到的文本,那么文本數(shù)據(jù)按照詞的維度就能輕松的超過數(shù)十萬、數(shù)百萬維,所以需要尋找一種可以處理極大維度文本數(shù)據(jù)的方法。

    在本文后續(xù)章節(jié)中,將依次按照基于 Spark 做數(shù)據(jù)預(yù)處理、文本建模、特征提取、訓(xùn)練分類模型、實現(xiàn)待輸入文本分類展開討論。系統(tǒng)的上下文關(guān)系圖如圖 1 所示,系統(tǒng)的功能架構(gòu)圖如圖 2 所示。

    圖 1. 基于 Spark 文本情感分析系統(tǒng)上下文
    圖 2. 基于 Spark 文本情感分析系統(tǒng)功能架構(gòu)圖

    爬取的數(shù)據(jù)說明

    為了說明文本分類系統(tǒng)的構(gòu)建過程,作者爬取了豆瓣網(wǎng)絡(luò)上《瘋狂動物城》的短評和評分(https://movie.douban.com/subject/25662329/comments)。示例數(shù)據(jù)如下所示:

    表 1. 示例數(shù)據(jù)
    評分評論文本
    5做冰棍那機(jī)智的不像話!!!全片最愛!!!想吃!!!
    5絕對的好片子裂墻推薦。實在是因為另一場滿了…隨手挑了這個片子。真是 5 分鐘一小笑 10 分鐘哄堂大笑。看那個又懶又慢樹獺簡直要錘墻了。旁邊法國妹子精辟的吐槽!看!這是我們法國人。我要憋到內(nèi)傷了。最后散場大家都靜坐著等著整首歌放完…五星好評。2016 年度十佳。
    5不要看任何影評,如果可以預(yù)告片都別看,直接買票就好了。你要啥這電影里有啥!
    3最精彩的動畫是用想象力拍出真實世界難以實現(xiàn)的故事,而不是用動物化填充一段如果是真人就普通到不能再普通的爛俗故事。笑料有,萌趣有,但更有的是莫名其妙的主旋律和政治正確,恐怕沒有評分所體現(xiàn)的那么出色。
    4換了新領(lǐng)導(dǎo)就是不一樣。迪士尼暗黑大電影,洛杉磯罪案片風(fēng)格和內(nèi)核。還真是動物烏托邦,美國針對有色人種,歐洲針對難民,天朝針對公知和五毛嗎?人設(shè)精彩,細(xì)節(jié)豐富,但要說創(chuàng)意超《頭腦特工隊》顯然就不實事求是了。
    ……………………

    表格中每一行為一條評論數(shù)據(jù),按照“評分,評論文本”排放,中間以制表符切分,評分范圍從 1 分到 5 分,這樣的數(shù)據(jù)共采集了 116567 條。

    數(shù)據(jù)預(yù)處理

    這一節(jié)本文是要說明用 Spark 是如何做數(shù)據(jù)清洗和抽取的。在該子系統(tǒng)中輸入為爬蟲的數(shù)據(jù),輸出為包含相同數(shù)量好評和壞評的 Saprk 彈性分布式數(shù)據(jù)集。

    Spark 數(shù)據(jù)處理主要是圍繞 RDD(Resilient Distributed Datasets) 彈性分布式數(shù)據(jù)集對象展開,本文首先將爬蟲數(shù)據(jù)載入到 Spark 系統(tǒng),抽象成為一個 RDD。可以用 distinct 方法對數(shù)據(jù)去重。數(shù)據(jù)轉(zhuǎn)換主要是用了 map 方法,它接受傳入的一個數(shù)據(jù)轉(zhuǎn)換的方法來按行執(zhí)行方法,從而達(dá)到轉(zhuǎn)換的操作它只需要用一個函數(shù)將輸入和輸出映射好,那么就能完成轉(zhuǎn)換。數(shù)據(jù)過濾使用 filter 方法,它能夠保留判斷條件為真的數(shù)據(jù)。可以用下面這個語句,將每一行文本變成一個 list,并且只保留長度為 2 的數(shù)據(jù)。

    清單 2. Spark 做數(shù)據(jù)預(yù)處理
    originData=sc.textFile('YOUR_FILE_PATH') originDistinctData=originData.distinct() rateDocument=originDistinctData.map(lambda line : line.split('\t')).\ filter(lambda line : len(line)==2)
    清單 3. 統(tǒng)計數(shù)據(jù)基本信息
    fiveRateDocument=rateDocument.filter(lambda line : int(line[0])==5) fiveRateDocument.count()

    本文得到,五分的數(shù)據(jù)有 30447 條,4 分、3 分、2 分、1 分的數(shù)據(jù)分別有 11711 條,123 條,70 條。打五分的毫無疑問是好評;考慮到不同人對于評分的不同偏好,對于打四分的數(shù)據(jù),本文無法得知它是好評還是壞評;對于打三分及三分以下的是壞評。

    下面就可以將帶有評分?jǐn)?shù)據(jù)轉(zhuǎn)化成為好評數(shù)據(jù)和壞評數(shù)據(jù),為了提高計算效率,本文將其重新分區(qū)。

    清單 4. 合并負(fù)樣本數(shù)據(jù)
    negRateDocument=oneRateDocument.union(twoRateDocument).\ union(threeRateDocument) negRateDocument.repartition(1)

    通過計算得到,好評和壞評分別有 30447 條和 2238 條,屬于非平衡樣本的機(jī)器模型訓(xùn)練。本文只取部分好評數(shù)據(jù),好評和壞評的數(shù)量一樣,這樣訓(xùn)練的正負(fù)樣本就是均衡的。最后把正負(fù)樣本放在一起,并把分類標(biāo)簽和文本分開,形成訓(xùn)練數(shù)據(jù)集

    清單 5. 生?成訓(xùn)練數(shù)?據(jù)集
    posRateDocument=sc.parallelize(fiveRateDocument.take(negRateDocument.count())).repartition(1) allRateDocument=negRateDocument.union(posRateDocument) allRateDocument.repartition(1) rate=allRateDocument.map(lambda s : ReduceRate(s[0])) document=allRateDocument.map(lambda s: s[1])

    文本的向量表示和文本特征提取

    這一節(jié)中,本文主要介紹如何做文本分詞,如何用 TF-IDF 算法抽取文本特征。將輸入的文本數(shù)據(jù)轉(zhuǎn)化為向量,讓計算能夠“讀懂”文本。

    解決文本分類問題,最重要的就是要讓文本可計算,用合適的方式來表示文本,其中的核心就是找到文本的特征和特征值。相比起英文,中文多了一個分詞的過程。本文首先用 jieba 分詞器將文本分詞,這樣每個詞都可以作為文本的一個特征。jieba 分詞器有三種模式的分詞:

  • 精確模式,試圖將句子最精確地切開,適合文本分析;
  • 全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;
  • 搜索引擎模式,在精確模式的基礎(chǔ)上,對長詞再次切分,提高召回率,適合用于搜索引擎分詞。
  • 這里本文用的是搜索引擎模式將每一句評論轉(zhuǎn)化為詞。

    清單 6. 分詞
    words=document.map(lambda w:"/".\ join(jieba.cut_for_search(w))).\ map(lambda line: line.split("/"))

    出于對大規(guī)模數(shù)據(jù)計算需求的考慮,spark 的詞頻計算是用特征哈希(HashingTF)來計算的。特征哈希是一種處理高維數(shù)據(jù)的技術(shù),經(jīng)常應(yīng)用在文本和分類數(shù)據(jù)集上。普通的 k 分之一特征編碼需要在一個向量中維護(hù)可能的特征值及其到下標(biāo)的映射,而每次構(gòu)建這個映射的過程本身就需要對數(shù)據(jù)集進(jìn)行一次遍歷。這并不適合上千萬甚至更多維度的特征處理。

    特征哈希是通過哈希方程對特征賦予向量下標(biāo)的,所以在不同情況下,同樣的特征就是能夠得到相同的向量下標(biāo),這樣就不需要維護(hù)一個特征值及其下表的向量。

    要使用特征哈希來處理文本,需要先實例化一個 HashingTF 對象,將詞轉(zhuǎn)化為詞頻,為了高效計算,本文將后面會重復(fù)使用的詞頻緩存。

    清單 7. 訓(xùn)練詞頻矩陣
    hashingTF = HashingTF() tf = hashingTF.transform(words) tf.cache()

    缺省情況下,實例化的 HashingTF 特征維數(shù) numFeatures 取了 220次方維,在 spark 的源碼中可以看到,HashingTF 的過程就是對每一個詞作了一次哈希并對特征維數(shù)取余得到該詞的位置,然后按照該詞出現(xiàn)的次數(shù)計次。所以就不用像傳統(tǒng)方法一樣每次維護(hù)一張詞表,運(yùn)用 HashingTF 就可以方便的得到該詞所對應(yīng)向量元素的位置。當(dāng)然這樣做的代價就是向量維數(shù)會非常大,好在 spark 可以支持稀疏向量,所以計算開銷并不大。

    圖 3. HashingTF 源碼

    詞頻是一種抽取特征的方法,但是它還有很多問題,比如在這句話中“這幾天的天氣真好,項目組的老師打算組織大家一起去春游。“的”相比于“項目組”更容易出現(xiàn)在人們的語言中,“的”和“項目組”同樣只出現(xiàn)一次,但是項目組對于這句話來說更重要。

    本文采用 TF-IDF 作為特征提取的方法,它的權(quán)重與特征項在文檔中出現(xiàn)的評率成正相關(guān),與在整個語料中出現(xiàn)該特征項的文檔成反相關(guān)。下面依據(jù) tf 來計算逆詞頻 idf,并計算出 TF-IDF

    清單 8. 計算 TF-IDF 矩陣
    idfModel = IDF().fit(tf) tfidf = idfModel.transform(tf)

    至此,本文就抽取出了文本的特征,并用向量去表示了文本。

    訓(xùn)練分類模型

    在這一小節(jié)中,本文介紹如何用 Spark 訓(xùn)練樸素貝葉斯分類模型,這一流程的輸入是文本的特征向量及已經(jīng)標(biāo)記好的分類標(biāo)簽。在這里本文得到的是分類模型及文本分類的正確率。

    現(xiàn)在,有了文本的特征項及特征值,也有了分類標(biāo)簽,需要用 RDD 的 zip 算子將這兩部分?jǐn)?shù)據(jù)連接起來,并將其轉(zhuǎn)化為分類模型里的 LabeledPoint 類型。并隨機(jī)將數(shù)據(jù)分為訓(xùn)練集和測試集,60%作為訓(xùn)練集,40%作為測試集。

    清單 9. 生成訓(xùn)練集和測試集
    zipped=rate.zip(tfidf) data=zipped.map(lambda line:LabeledPoint(line[0],line[1])) training, test = data.randomSplit([0.6, 0.4], seed = 0)

    本文用訓(xùn)練數(shù)據(jù)來訓(xùn)練貝葉斯模型,得到 NBmodel 模型來預(yù)測測試集的文本特征向量,并且計算出各個模型的正確率,這個模型的正確率為 74.83%。

    清單 10. 訓(xùn)練貝葉斯分類模型
    NBmodel = NaiveBayes.train(training, 1.0) predictionAndLabel = test.map(lambda p : (NBmodel.predict(p.features), p.label)) accuracy = 1.0 * predictionAndLabel.filter(lambda x: 1.0 \ if x[0] == x[1] else 0.0).count() / test.count()

    可以看出貝葉斯模型最后的預(yù)測模型并不高,但是基于本文采集的數(shù)據(jù)資源有限,特征提取過程比較簡單直接。所以還有很大的優(yōu)化空間,在第四章中,本文將介紹提高正確率的方法。

    分類未標(biāo)記文檔

    現(xiàn)在可以用本文訓(xùn)練好的模型來對未標(biāo)記文本分類,流程是獲取用戶輸入的評論,然后將輸入的評論文本分詞并轉(zhuǎn)化成 tf-idf 特征向量,然后用 3.4 節(jié)中訓(xùn)練好的分類模型來分類。

    清單 11. 分類未分類文本
    yourDocument=input("輸入待分類的評論:")yourwords="/".join(jieba.cut_for_search(yourDocument)).split("/") yourtf = hashingTF.transform(yourwords) yourtfidf=idfModel.transform(yourtf) print('NaiveBayes Model Predict:',NBmodel.predict(yourtfidf),'

    當(dāng)程序輸入待分類的評論:“這部電影沒有意思,劇情老套,真沒勁, 后悔來看了”

    程序輸出為“NaiveBayes Model Predict: 0.0”。

    當(dāng)程序輸入待分類的評論:“太精彩了講了一個關(guān)于夢想的故事劇情很反轉(zhuǎn)制作也很精良”

    程序輸出為“NaiveBayes Model Predict: 1.0”。

    至此,最為簡單的文本情感分類系統(tǒng)就構(gòu)建完整了。

    提高正確率的方法

    在第三章中,本文介紹了構(gòu)建文本分類系統(tǒng)的方法,但是正確率只有 74.83%,在這一章中,本文將講述文本分類正確率低的原因及改進(jìn)方法。

    文本分類正確率低的原因主要有:

  • 文本預(yù)處理比較粗糙,可以進(jìn)一步處理,比如去掉停用詞,去掉低頻詞;
  • 特征詞抽取信息太少,搜索引擎模式的分詞模式不如全分詞模式提供的特征項多;
  • 樸素貝葉斯模型比較簡單,可以用其他更為先進(jìn)的模型算法,如 SVM;
  • 數(shù)據(jù)資源太少,本文只能利用了好評、壞評論各 2238 條。數(shù)據(jù)量太少,由于爬蟲爬取的數(shù)據(jù),沒有進(jìn)行人工的進(jìn)一步的篩選,數(shù)據(jù)質(zhì)量也得不到 100%的保證。
  • 下面分別就這四個方面,本文進(jìn)一步深入的進(jìn)行處理,對模型進(jìn)行優(yōu)化。

    數(shù)據(jù)預(yù)處理中去掉停用詞

    停用詞是指出現(xiàn)在所有文檔中很多次的常用詞,比如“的”、“了”、“是”等,可以在提取特征的時候?qū)⑦@些噪聲去掉。

    首先需要統(tǒng)計一下詞頻,看哪些詞是使用最多的,然后定義一個停用詞表,在構(gòu)建向量前,將這些詞去掉。本文先進(jìn)行詞頻統(tǒng)計,查看最常用的詞是哪些。

    清單 12. 統(tǒng)計詞頻
    text=words.flatMap(lambda w:w) wordCounts = text.map(lambda word: (word, 1))\ .reduceByKey(lambda a, b: a+b).\ sortBy(lambda x: x[1],ascending=False) wordCounts.take(10)

    通過觀察,選擇出現(xiàn)次數(shù)比較多,但是對于文本情感表達(dá)沒有意義的詞,作為停用詞,構(gòu)建停用詞表。然后定義一個過濾函數(shù),如果該詞在停用詞表中那么需要將這個詞過濾掉。

    清單 13. 去掉停用詞

    stopwords = set([" ","的","了","是","就","吧",……])

    def filterStopWords(line):for i in line:if i in stopwords:line.remove(i) return line words=words.map(lambda w : filterStopWords(w))

    嘗試不用的分詞模式

    本文在分詞的時候使用的搜索引擎分詞模式,在這種模式下只抽取了重要的關(guān)鍵字,可能忽略了一些可能的特征詞。可以把分詞模式切換到全分詞模式,盡可能的不漏掉特征詞,同樣的模型訓(xùn)練,正確率會有 1%~2%的提升。

    清單 14. 全分詞模式分詞
    words=document.map(lambda w:"/".join(jieba.\ cut(w, cut_all=True))).\ map(lambda line: line.split("/"))

    更換訓(xùn)練模型方法

    在不進(jìn)行深入優(yōu)化的情況下,SVM 往往有著比其他分類模型更好的分類效果。下面在相同的條件下,運(yùn)用 SVM 模型訓(xùn)練,最后得到的正確率有 78.59%。

    清單 15. 用支持向量機(jī)訓(xùn)練分類模型
    SVMmodel = SVMWithSGD.train(training, iterations=100) predictionAndLabel = test.map(lambda p : (SVMmodel.predict(p.features), p.label)) accuracy = 1.0 * predictionAndLabel.filter(lambda x: 1.0 if x[0] == x[1] else 0.0).count() / test.count()

    訓(xùn)練數(shù)據(jù)的問題

    本文只是為了演示如何構(gòu)建這套系統(tǒng),所以爬取的數(shù)據(jù)量并不多,獲取的文本數(shù)據(jù)也沒有人工的進(jìn)一步核對其正確性。如果本文能夠有更豐富且權(quán)威的數(shù)據(jù)源,那么模型的正確率將會有較大的提高。

    作者對中國科學(xué)院大學(xué)的譚松波教授發(fā)布的酒店產(chǎn)品評論文本做了分類系統(tǒng)測試,該數(shù)據(jù)集是多數(shù)學(xué)者公認(rèn)并且使用的。用 SVM 訓(xùn)練的模型正確率有 87.59%。

    總結(jié)

    本文向讀者詳細(xì)的介紹了利用 Spark 構(gòu)建文本情感分類系統(tǒng)的過程,從數(shù)據(jù)的清洗、轉(zhuǎn)換,Spark 的 RDD 有 Filter、Map 方法可以輕松勝任;對于抽取文本特征,Spark 針對大規(guī)模數(shù)據(jù)的處理不僅在計算模型上有優(yōu)化,還做了算法的優(yōu)化,它利用哈希特征算法來實現(xiàn) TF-IDF,從而能夠支持上千萬維的模型訓(xùn)練;對于選擇分類模型,Spark 也實現(xiàn)好了常用的分類模型,調(diào)用起來非常方便。最后希望這篇文章可以對大家學(xué)習(xí) spark 和文本分類有幫助。

    轉(zhuǎn)載于:https://www.cnblogs.com/think90/p/6379705.html

    總結(jié)

    以上是生活随笔為你收集整理的Spark 的情感分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。