99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀R語言之文本挖掘--分詞
R語言之文本挖掘--分詞
2017-04-20
收藏

R語言文本挖掘--分詞

當前對文本挖掘的需求越來越多,而基于文本挖掘又可以實現(xiàn)輿情監(jiān)控、文本分類關(guān)聯(lián)分析和趨勢預測等。

本文主要使用李艦發(fā)布的中文分詞包Rwordseg。該包引用了@ansj開發(fā)的ansj中文分詞工具,基于中科院的ictclas中文分詞算法,無論是分詞準確度、自定義詞典的方便程度還是運行的效率都大大地超過了rmmseg4j。該包使用rJava調(diào)用Java分詞工具Ansj,因此需要進行rJava的設(shè)置才可以使用。

文中使用到Rwordseg包和tmcn包,這兩個包目前不在R的鏡像中,可以通過如下兩種方式獲得這兩個包。

1、通過R語言本身獲得,詳細步驟見下圖:

2、直接到R-Forge官網(wǎng)下載并安裝,下載地址如下:

https://r-forge.r-project.org/R/?group_id=1054

https://r-forge.r-project.org/R/?group_id=1571

應用:

本文分析的對象為一篇新聞,來源于環(huán)球網(wǎng)的《習近平出席中美企業(yè)家座談會》這篇文章,看看習大大這次訪美都有哪些動向?

本文主要對這篇文章做如下兩個工作:分詞和繪制文字云。

#讀取數(shù)據(jù)

news <- readLines('news.txt', encoding = 'UTF-8')

由于Rwordseg包中的segmentCN函數(shù)對某些詞無法準確分詞,需要自定義字典、指定人名識別及指定停止詞。

#首先將臺灣大學定義的字典導入到系統(tǒng)中,該字典中含有正面及負面的簡體詞和繁體詞共22173個。

data(NTUSD)

positive_simple <- NTUSD[[1]]

negtive_simple <- NTUSD[[2]]

positive_tradition <- NTUSD[[3]]

negtive_tradition <- NTUSD[[4]]

insertWords(positive_simple)

insertWords(negtive_simple)

insertWords(positive_tradition)

insertWords(negtive_tradition)

#其次將自定義的詞導入系統(tǒng)

dir <- c('中美','兩國','阿里巴巴','改革開放','騰訊','微軟',

'雙匯','亞馬遜','星巴克','企業(yè)家','發(fā)展中','中國夢')

insertWords(dir)

#再者還需要指定人名識別


發(fā)現(xiàn)默認情況下,segmentCN函數(shù)并沒有識別人名。

將人名識別設(shè)為TURE后,發(fā)現(xiàn)能夠?qū)⒚譁蚀_分割出來。

#最后為分詞函數(shù)segmentCN指定停止詞,這樣就不會把這些詞識別為有效詞

stopwords <- c('大','上','高','好','中','新','更','夢')

stopword <- stopwordsCN(stopwords = stopwords, useStopDic = TRUE)

當然這些準備工作是在探索文本內(nèi)容的基礎(chǔ)上完成的,這里只是想說明一下本文的思路。

使用segmentCN函數(shù)看一下分詞效果:

詞頻分析

繪制文字云


從圖中發(fā)現(xiàn),本次習總書記訪問美國,仍然強調(diào)的是中美之間的經(jīng)濟發(fā)展問題。

由于工作需要,自己剛開始研究文本挖掘,本文只是做了個文本的分詞,關(guān)于文本挖掘還有許多知識需要學習,例如文本的聚類、關(guān)聯(lián)規(guī)則、預測等。接下來的日子里將和文本挖掘扯上很大的關(guān)系啦。。。。

最后總結(jié)一下本文所涉及到的R包和函數(shù):

tm包

insertWords()

tmcn包

getWordFreq()

Rwordseg包

getOption()

segment.options()

stopwordsCN()

segmentCN()

wordcloud包

wordcloud()


數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }