• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于大數(shù)據(jù)的微博輿情分析系統(tǒng)的設計與實現(xiàn)

      2023-06-10 06:42:26丘志敏李小帆李彥廷
      軟件工程 2023年6期
      關鍵詞:詞頻分詞輿情

      霍 英, 丘志敏, 李小帆, 李彥廷

      (1.韶關學院信息工程學院, 廣東 韶關 512005;2.韶關學院智能工程學院, 廣東 韶關 512005)

      1 引言(Introduction)

      網(wǎng)絡輿情分析包括對網(wǎng)絡信息進行采集、去重、抽取、分詞、索引、存儲和分析等一系列過程,是進行網(wǎng)絡輿論感知、監(jiān)控與引導的重要依據(jù)。如何規(guī)范大數(shù)據(jù)環(huán)境下網(wǎng)絡輿情信息的及時感知、收集、分析與監(jiān)管,并及時有效地引導輿情向良好的方向發(fā)展,如何實現(xiàn)“傳播力決定影響力,話語權決定主導權,時效性決定有效性,透明度決定公信度”的使命,是我國各級政府相關部門面臨的現(xiàn)實問題,也是亟待解決的重要課題[1-2]。基于此,在大數(shù)據(jù)環(huán)境下,本文給出了一種微博輿情分析系統(tǒng)的設計與實現(xiàn)方案,并對文本情感分析、計算文本相似度給出了具體實現(xiàn)算法,以實現(xiàn)對輿情信息的趨勢性預警及有效監(jiān)管。

      2 系統(tǒng)功能及流程(System functions and processes)

      2.1 系統(tǒng)功能

      本系統(tǒng)主要是通過采集微博用戶指定話題的相關數(shù)據(jù),并對數(shù)據(jù)進行初步加工后,通過業(yè)務系統(tǒng)展示出來,能清晰直觀地體現(xiàn)某熱點話題的傳播速度,以及公眾對該輿情事件的態(tài)度。

      本系統(tǒng)主要分成三個子層:數(shù)據(jù)采集層、數(shù)據(jù)處理層及數(shù)據(jù)展示層(業(yè)務子系統(tǒng)展示層)。其中,數(shù)據(jù)采集層主要通過官方提供的數(shù)據(jù)應用獲取接口(API)及使用自定義的網(wǎng)絡爬蟲[3-5]獲取網(wǎng)絡數(shù)據(jù);數(shù)據(jù)處理層主要完成中文的分詞、文本的清洗、標準化、特征提取、情感分析等工作;業(yè)務子系統(tǒng)展示層主要是面向平臺用戶,將數(shù)據(jù)處理層處理后的數(shù)據(jù)以圖表、文字的形式呈現(xiàn)給用戶,并完成與用戶的交互等功能。三個子層都可以當成一個獨立的系統(tǒng)使用,擁有良好的擴展性。系統(tǒng)整體運行流程如圖1所示,系統(tǒng)主要功能如圖2所示。

      圖1 系統(tǒng)運行圖Fig.1 System run diagram

      圖2 微博輿情分析平臺功能圖Fig.2 Functional map of microblog public opinion analysis platform

      2.2 系統(tǒng)流程

      系統(tǒng)采用SSM(Spring+SpringMVC+MyBatis)架構,共劃分為四個層次:View(表現(xiàn))層、Controller(控制)層、Service(業(yè)務邏輯)層、DAO(數(shù)據(jù)持久)層,如圖3所示,其流程主要分為以下幾個步驟。

      圖3 系統(tǒng)處理流程Fig.3 System processing flow

      (1)客戶端(用戶)發(fā)送請求到分發(fā)器。

      (2)分發(fā)器查詢Hander Mapping(處理器映射),并找到處理請求的控制器。

      (3)控制器調(diào)用業(yè)務邏輯層后,處理返回Model and View(模型和視圖對象)。

      (4)分發(fā)器負責查詢視圖解析器,并找到Model and View指定的視圖。

      (5)視圖把結果展示到客戶端。

      3 數(shù)據(jù)處理技術(Data processing technology)

      微博輿情分析中的數(shù)據(jù)處理主要采用以下技術:對獲取的原始文本進行中文分詞、文本清洗、情感分析等。

      3.1 中文分詞

      由于語言的差異,因此中英文在分詞的思路上有較大區(qū)別。多數(shù)情況下,英文通常使用空格就可以自動完成分詞任務,但中文的語法復雜,通常會通過第三方庫進行分詞操作。本系統(tǒng)采用第三方庫Jieba分詞器進行中文分詞工作[6]。Jieba分詞器工作的主要原理是基于統(tǒng)計詞典,首先建立一個前綴詞典,然后利用前綴詞典對句子展開切分,并根據(jù)所有切分的可能及切分位置構造一個有向無環(huán)圖,通過相關動態(tài)規(guī)劃算法計算出最大概率路徑,從而獲得最終切分形式。

      3.2 文本清洗

      經(jīng)過分詞之后獲取的文本中通常含有類似標點符號、停用詞等無用信息,因此需要對文本開展分步清洗工作。本系統(tǒng)使用正則表達式結合百度的停用詞庫進行文本清洗。

      正則表達式的基本原理如下[7]:定義文法G={Vn,Vt,S,P},其中Vn是一個非空有限的符號集合,它的元素稱為非終結符號;Vt也是一個非空有限符號集合,它的元素稱為終結符號,并且Vt∩Vn=?;S是文法G的起始符號,并且S∈Vn;P是一個非空有限集合,它的元素稱為產(chǎn)生式。所謂產(chǎn)生式,其形式為α→β,它的元素為形如α→β的產(chǎn)生式,其中α、β是由終結符和非終結符組成的符號串,并且α、β∈(Vt∪Vn)*,α≠ε。開始符S必須至少在某一產(chǎn)生式的α中出現(xiàn)一次。正則表達式是一種3型文法,它以整個字母表作為Vt集合。假設一個文法的產(chǎn)生式為{S→Sa;S→b;},那么對應的正則表達式為ba*。例如,等包含html標簽的文本,可使用“”表達式去除html標簽。

      去除停用詞的原理如下:對文本進行中文分詞操作后,將產(chǎn)生一個包含所有詞語的列表,通過逐個取出列表中詞語與停用詞庫里的詞語進行匹配,若相同則在列表中刪除該詞,從而實現(xiàn)去除停用詞。

      3.3 文本情感分析及評分生成規(guī)則

      文本情感分析主要是指對文本開展檢測、分析以及挖掘的過程,文本中可能包含有用戶的觀點、喜好、情感等主觀因素,通過情感分析可以歸納、推理文本和文本中各個人物所要表達的情感色彩。SnowNLP[8]是python編寫的一個類庫,它提供了情感傾向分析等功能,可以方便地處理中文文本內(nèi)容,本系統(tǒng)主要借助它實現(xiàn)文本情感分析和文本評分功能。通過人工預先把部份微博數(shù)據(jù)分為消極的和積極的兩種類別,以此為基礎,通過貝葉斯公式推斷接下來提取的微博數(shù)據(jù)屬于積極類別的概率。當某條微博數(shù)據(jù)有60%以上的概率屬于積極類,則認為該條微博屬于正面微博,并將該微博屬于積極類別的概率值減去0.6后的取值,作為其文本評分。

      3.4 敏感詞及敏感分數(shù)生成規(guī)則

      通過用戶提供的敏感詞典(*.txt文件),從每條微博中提取出敏感詞匯,存儲在業(yè)務數(shù)據(jù)庫中。通過自定義的詞庫種類,還可以提取出正負詞匯和關鍵詞等。敏感分數(shù)則由該微博中出現(xiàn)敏感詞的個數(shù)決定,出現(xiàn)一個敏感詞加一分,并存儲到業(yè)務數(shù)據(jù)庫中。

      4 核心算法(Core algorithm)

      4.1 SnowNLP文本情感分析

      SnowNLP是python編寫的一個類庫,它提供了情感傾向分析等功能,但因其使用的模型是通過影評訓練生成的,并不完全契合本系統(tǒng)的需求,因此需要重新訓練生成新的模型,并替換SnowNLP中原有模型。

      貝葉斯模型[9]是用于情感分類的基本模型。對于兩個類別的分類問題,其特征表示為w1,w2,…,wn,并且各個特征之間相互獨立,對于其中一個類別的貝葉斯模型可以表示如下:

      例如,有一句話text1:“我想出去玩?!?/p>

      text1的分詞結果為[″我″,″想″,″出去″,″玩″],A1,A2,A3,A4分別表示4個詞,C1表示積極類,C2表示消極類。

      計算每個單詞出現(xiàn)的頻率:則P(A1)=A1的詞頻/訓練集的單詞總數(shù),同理P(A2)=A2的詞頻/訓練集的單詞總數(shù)。

      計算C1情緒中單詞出現(xiàn)的概率:P(A1|C1)=C1中A1的詞頻/訓練集中屬于C1的單詞總數(shù)。P(A2|C1)=C1中A2的詞頻/訓練集中屬于C1的單詞總數(shù)。

      計算訓練集中C1類別出現(xiàn)的概率:P(C1)=C1的句子總數(shù)/訓練集的句子總數(shù)。

      則text1屬于C1類的概率:

      為了得到新的模型,需要重新對貝葉斯模型進行訓練,生成新的模型并替換原有模型,而訓練的實質(zhì)就是計算每個特征出現(xiàn)的頻次,當統(tǒng)計好訓練樣本中的total和每一個特征key的d[key]后,訓練過程就構建完成。這個過程的核心代碼如下:

      def train(self, data):

      # data 中既包含正樣本,也包含負樣本

      For d in data: # data中是list

      # d[1]:正/負樣本的標記

      C=d[1]

      If c not in self.d:

      self.d[c]=AddOneProb() # 類的初始化

      For word in d[0]: # 分詞結果中的每一個詞

      self.d[c].add(word, 1)

      self.total=sum(map(lambda x: self.d[x].getsum(), self.d.keys())) # 取得所有d中的和sum

      Class AddOneProb(BaseProb):

      Def __init__(self):

      self.d={}

      self.total=0.0

      self.none=1 # 默認所有的none為1

      # 這里如果value也等于1,則當key不存在時,累加的是2

      Def add(self, key, value):

      self.total +=value

      # 不存在該key時,需新建key

      If not self.exists(key):

      self.d[key]=1

      self.total +=1

      self.d[key] +=value

      Def classify(self, x):

      tmp={}

      For k in self.d:#正類和負類

      tmp[k]=log(self.d[k].getsum())-log(self.total)#正/負類的所有之和的log函數(shù)

      For word in x:

      tmp[k] +=log(self.d[k].freq(word)) #詞頻,不存在就為0

      ret, prob=0, 0

      For k in self.d:

      Now=0

      try:

      For otherk in self.d:

      Now +=exp(tmp[otherk]-tmp[k])

      Now=1/now

      Except OverflowError:

      Now 0

      If now >prob:

      ret, prob=k, now

      Return (ret, prob)

      4.2 計算文本相似度算法

      該算法主要集成在系統(tǒng)的推薦功能上,以初始文本作為質(zhì)心,計算與其距離最近的微博,即文本相似度最高的微博推送即可。由于計算機不能直接識別中文,因此需要先把文本轉(zhuǎn)化為向量的形式,其主要步驟可分為去除停用詞、計算TF-IDF(TF和IDF的乘積)的值,以此作為該文本向量的表現(xiàn)形式。其中,TF定義為某個詞或短語在一個文本中出現(xiàn)的頻率,當該詞頻率很高時,可認為其是該文本較為明顯的特征,有較好的區(qū)分效果;其計算公式可表示為TF=某詞出現(xiàn)的次數(shù)/該文檔中所有的詞的總數(shù)。

      IDF主要用于評價一個詞語的普遍性和重要性,它是以某文件數(shù)目除以包含該詞語的文件的數(shù)目,再以10為底,取對數(shù)計算得到。當包含該詞的文件數(shù)越少,便可認為該詞在文檔中的重要性越高,即IDF的值越大[10];其計算公式可表示如下:

      其中,D為總文檔數(shù),分母包含該詞語的文檔總數(shù)。

      本文所提算法的具體實現(xiàn)方案如下。

      (1)對每個文檔進行分詞,并去除停用詞。詳細流程如圖4所示:

      圖4 去除停用詞流程Fig.4 Process of removing stop words

      (2)計算每個文檔的TF即詞頻,假設IDF值均為2。通過圖4可得出文檔的詞頻為{“天氣”=0.2,“錯”=0.2,“想”=0.2,“出去”=0.2,“玩”=0.2}。因此,TF-IDF的可表示為{“天氣”=0.4,“錯”=0.4,“想”=0.4,“出去”=0.4,“玩”=0.4}。

      (3)以TF-IDF作為該文本向量的表現(xiàn)形式,即[0.4,0.4,0.4,0.4,0.4]為該文本向量化后的結果。

      (4)重復上述步驟,計算從數(shù)據(jù)庫中隨機查找出來的微博內(nèi)容的向量值,并以字典的形式保存,如{微博ID=[0.4,0.4,0.4,0.4,0.4]}。最終將形成一個i行j列的矩陣:

      (5)通過歐式距離計算每條微博到用戶當前查看的微博的距離,選取距離最近的前N條展示出來。歐式距離計算公式如下:

      其中,n為向量維數(shù),i和k為行號。

      5 系統(tǒng)實現(xiàn)效果(System implementation effect)

      目前,已利用該平臺對“西安奔馳女車主維權事件”的整個微博輿情事件發(fā)展全過程進行了追蹤與分析,對2020年3月至2020年6月新冠疫情發(fā)生期間的微博輿情熱點話題進行了趨勢預警,對2020年12月至2021年5月韶關地區(qū)各旅游景點的微博輿情進行了采集及預警處理。系統(tǒng)部分運行效果如圖5至圖7所示。圖5為輿情基本信息總覽,圖6為輿情數(shù)據(jù)采集來源及占比分析,圖7為各類事件隨時間發(fā)展的趨勢變化展示。在實際應用中,系統(tǒng)整體運行穩(wěn)定性較高,在單機日采集量約100萬條時,對數(shù)據(jù)分析的有效率可以達到90%以上,當并發(fā)采集的數(shù)據(jù)量過大時,數(shù)據(jù)分析的效率有所下降,研究人員后期將在降數(shù)據(jù)規(guī)模算法方面進行進一步的優(yōu)化。

      圖5 輿情基本信息Fig.5 Basic public opinion information

      圖6 輿情數(shù)據(jù)來源展示Fig.6 Display of public opinion data sources

      圖7 輿情趨勢變化展示Fig.7 Display of public opinion trend change

      6 結論(Conclusion)

      設計并實現(xiàn)了一個基于大數(shù)據(jù)的集輿情信息采集、去重、分析、處理及可視化的綜合平臺。該平臺主要對采集到的用戶指定話題的微博數(shù)據(jù)進行加工處理后,通過業(yè)務子系統(tǒng)展示出來,清晰直觀地體現(xiàn)微博某熱點話題的傳播速度,以及公眾對該輿情事件的態(tài)度。通過在相關輿情事件開展追蹤、分析、預警及處理的實際應用過程中,系統(tǒng)穩(wěn)定性較高,整體表現(xiàn)良好。

      猜你喜歡
      詞頻分詞輿情
      基于詞頻分析法的社區(qū)公園歸屬感營建要素研究
      園林科技(2021年3期)2022-01-19 03:17:48
      結巴分詞在詞云中的應用
      智富時代(2019年6期)2019-07-24 10:33:16
      值得重視的分詞的特殊用法
      輿情
      中國民政(2016年16期)2016-09-19 02:16:48
      輿情
      中國民政(2016年10期)2016-06-05 09:04:16
      輿情
      中國民政(2016年24期)2016-02-11 03:34:38
      詞頻,一部隱秘的歷史
      云存儲中支持詞頻和用戶喜好的密文模糊檢索
      以關鍵詞詞頻法透視《大學圖書館學報》學術研究特色
      圖書館論壇(2014年8期)2014-03-11 18:47:59
      微博的輿情控制與言論自由
      柳林县| 安乡县| 云南省| 西安市| 镇宁| 梁平县| 咸阳市| 平塘县| 叙永县| 东丰县| 泰州市| 宁河县| 永清县| 黄大仙区| 阿拉善左旗| 宣城市| 二连浩特市| 明水县| 安新县| 定西市| 石阡县| 吴忠市| 易门县| 延安市| 铁岭市| 平泉县| 芦山县| 砚山县| 莫力| 上林县| 玉环县| 渭南市| 化隆| 华容县| 内丘县| 高台县| 松阳县| 兴国县| 耿马| 于都县| 萍乡市|