基于機器學習的情緒分析研究_第1頁
基于機器學習的情緒分析研究_第2頁
基于機器學習的情緒分析研究_第3頁
基于機器學習的情緒分析研究_第4頁
基于機器學習的情緒分析研究_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

基于機器學習的情緒分析研究——智能模型設(shè)計和實現(xiàn)摘要互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展使得社交平臺逐漸成為熱點事件中社會情感的樞紐。社會熱點事件的輿論監(jiān)管的其中一個重要環(huán)節(jié)就是能夠準確分析民眾的社會情緒。本文旨在探索可以基于文本大數(shù)據(jù)徹底分析民眾對熱點事件的社會情緒的模型和方法。先是從社交平臺上借助文本大數(shù)據(jù)、對數(shù)據(jù)進行提前處理以及用python自然語言處理包等方法建立能夠分析社會情緒的模型,其次找到最佳的機器學習算法,再次用機器學習的方法對模型進行訓練,獲得一個情感分類器。最后用熱點事件“冠狀病毒”的真實數(shù)據(jù)在情感分類器上進行社會情緒分析驗證,證明了模型和方法的有效性。

關(guān)鍵詞:網(wǎng)絡(luò)文本大數(shù)據(jù);機器學習;情緒分類器;社會情緒分析;Researchonemotionanalysisbasedonmachinelearning——DesignandimplementationofintelligentmodelAbstractTherapiddevelopmentofInternettechnologymakessocialplatformsgraduallybecomethehubofsocialemotioninhotevents.Oneoftheimportantaspectsofpublicopinionsupervisionofsocialhoteventsistheabilitytoaccuratelyanalyzethepublic'ssocialsentiment.Thispaperaimstoexplorethemodelandmethodthatcanthoroughlyanalysethepeople’ssocialemotionsofhoteventsbasedontextbigdata.Firstly,thewriterbuiltupthemodelofsocialemotionsanalysisbyvirtueoftextbigdatafromthesocialplatforms,datapreprocessingandtheuseofPythonNaturalLangugeToolkitandsoon.Secondly,utilizedthebestmachinelearningalgorithmandthentrainedthemodelbymachinelearningmethodtoobtainanemotionclassifier.Finally,therealdataofthehotevent"coronavirus"wasusedtoanalyzethesocialemotionsontheemotionclassifier,whichprovedthevalidityofthemodelandmethod.Keywords:Webtextbigdata、machinelearning、sentimentclassifier、socialsentimentanalysis;目錄TOC\o"1-3"\h\u10113誠信承諾書 前言:1.1設(shè)計目的及意義近來,社交媒體和電子商務平臺發(fā)展迅速,Twitter、微博、MSN、微信等社交網(wǎng)絡(luò)正逐漸地改變著人們的生活,越來越多的人習慣于通過網(wǎng)絡(luò)平臺表達自己的態(tài)度和情感,這些網(wǎng)絡(luò)文本是客戶流露的真實情感。對網(wǎng)絡(luò)文本大數(shù)據(jù)熱門事件的情緒進行分析可以使人們獲得更多關(guān)于內(nèi)心世界的知識,因此,從這些文本信息中自動準確的識別客戶的情感類別,對政府輿情監(jiān)控、企業(yè)管理與決策來說是一個很大的支持,它也成為學術(shù)界近來持續(xù)關(guān)注的研究熱點,同時極大地促進了情緒分析技術(shù)的發(fā)展。1.2本課題國內(nèi)外現(xiàn)狀及存在問題文本情感分析也可以說是挖掘文本意見的方法。簡而言之,它是分析,處理,總結(jié)和推斷具有情感色彩的主觀文本的過程[1]。目前海內(nèi)外關(guān)于文本情緒分析研究的方向主要有兩個:一個是判斷主觀信息的細粒度,另一個是判斷文本的主客觀性。前者強調(diào)將情感詞作為中心去分析文本級的情緒傾向,而文本的情緒傾向是通過貶值情感詞的線性加權(quán)值來實現(xiàn)的。熊德蘭等人[2]基于HowNet語義詞典中詞匯語義相似度的計算方法。意在基于語義詞典,充分想到詞語組成在一起之后語義可能改變,直接影響到情感褒貶判斷的偏向結(jié)果,于是用各個詞語義進行權(quán)重計算結(jié)果來判斷從而避免受影響。該方式基于語義詞集,能很精確地預測情感傾向,但缺點是操作起來復雜且在很大程度上取決于詞匯層次分類算法的精確度。則此方法顯然對大量的文本數(shù)據(jù)處理是不合適。為了處理大量數(shù)據(jù),研究人員介紹了用于情感分析的機器學習方法,例如K最近鄰,最大熵模型,樸素貝葉斯和支持向量機(SVM)方法[3]。雖然以語義詞集為基礎(chǔ)的語義加權(quán)分類效果比機器學習方法較好,但勝在后者能夠更輕易地去分析處理大量的文本數(shù)據(jù)。例如徐軍等人[4]利用機器學習方法對新聞評論進行情感分類,在最理想的數(shù)據(jù)集上分類準確率可以達到90%,然而這種方法缺乏語義分析,容易產(chǎn)生向量空間模型數(shù)據(jù)稀疏問題,對于中文文本處理中普遍存在的一詞多義和多詞一義問題也不能解決。聞彬等人[5]在情感詞識別中引人情感語義概念,基于語義理解來進行文本情感分類,可在一定程度上緩解一詞多義和多詞一義引起的分類準確率不高的問題,它的不足之處在于只考慮到詞語語義層副詞的出現(xiàn)規(guī)律對詞語語義的作用,忽略了整個文本語境對詞語語義的影響。一些研究者[6]通過已有文本規(guī)則,充分考慮用文本的語法結(jié)構(gòu)去預測文本情緒傾向。但是不得不說該方式的實用性差、工藝復雜且難以推廣。也有部分研究者嘗試借助非標注樣本不斷訓練分類器的方法來提高半監(jiān)督學習方法的情感分類準確率,實驗證明該方法是有效的[7]。還有謝麗星等[8]提出了一種基于SVM的層次結(jié)構(gòu)多策略中文微博情感分析方法;劉寶芹等[9]在將情緒類別組織成三層樹狀結(jié)構(gòu)后,采用樸素貝葉斯分類模型對中文微博進行多層次的情緒分析;歐陽純萍等[10]提出多策略中文微博細粒度情緒分析方法,采用SVM和KNN算法對微博進行細粒度情緒分析;雷龍艷等[11]在對微博進行文本特征表示的基礎(chǔ)上,采用SVN和KNN算法對微博進行細粒度情緒分析。等等這些國內(nèi)外的文本情感分類方法研究,對本設(shè)計的方法選擇與優(yōu)化都提供了一定的幫助。1.3本設(shè)計應解決的主要問題接下來Twitter數(shù)據(jù)將作為我們今天的實戰(zhàn)項目用于情緒分析。由于采用了機器學習,我們主要解決以下問題:從Twitter上獲取適量文本數(shù)據(jù);對文本數(shù)據(jù)進行必要的預處理;標住類標簽,分割開發(fā)集和測試集數(shù)據(jù);對預處理后的數(shù)據(jù)進行特征提取與向量加權(quán);訓練模型,調(diào)整參數(shù),評估模型;用測試集進行測試驗證情緒分析的準確率;2設(shè)計過程2.1設(shè)計簡要流程訓練文本集訓練文本集測試文本集文本預處理選舉特征詞集情感詞典向量空間表示SVM分類器情感分類結(jié)果訓練SVM分類器文本預處理向量空間表示分類參數(shù)TF-IDF特征降維圖2.1-1_設(shè)計簡要流程圖2.2文本數(shù)據(jù)獲取2.2.1創(chuàng)建APP首先通過已有的twitter賬號訪問推特官方網(wǎng)站,想要抓取數(shù)據(jù)就要創(chuàng)建app去訪問twitter的API。創(chuàng)建app時,必要填寫信息為“name,Description,website”,其中name為APP的名稱;description是對自己APP的描述;website自己有網(wǎng)站寫自己的網(wǎng)站,沒有就寫一個符合格式的網(wǎng)站就行。并不需要進一步的驗證,app中的AccessToken、Access、TokenSecretConsumerKey(APIKey)和ConsumerSecret(APISecret)這四個開發(fā)者身份認證令牌參數(shù)才是我們的目標,也是獲取數(shù)據(jù)的基本條件。如果需要獲取大量數(shù)據(jù),可以申請多個app,因為單個的爬取次數(shù)和數(shù)量均有限制。2.2.2調(diào)配使用API之所以選擇Twitter作為實戰(zhàn)的文本數(shù)據(jù)是因為它提供很多類型的API,其中RestAPI與StreamingAPI是最為常見的。前者是經(jīng)常被用到的類型,而StreamingAPI可以用于追蹤想要了解的用戶或事件。下面介紹一下RESTAPI中有爬取意義的幾個API:GETstatuses/usertimeline:返回一個用戶發(fā)的推文。注意twitter里回復也相當于發(fā)推文。GETfriends/ids:返回一個用戶的followees。GETfollowers/ids:返回一個用戶的followers。GETusers/show:返回一個用戶的信息。接下來,通過使用twitterapi進行數(shù)據(jù)抓取,目前的twitterapi有很多python語言版本,本設(shè)計將會用到的是tweepy。安裝tweepy庫,只需要在cmd中輸入pipinstalltweepy命令即可。2.2.3開始程序編輯Twitter平臺不僅給以了我們爬取數(shù)據(jù)所用到的API接口,并且還攜帶了供我們寫程序代碼參考所用到的Tweepy庫。最后將獲取到的數(shù)據(jù)將保存到csv格式文件中,獲取文本數(shù)據(jù)程序代碼如下:2.3數(shù)據(jù)預處理2.3.1句柄的刪除句柄(@user)攜帶是每個推特用戶得以批準的一種方式,所以tweets文本數(shù)據(jù)中有的大量twitter句柄。而這個句柄其實沒有什么信息含量,因此我們刪除所有這些twitter句柄。為了省去不必要的麻煩,最好將測試集跟訓練集都一齊處理掉。說到刪除tweet中用不到的文本模式,首先我們需要定義一個函數(shù),輸入兩個參數(shù),一個是文本原始字符串,另一個是字符串中我們想要刪除的文本模式。用該函數(shù)進行“@user”模式的刪除。最后,創(chuàng)建一個新的列名為processed_tweet,用于存放經(jīng)過清理和處理的tweet。程序代碼如下:2.3.2刪除標點、數(shù)字和特殊字符標點符號、數(shù)字和特殊字符對一般的文本處理沒什么幫助。就像twitter句柄一樣需要從文本中刪除掉它們,用空格替換除字符和標簽的全部內(nèi)容。處理程序代碼如下:2.3.3處理表情符號將表情符號轉(zhuǎn)化為情緒表達,分別為Positive和negative??梢愿又庇^的判斷文本的情緒傾向,轉(zhuǎn)化代碼如下:2.3.4詞干提取由于英文表達中的單詞大多帶有后綴,如(“ing”、“l(fā)y”、“er”、“es”、“s”等)對單詞沒有情緒改變的后綴。舉個例子,“fly”、“flyer”、“flying”,其中“flyer”和“flying”是單詞“fly”的不同變體。我們需要從一個單詞中剝離后綴,提取出對情緒分類有用的詞干信息,提取程序代碼如下:2.4標注類標簽在經(jīng)過預處理后的的數(shù)據(jù),分別劃分為訓練以及測試文本集,訓練集的數(shù)額要遠大于測試集的數(shù)額。本設(shè)計總獲取約一百萬個文本數(shù)據(jù),其中測試集數(shù)量約為百分之九十,然后按照文本的情感表達給它們分類為消極negative(標注為0)和積極Positive(標注為1)的標簽,測試集用于后續(xù)的驗證,不需要標注。標注后的效果圖如下:圖2.4-1_類標注效果圖2.5分詞由于在特征提取前,需要并將這些詞用作向量來表示文本,即將所有訓練文檔進行分詞。舉個例子:在情感分類問題中,選擇特征可以基于“詞”這個層次,例如“Thistweetisexcellent”,我給他標注成“Positive”的類標簽。里面有4個詞,分別為“This”、“tweet”、“is”、“excellent”。意思是將這4個詞全部作為了分類特征詞,那么包含這個詞的文本就會被分類為“積極”。同理,對上面提及的那句文本,還能選擇雙詞組合(Bigrams)。這種方法就是將“Thistweet”,“tweetis”,“isexcellent”這種兩兩搭配作為分類特征。本設(shè)計將用到這兩種特征選擇作為分詞方式進行選擇,分詞程序代碼如下:2.6特征提取機器學習算法并不能直接使用原始數(shù)據(jù),這就需要我們對分詞后的的詞語集合(原始數(shù)據(jù))做一個特征提取處理,然后把原始數(shù)據(jù)轉(zhuǎn)變?yōu)槟軌虮粰C器學習算法認識的數(shù)量特征(固定長度的向量表示)?;?.5提到的兩種特征選擇,可以用到N-Gram,一種基于概率去判別的模型的算法,該語言模型的根本原理就是將文本內(nèi)容依據(jù)不同的字節(jié)大小N去截取想要大小的片段序列。進行過濾后對所有的字節(jié)片段(gram)所浮出的頻度分別計算,最后合成向量特征空間(gram列表)。其中列表里面不同的gram代表著不同的特征向量維度。當n=1時,為一元模型(unigrammodel),對應公式如下:(式2.6-1)(式2.6-1)當n=2時,為二元模型(bigrammodel),對應公式如下:(式2.6-2))(式2.6-2))本設(shè)計在模型中分別創(chuàng)建了一元模型和二元模型特征向量列表,然后通過使用上面提到的兩種特征提取方式對數(shù)據(jù)集中所有的單詞在語料中出現(xiàn)的頻率,對比這兩種特征提取的測試效果,最終選擇最佳的特征特征向量維度,將數(shù)據(jù)以這個字節(jié)長度添加到特征列向量表中。實踐流程和程序設(shè)計如下:文檔信息文檔信息特征向量列表語段序列g(shù)ram頻度列表粗切分N-gram切分過濾圖2.6-1實踐流程圖2.7特征降維與TF-IDF特征降維顯然意味著減少特征維數(shù)。這有兩個不同含義。一是可以減少特征數(shù)量以加快算法計算。另一個是,如果使用某種方法來選擇信息豐富的特征,則可以減少噪聲并有效地提高分類的準確性。何為信息量豐富?,可以回顧一下上面的例子:“Thistweetisexcellent”,很明顯,其實不需要把“This”、“tweet”、“is”、“excellent”這4個都當做特征,因為“excellent”這一個詞,或者“isexcellent”這樣一個雙詞搭配就能夠判定了這個文本屬于“積極”的。這就足夠說明了“excellent”是一個信息量非常豐富的詞。下面將通過一定的統(tǒng)計方法找到信息量豐富的特征。TF-IDF(TermFrequency-InverseDocumentFrequency),是在分類問題中用于統(tǒng)計的一種方法。用于評估一個字詞在文本集或語義庫中的某個文本的影響度。字詞在文本中出現(xiàn)的次數(shù)越多嗎,其影響度越大。相反,字詞在語義庫中出現(xiàn)的頻率越高,該詞的影響度就越低。TF-IDF由TF和IDF這兩部分組成。詞頻(TermFrequency,TF)是計算文本中某個特定詞出現(xiàn)的多少次。同一個詞不管它重不重要,在長文本較于短文本出現(xiàn)的次數(shù)可能偏高。為了防止它的偏向,這個數(shù)值通常需要除以文章總詞數(shù)進行歸一化,表達式如下:(式2.7-1)(式2.7-1)但是需要考慮的問題是:一些出現(xiàn)頻率較高的詞通常對于情緒判斷沒有啥作用,反而一些較少出現(xiàn)的詞卻能表達出文本基本情緒。例如在大多數(shù)文本都會用到的"to"的詞頻就很高,但是其對情緒分類的作用卻比不上詞頻低的"Study"和“Sing”等詞。因此權(quán)重的計算不能只用到TF,必須考慮到:一個詞要跟其分類情緒的的能力成正比,能力越強,權(quán)重越大,反之則權(quán)重越小。要找到一些詞只是很少地出現(xiàn)在所有統(tǒng)計文本中的其中幾個,那么這些詞對文本情緒表達作用就很大。因此需要用到IDF來完成此工作,將這些詞的權(quán)重設(shè)計的更大去反映出這些詞的重要性,進而改正單純使用詞頻表示的特征值。逆向文件頻率(InverseDocumentFrequency,IDF)可用于去尋找具有優(yōu)秀分類能力的詞條,根據(jù)詞條出現(xiàn)在的文檔數(shù)較少,其逆向文件頻率就越大來判別。以下公式就可計算出某一特定詞語的IDF:(式2.7-2)(式2.7-2)為了使每一個IDF值都有意義,應該避免一個極端的情況,就是某個詞在全部的文本中都出現(xiàn),其IDF值為0就失去了意義。因此我們在使用IDF時需要做一些平滑,如對上式的分母加1,就是為了防止分母等于0,使得沒有出現(xiàn)在語料庫中的詞也得到一個合理的IDF值。TF-IDF重在過濾掉常見的詞,留下信息量豐富的詞。想要輸出權(quán)重的TF-IDF,這個詞就需要滿足較多的出現(xiàn)在一個特定文本,較少的出現(xiàn)在文本集的文本中。理解了IDF的定義,接下來就可以推出計算某一個詞的TF-IDF值的公式了:(式2.7-3)(式2.7-3)即:(式2.7-4)(式2.7-4)式中的表示某字詞在句子中出現(xiàn)的概率,其中N為訓練集文本數(shù)量,表示訓練集中包含特征詞的文本數(shù)。根據(jù)TF-IDF公式表示,某特征詞出現(xiàn)在一個文本集的次數(shù)越多,其其辨別能力越小,權(quán)重值越低;而在一個文本中出現(xiàn)的概率越高,可區(qū)分性就越大,權(quán)重也就越大。2.8搭建模型2.8.1以機器學習為基礎(chǔ)的文本情感分析方法首先對已經(jīng)標注好的文本數(shù)據(jù)進行特征處理,然后對模型進行訓練以進行監(jiān)督學習。訓練完好的模型最后用于預測新文本測試集信息的情感極性。簡要操作流程如下圖所示:已經(jīng)標住的文本數(shù)據(jù)已經(jīng)標住的文本數(shù)據(jù)特征提取模型訓練極性標簽機器學習訓練未標住的句子特征提取取情感極性預測圖2.8-1_簡要操作流程圖機器學習依照分類算法的不同,分為國內(nèi)外研究現(xiàn)狀中使用的三種方法:樸素貝葉斯、最大熵和支持向量機(SVM)。相對于前兩者,由vapnik提出的支持向量機(SVM),被認為是最好的情緒分析方法,該方法通過尋找最小的結(jié)構(gòu)化風險,降低泛化錯誤率和計算開銷,并且實現(xiàn)了經(jīng)驗危險和置信面積的最小化,最重要的是對于訓練集較小的文本也可以獲得良好的統(tǒng)計規(guī)律和情感分析效果。高維數(shù)據(jù)使用支持向量機(SVM)的處理效果很不錯,想要很好的使用該方法,就要做好參數(shù)調(diào)節(jié)和核函數(shù)的挑選。2.8.2支持向量機SVM支持向量機(SupportVectorMachine,SVM)算法用于文本分類經(jīng)常被稱贊。該機器學習方法主要基于統(tǒng)計學習。該算法將數(shù)據(jù)集進行壓縮,轉(zhuǎn)化為向量集合,以降低結(jié)構(gòu)風險,學習得到?jīng)Q策函數(shù)的分類技術(shù)。該技術(shù)能實現(xiàn)文本向量化,僅需要一定的文本數(shù)據(jù)就能被抽象得到訓練集,解決了過去需要無限大樣本的問題,提高了分類的準確性。使用支持向量機(SVM)算法,就能用有限的文本數(shù)據(jù)獲得最好的推廣能力,是因為它在模型的復雜性與學習能力之間尋找最好折中點實現(xiàn)的。下面說說支持向量機算法的贊點:(1)能匹配現(xiàn)有數(shù)額的的文本數(shù)據(jù),找到最好值點,充分照顧到有限數(shù)據(jù)的情況。(2)支持向量機算法在特征向量稀少的空間和特征向量密集的空間都能很好的執(zhí)行任務,這是其他一些分類算法不能做到的。(3)支持向量機算法能幫你找到權(quán)重的特征向量,該工具的優(yōu)秀學習能力體現(xiàn)了它在文本分類中的巨大潛能。支持向量機(SVM)是一種二向線性分類器,線性可分和線性不可分,用于監(jiān)督學習。線性可分相對簡單,而線性不可分離則想到SVM,它能把原始數(shù)據(jù)映射到線性可分新界面,經(jīng)過投影,可在原始界面獲得劃分邊界。SVM是一種經(jīng)常用于分類問題的數(shù)學模型。它的主要思想是構(gòu)造一個多維超平面,對要分類的特征值進行分類,使用訓練示例數(shù)據(jù)向量將其劃分為相對應的類別,然后找到該平面的邊界最大化。wwyx圖2.8-2_SVM超平面分隔圖上文說到SVM針對非線性的情況,那它是怎么做到的呢?而核函數(shù)(Kernel)正是它解決這個問題的秘方,核函數(shù)通過在較于原本數(shù)據(jù)空間更高維的特征空間去看線性不可分的分類問題,從而得到了很好的分界面。核函數(shù)的精髓如下:在我們的學習研究過程中,經(jīng)常碰到各種線性不可分的情況。而我們常用的方法就是將原始數(shù)據(jù)特征映射到高維的象征空間里,(如上圖2.8-2_SVM超平面分割圖所示)這樣是為了使相關(guān)特征被分開達到分類的目的。以此類推,我們將所有碰到的線性不可分樣例,都像上面所說的一律映射到高維空間。那該維度豈不是高到嚇人,那改如何呢?接下來,核函數(shù)的出現(xiàn)意義不僅在于它實現(xiàn)特征從低到高的空間維度變換,還能將數(shù)據(jù)在低維空間上計算效果展現(xiàn)在高維空間中,防止了②中說到的復雜高維計算。接下來討論核函數(shù)的選擇,LinearSVC和使用SVC且在kerne中引入linear是本設(shè)計需要考慮的使用結(jié)果一樣的兩種選擇。其中SVC在任意核中可用,而LinearSVC只能運用于線性核,因此SVC的計算較復雜。這使得如果你決定使用線性SVM時,選擇用LinearSVC會比另一個的操作速度快很多。本設(shè)計就是用到了LinearSVC,程序片段如下:SVC屬于本設(shè)計所用到的sklearn中用于分類的SVM模型,SVR是另外提供的回歸模型用于預測。調(diào)用這兩種模型時的參數(shù)設(shè)置相似,簡單介紹一下SVC如何設(shè)置參數(shù)。上面提及到的SVC()參數(shù),其中的C是懲罰系數(shù),可以解釋為準許分類出錯的權(quán)重(C越大,越不準許出錯),越小,則準許少量劃分出錯。2.9模型評估在使用人工智能算法時,經(jīng)過算法實現(xiàn)和模型訓練后,可以對訓練模型進行評估從而檢查算法的性能好不好,以便進行優(yōu)化得到想要的準確率。下面我們將用涉及到精確率(Precision)、召回率(Recall)和準確率(Accuracy)這幾個判斷標準的F1-score來進行模型評估:F1-score的定義:F1分數(shù)(F1-score)經(jīng)常被用于衡量一些基于機器學習的兩個以上分類問題比賽結(jié)果的判定標準。它是召回率和精確率的倒數(shù)平均數(shù),值最大時等于1,最小時等于0。其表達式如下:(式2.8-1)(式2.8-1)F1-score的計算:1.首先給以下變量定義概念:TruePositive(TP):推測結(jié)果標準;FalsePositive(FP):錯將別的標簽為推測本類;TrueNegative(TN):推測結(jié)果標準;FalseNegative(FN):錯將本類歸類為別類標簽;2.通過步驟1中的值算出的精準度和召回率。精準度(precision):指被分類器推測為正樣本占正例總數(shù)的比值。(式2.8-2)(式2.8-2)召回率(recall):代表被推測為正樣本占總正樣本的比值。(式2.8-3)(式2.8-3)準確率(accuracy):指的是分類器對總樣本推測正確的比值。(式2.8-4))(式2.8-4))3.通過步驟2計算結(jié)果得出各個類別下的f1-score,下面為計算公式:(式2.8-5)(式2.8-5)各個類別下的F1-score可通過步驟3計算得的值,從而測評出分類器各個指標結(jié)果,公式如下:(式2.8-6)(式2.8-6)f1_score函數(shù)在程序中的運用為了便捷使用f1_score函數(shù)可以直接在程序中加載sklearn包。分類器推段獲取average

:string,[None,‘binary’(default),

‘macro’,

‘weighted’]類別,挑選好參數(shù)可事半功倍。當在意類別不穩(wěn)定時,使用‘binary’參數(shù)來解決二分類問題;在考慮類別的不平衡性前提下,用‘weighted’參數(shù)能夠算出類別的權(quán)重值;相反在不在意類別不穩(wěn)定時,使用‘macro’參數(shù),可以計算宏平均。相關(guān)代碼如下: 3設(shè)計總結(jié)SVM之所以被廣泛運用于處理分類問題,是因為它具備了較強的泛化和分類能力。一般有關(guān)SVM的分類方法很看重情感詞,并將權(quán)重的情感詞提取用作特征向量。而且存在的問題可分為以下三方面:(1)樣本數(shù)據(jù)稀少問題。情感詞集不能覆蓋全部文檔;(2)一詞多種含義問題。由于一個情感詞有時可以理解為多個語義,而造成的不同程度的情感偏差;(3)多個不同詞表達的是一個語義問題。相同的的情感可以用許多的情感詞去描述。當傳統(tǒng)SVM方法遇到以上提及的3種情況時,其分類性能就會下降。由上述可知情感詞與文檔語義關(guān)系在這3個方面完全得以體現(xiàn)了。因此想要提高分類的精度,就需要考慮基于語義特征去分類,從而壯大情感詞的分類規(guī)模。為了解決傳統(tǒng)分類算法存在的上述問題,想到采用挖掘語義分類的方法,把情感詞典和將要處理的文本結(jié)合起來,通過測量詞與文本的語義差距用作特征向量。通過結(jié)合尚未發(fā)現(xiàn)的語義分析和SVM避開上文那3個問題。實驗展示本文用到的方法在分類精確度真的有所提升。本文采用基于支持向量機(SVM)分類的機器學習方法,首先選擇特征向量,將twitter的信息量豐富的情感詞、表情符號等當做其特征向量,通過使用訓練數(shù)據(jù)訓練分類模型,得到一個情感分類器,最后對測試文本集進行劃分。本設(shè)計用到了依照民眾在twitter上的語言表達特色和語言表情規(guī)則,同時結(jié)合支持向量機(SVM)方法并完善SVM方法中的缺點,更大程度地優(yōu)化其分類效果,提高分類結(jié)果的可靠性。從分類器對測試數(shù)據(jù)進行情緒預測的結(jié)果可知,最后的實驗數(shù)據(jù)不錯,其準確率和召回率都偏小,這更表明文本情緒分析在未來的研究中還可以走的更遠。最后總結(jié)一下文本分類的特殊性,不管是使用SVM還是其他工具分類時,都要記得考慮以下幾方面:在文本預處理過程中執(zhí)行的很多步驟對最終使用分類工具時都會產(chǎn)生一定影響。文本特征向量的選擇極其重要,因為即使你使用的分類器很強大,你的文本特征選擇的不好,最后也未必能訓練得到效果好的分類結(jié)果。不好的文本特征向量,給你多好的參數(shù)你都很難去訓練提升優(yōu)化你的分類器,一個不好的分類器,很容易在實際測試中出現(xiàn)錯誤分類的情況。在文本預處理和使用分類工具進行訓練時,你所選擇的訓練集本和測試集數(shù)據(jù)文本都會對其效果產(chǎn)生影響。本設(shè)計的后續(xù)提升感想:在自然語言處理方面很難深度學習的優(yōu)勢更為凸顯,深度學習的方法能夠自動進行特征提取、自主學習修正輸出、能很好地處理非線性復等雜數(shù)據(jù)。正成為眾多學者對于情緒分類的熱點研究對象,深度學習的方法將使文本情感分析研究走上更高的階層,實現(xiàn)更好的分類的效果。4參考文獻SubasicP,HuettnerA.Affectanalysisoftextusingfuzzysemantictyping[J].IEEETransactionsonFuzzySystems,2001,9(4):483-496熊德蘭,程菊明,田勝利.基于HowNet的句子褒貶傾向性研究[J].計算機工程與應用,2008,44(22):143—145唐慧豐,譚松波,程學旗.基于監(jiān)督學習的中文情感分類技術(shù)比較研究[J].中文信息學報,2007,21(6):88—94徐軍,丁宇新,王曉龍.使用機器學習方法進行新聞的情感自動分類[J].中文信息學報,2007,21(6):95—100聞彬,何婷婷,羅樂,等.基于語義理解的文本情感分類方法研究[J].計算機科學,2010,37(6):261—264段建勇,謝宇超,張梅.基于句法語義的網(wǎng)絡(luò)輿論情感傾向性評價技術(shù)研究IJ].情報雜志,2012,31(1):147—150高偉,王中卿,李壽山.基于集成學習的半監(jiān)督情感分類方法研究[J].中文信息學報,2013,27(3):120—126謝麗星,周明,孫茂松.基于層次結(jié)構(gòu)的多策略中文微博情感分析和特征抽取[J].中文信息學報,2012,26(1):73—83劉寶芹,牛耘.多層次中文微博情緒分析[J].計算機技術(shù)與發(fā)展2015,25(11):23—26歐陽純萍,陽小華,雷龍艷,等.多策略中文微博細粒度情緒分析研究[J].北京大學學報(自然科學版),2014,50(1):67—72雷龍艷.中文微博細粒度情緒識別研究[D].衡陽:南華大學,20145致謝:歷時半載,從論文選題到搜集資料,從開題報告、寫初稿到反復修改,期間經(jīng)歷了喜悅、聒噪、痛苦和彷徨,在寫作論文的過程中心情是如此復雜。不積跬步何以至千里,本設(shè)計能夠順利的完成,也歸功于各位任課老師的認真負責,使我能夠很好的掌握和運用專業(yè)知識,并在設(shè)計中得以體現(xiàn)。正是有了他們的悉心幫忙和支持,才使我的畢業(yè)論文順利完成,在此向我的任課老師以及信息工程學院的所有老師表示由衷的謝意,感謝他們四年來的辛勤栽培。如今,伴隨著這篇畢業(yè)論文的最終成稿,復雜的心情煙消云散,自己甚至還有一點成就感。最后,我要感謝四年的大學生活,感謝北京理工大學珠海學院以及我的家人和那些永遠也不能忘記的朋友,他們的支持與情感,是我永遠的財富。6附錄6.1數(shù)據(jù)預處理程序代碼#

-*-

coding:

utf-8

-*

import

re

import

sys

from

utils

import

write_status

from

nltk.stem.porter

import

PorterStemmer

#處理單詞句子

def

preprocess_word(word):

word

=

word.strip('\'"?!,.():;')

word

=

re.sub(r'(.)\1+',

r'\1\1',

word)

word

=

re.sub(r'(-|\')',

'',

word)

return

word

def

is_valid_word(word):

return

(re.search(r'^[a-zA-Z][a-z0-9A-Z\._]*$',

word)

is

not

None)

def

handle_emojis(tweet):

tweet

=

re.sub(r'(:\s?\)|:-\)|\(\s?:|\(-:|:\'\))',

'

EMO_POS

',

tweet)

tweet

=

re.sub(r'(:\s?D|:-D|x-?D|X-?D)',

'

EMO_POS

',

tweet)

tweet

=

re.sub(r'(<3|:\*)',

'

EMO_POS

',

tweet)

tweet

=

re.sub(r'(;-?\)|;-?D|\(-?;)',

'

EMO_POS

',

tweet)

tweet

=

re.sub(r'(:\s?\(|:-\(|\)\s?:|\)-:)',

'

EMO_NEG

',

tweet)

tweet

=

re.sub(r'(:,\(|:\'\(|:"\()',

'

EMO_NEG

',

tweet)

return

tweet

def

preprocess_tweet(tweet):

processed_tweet

=

[]

tweet

=

tweet.lower()

tweet

=

re.sub(r'((www\.[\S]+)|(https?://[\S]+))',

'

URL

',

tweet)

tweet

=

re.sub(r'@[\S]+',

'USER_MENTION',

tweet)

tweet

=

re.sub(r'#(\S+)',

r'

\1

',

tweet)

tweet

=

re.sub(r'\brt\b',

'',

tweet)

tweet

=

re.sub(r'\.{2,}',

'

',

tweet)

tweet

=

tweet.strip('

"\'')

tweet

=

handle_emojis(tweet)

tweet

=

re.sub(r'\s+',

'

',

tweet)

words

=

tweet.split()

for

word

in

words:

word

=

preprocess_word(word)

if

is_valid_word(word):

if

use_stemmer:

word

=

str(porter_stemmer.stem(word))

processed_tweet.append(word)

return

'

'.join(processed_tweet)

def

preprocess_csv(csv_file_name,

processed_file_name,

test_file=True):

save_to_file

=

open(processed_file_name,

'w'

,

encoding='UTF-8')

with

open(csv_file_name,

'r'

,

encoding='UTF-8')

as

csv:

lines

=

csv.readlines()

total

=

len(lines)

for

i,

line

in

enumerate(lines):

tweet_id

=

line[:line.find(',')]

if

not

test_file:

line

=

line[1

+

line.find(','):]

positive

=

int(line[:line.find(',')])

line

=

line[1

+

line.find(','):]

tweet

=

line

processed_tweet

=

preprocess_tweet(tweet)

if

not

test_file:

save_to_file.write('%s,%d,%s\n'

%

(tweet_id,

positive,

processed_tweet))

else:

save_to_file.write('%s,%s\n'

%

(tweet_id,

processed_tweet))

write_status(i

+

1,

total)

save_to_file.close()

print

('\nSaved

processed

tweets

to(將已處理的推文保存到):

%s'

%

processed_file_name)

return

processed_file_name

if

__name__

==

'__main__':

if

len(sys.argv)

!=

2:

print

('請按這樣的格式輸入:

python3

preprocess.py

train.csv

')

exit()

use_stemmer

=

False

csv_file_name

=

sys.argv[1]

processed_file_name

=

sys.argv[1][:-4]

+

'-processed.csv'

if

use_stemmer:

porter_stemmer

=

PorterStemmer()

processed_file_name

=

sys.argv[1][:-4]

+

'-processed-stemmed.csv'

preprocess_csv(csv_file_name,

processed_file_name,

test_file=True,)

6.2模型程序代碼from

sklearn

import

svm

import

utils

import

random

import

numpy

as

np

from

scipy.sparse

import

lil_matrix

from

sklearn.feature_extraction.text

import

TfidfTransformer

from

sklearn.metrics

import

accuracy_score

#調(diào)用準確率

from

sklearn.metrics

import

recall_score

#調(diào)用召回率

from

sklearn.metrics

import

f1_score

#調(diào)用F1度量

from

sklearn.metrics

import

confusion_matrix

#調(diào)用誤差矩陣

#

Performs

classification

using

SVM.

FREQ_DIST_FILE

=

'train-processed-freqdist.pkl'

BI_FREQ_DIST_FILE

=

'train-processed-freqdist-bi.pkl'

TRAIN_PROCESSED_FILE

=

'train-processed.csv'

TEST_PROCESSED_FILE

=

'test-processed.csv'

TRAIN

=

True

UNIGRAM_SIZE

=

15000

VOCAB_SIZE

=

UNIGRAM_SIZE

USE_BIGRAMS

=

True

if

USE_BIGRAMS:

BIGRAM_SIZE

=

10000

VOCAB_SIZE

=

UNIGRAM_SIZE

+

BIGRAM_SIZE

FEAT_TYPE

=

'frequency'

def

get_feature_vector(tweet):

uni_feature_vector

=

[]

bi_feature_vector

=

[]

words

=

tweet.split()

for

i

in

range(len(words)

-

1):

word

=

words[i]

next_word

=

words[i

+

1]

if

unigrams.get(word):

uni_feature_vector.append(word)

if

USE_BIGRAMS:

if

bigrams.get((word,

next_word)):

bi_feature_vector.append((word,

next_word))

if

len(words)

>=

1:

if

unigrams.get(words[-1]):

uni_feature_vector.append(words[-1])

return

uni_feature_vector,

bi_feature_vector

def

extract_features(tweets,

batch_size=500,

test_file=True,

feat_type='presence'):

num_batches

=

int(np.ceil(len(tweets)

/

float(batch_size)))

for

i

in

range(num_batches):

batch

=

tweets[i

*

batch_size:

(i

+

1)

*

batch_size]

features

=

lil_matrix((batch_size,

VOCAB_SIZE))

labels

=

np.zeros(batch_size)

for

j,

tweet

in

enumerate(batch):

if

test_file:

tweet_words

=

tweet[1][0]

tweet_bigrams

=

tweet[1][1]

else:

tweet_words

=

tweet[2][0]

tweet_bigrams

=

tweet[2][1]

labels[j]

=

tweet[1]

if

feat_type

==

'presence':

tweet_words

=

set(tweet_words)

tweet_bigrams

=

set(tweet_bigrams)

for

word

in

tweet_words:

idx

=

unigrams.get(word)

if

idx:

features[j,

idx]

+=

1

if

USE_BIGRAMS:

for

bigram

in

tweet_bigrams:

idx

=

bigrams.get(bigram)

if

idx:

features[j,

UNIGRAM_SIZE

+

idx]

+=

1

yield

features,

labels

def

apply_tf_idf(X):

transformer

=

TfidfTransformer(smooth_idf=True,

sublinear_tf=True,

use_idf=True)

transformer.fit(X)

return

transformer

def

process_tweets(csv_file,

test_file=True):

"""Returns

a

list

of

tuples

of

type

(tweet_id,

feature_vector)

or

(tweet_id,

sentiment,

feature_vector)

Args:

csv_file

(str):

Name

of

processed

csv

file

generated

by

preprocess.py

test_file

(bool,

optional):

If

processing

test

file

Returns:

list:

Of

tuples

"""

tweets

=

[]

print

('Generating

feature

vectors')

with

open(csv_file,

'r')

as

csv:

lines

=

csv.readlines()

total

=

len(lines)

for

i,

line

in

enumerate(lines):

if

test_file:

tweet_id,

tweet

=

line.split(',')

else:

tweet_id,

sentiment,

tweet

=

line.split(',')

feature_vector

=

get_feature_vector(tweet)

if

test_file:

tweets.append((tweet_id,

feature_vector))

else:

tweets.append((tweet_id,

int(sentiment),

feature_vector))

utils.write_status(i

+

1,

total)

print

('\n')

return

tweets

if

__name__

==

'__main__':

np.random.seed(1337)

unigrams

=

utils.top_n_words(FREQ_DIST_FILE,

UNIGRAM_SIZE)

if

USE_BIGRAMS:

bigrams

=

utils.top_n_bigrams(BI_FREQ_DIST_FILE,

BIGRAM_SIZE)

tweets

=

process_tweets(TRAIN_PROCESSED_FILE,

test_file=False)

if

TRAIN:

train_tweets,

val_tweets

=

utils.split_data(tweets)

else:

random.shuffle(tweets)

train_tweets

=

tweets

del

tweets

print

('Extracting

features

&

training

batches')

clf

=

svm.LinearSVC(C=0.1)

batch_size

=

len(train_tweets)

i

=

1

n_train_batches

=

int(np.ceil(len(train_tweets)

/

float(batch_size)))

for

training_set_X,

training_set_y

in

extract_features(train_tweets,

test_file=False,

feat_type=FEAT_TYPE,

batch_size=batch_size):

utils.write_status(i,

n_train_batches)

i

+=

1

if

FEAT_TYPE

==

'frequency':

tfidf

=

apply_tf_idf(training_set_X)

training_set_X

=

tfidf.transform(training_set_X)

clf.fit(training_set_X,

training_set_y)

print

('\n')

print

('Testing')

if

TRAIN:

correct,

total

=

0,

len(val_tweets)

i

=

1

batch_size

=

len(val_tweets)

n_val_batches

=

int(np.ceil(len(val_tweets)

/

float(batch_size)))

for

val_set_X,

val_set_y

in

extract_features(val_tweets,

test_file=False,

feat_type=FEAT_TYPE,

batch_size=batch_size):

if

FEAT_TYPE

==

'frequency':

val_set_X

=

tfidf.transform(val_set_X)

prediction

=

clf.predict(val_set_X)

correct

+=

np.sum(prediction

==

val_set_y)

utils.write_status(i,

n_val_batches)

i

+=

1

accuracy

=

accuracy_score(val_set_y,

prediction)

recall

=

recall_score(val_set_y,

prediction,

average='macro')

f1

=

f1_score(val_set_y,

prediction,

average='macro')

print

('\nCorrect:

%d/%d

=

%.4f

%%'

%

(correct,

total,

correct

*

100.

/

total))

print

('準確率:

%s'

%

(accuracy))

print

('召回率:

%s'

%

(recall))

print

('F1分數(shù):

%s'

%

(f1))

else:

del

train_tweets

test_tweets

=

process_tweets(TEST_PROCESSED_FILE,

test_file=True)

n_test_batches

=

int(np.ceil(len(test_tweets)

/

float(batch_size)))

predictions

=

np.array([])

print

('Predicting

batches')

i

=

1

for

test_set_X,

_

in

extract_features(test_tweets,

test_file=True,

feat_type=FEAT_TYPE):

if

FEAT_TYPE

==

'frequency':

test_set_X

=

tfidf.transform(test_set_X)

prediction

=

clf.predict(test_set_X)

predictions

=

np.concatenate((predictions,

prediction))

utils.write_status(i,

n_test_batches)

i

+=

1

predictions

=

[(str(j),

int(predictions[j]))

for

j

in

range(len(test_tweets))]

utils.save_results_to_csv(predictions,

'svm.csv')

print

('\nSaved

to

svm.csv')

HYPERLINK電腦快捷知識大全編輯本段一、常見用法F1顯示當前程序或者windows的幫助內(nèi)容。F2當你選中一個文件的話,這意味著“重命名”F3當你在桌面上的時候是打開“查找:所有文件”對話框F10或ALT激活當前程序的菜單欄windows鍵或CTRL+ESC打開開始菜單CTRL+ALT+DELETE在win9x中打開關(guān)閉程序?qū)υ捒駾ELETE刪除被選擇的選擇項目,如果是文件,將被放入回收站SHIFT+DELETE刪除被選擇的選擇項目,如果是文件,將被直接刪除而不是放入回收站CTRL+N新建一個新的文件CTRL+O打開“打開文件”對話框CTRL+P打開“打印”對話框CTRL+S保存當前操作的文件CTRL+X剪切被選擇的項目到剪貼板CTRL+INSERT或CTRL+C復制被選擇的項目到剪貼板SHIFT+INSERT或CTRL+V粘貼剪貼板中的內(nèi)容到當前位置ALT+BACKSPACE或CTRL+Z撤銷上一步的操作ALT+SHIFT+BACKSPACE重做上一步被撤銷的操作Windows鍵+L鎖屏鍵Windows鍵+M最小化所有被打開的窗口。Windows鍵+SHIFT+M重新將恢復上一項操作前窗口的大小和位置Windows鍵+E打開資源管理器Windows鍵+F打開“查找:所有文件”對話框Windows鍵+R打開“運行”對話框Windows鍵+BREAK打開“系統(tǒng)屬性”對話框Windows鍵+CTRL+F打開“查找:計算機”對話框SHIFT+F10或鼠標右擊打開當前活動項目的快捷菜單SHIFT在放入CD的時候按下不放,可以跳過自動播放CD。在打開word的時候按下不放,可以跳過自啟動的宏ALT+F4關(guān)閉當前應用程序ALT+SPACEBAR打開程序最左上角的菜單ALT+TAB切換當前程序ALT+ESC切換當前程序ALT+ENTER將windows下運行的MSDOS窗口在窗口和全屏幕狀態(tài)間切換PRINTSCREEN將當前屏幕以圖象方式拷貝到剪貼板ALT+PRINTSCREEN將當前活動程序窗口以圖象方式拷貝到剪貼板CTRL+F4關(guān)閉當前應用程序中的當前文本(如word中)CTRL+F6切換到當前應用程序中的下一個文本(加shift可以跳到前一個窗口)在IE中:ALT+RIGHTARROW顯示前一頁(前進鍵)ALT+LEFTARROW顯示后一頁(后退鍵)CTRL+TAB在頁面上的各框架中切換(加shift反向)F5刷新CTRL+F5強行刷新目的快捷鍵激活程序中的菜單欄F10執(zhí)行菜單上相應的命令ALT+菜單上帶下劃線的字母關(guān)閉多文檔界面程序中的當前窗口CTRL+F4關(guān)閉當前窗口或退出程序ALT+F4復制CTRL+C剪切CTRL+X刪除DELETE顯示所選對話框項目的幫助F1顯示當前窗口的系統(tǒng)菜單ALT+空格鍵顯示所選項目的快捷菜單SHIFT+F10顯示“開始”菜單CTRL+ESC顯示多文檔界面程序的系統(tǒng)菜單ALT+連字號(-)粘貼CTRL+V切換到上次使用的窗口或者按住ALT然后重復按TAB,切換到另一個窗口ALT+TAB撤消CTRL+Z編輯本段二、使用“Windows資源管理器”的快捷鍵目的快捷鍵如果當前選擇展開了,要折疊或者選擇父文件夾左箭頭折疊所選的文件夾NUMLOCK+負號(-)如果當前選擇折疊了,要展開或者選擇第一個子文件夾右箭頭展開當前選擇下的所有文件夾NUMLOCK+*展開所選的文件夾NUMLOCK+加號(+)在左右窗格間切換F6編輯本段三、使用WINDOWS鍵可以使用Microsoft自然鍵盤或含有Windows徽標鍵的其他任何兼容鍵盤的以下快捷鍵。目的快捷鍵在任務欄上的按鈕間循環(huán)WINDOWS+TAB顯示“查找:所有文件”WINDOWS+F顯示“查找:計算機”CTRL+WINDOWS+F顯示“幫助”WINDOWS+F1顯示“運行”命令WINDOWS+R顯示“開始”菜單WINDOWS顯示“系統(tǒng)屬性”對話框WINDOWS+BREAK顯示“Windows資源管理器”WINDOWS+E最小化或還原所有窗口WINDOWS+D撤消最小化所有窗口SHIFT+WINDOWS+M編輯本段四、“我的電腦”和“資源管理器”的快捷鍵目的快捷鍵關(guān)閉所選文件夾及其所有父文件夾按住SHIFT鍵再單擊“關(guān)閉按鈕(僅適用于“我的電腦”)向后移動到上一個視圖ALT+左箭頭向前移動到上一個視圖ALT+右箭頭查看上一級文件夾BACKSPACE編輯本段五、使用對話框中的快捷鍵目的快捷鍵取消當前任務ESC如果當前控件是個按鈕,要單擊該按鈕或者如果當前控件是個復選框,要選擇或清除該復選框或者如果當前控件是個選項按鈕,要單擊該選項空格鍵單擊相應的命令ALT+帶下劃線的字母單擊所選按鈕ENTER在選項上向后移動SHIFT+TAB在選項卡上向后移動CTRL+SHIFT+TAB在選項上向前移動TAB在選項卡上向前移動CTRL+TAB如果在“另存為”或“打開”對話框中選擇了某文件夾,要打開上一級文件夾BACKSPACE在“另存為”或“打開”對話框中打開“保存到”或“查閱”F4刷新“另存為”或“打開”對話框F5編輯本段六、桌面、我的電腦和“資源管理器”快捷鍵選擇項目時,可以使用以下快捷鍵。目的快捷鍵插入光盤時不用“自動播放”功能按住SHIFT插入CD-ROM復制文件按住CTRL拖動文件創(chuàng)建快捷方式按住CTRL+SHIFT拖動文件立即刪除某項目而不將其放入SHIFT+DELETE“回收站”顯示“查找:所有文件”F3顯示項目的快捷菜單APPLICATION鍵刷新窗口的內(nèi)容F5重命名項目F2選擇所有項目CTRL+A查看項目的屬性ALT+ENTER或ALT+雙擊可將APPLICATION鍵用于Microsoft自然鍵盤或含有APPLICATION鍵的其他兼容鍵編輯本段七、Microsoft放大程序的快捷鍵這里運用Windows徽標鍵和其他鍵的組合??旖萱I目的Windows徽標+PRINTSCREEN將屏幕復制到剪貼板(包括鼠標光標)Windows徽標+SCROLLLOCK將屏幕復制到剪貼板(不包括鼠標光標)Windows徽標+PAGEUP切換反色。Windows徽標+PAGEDOWN切換跟隨鼠標光標Windows徽標+向上箭頭增加放大率Windows徽標+向下箭頭減小放大率編輯本段八、使用輔助選項快捷鍵目的快捷鍵切換篩選鍵開關(guān)右SHIFT八秒切換高對比度開關(guān)左ALT+左SHIFT+PRINTSCREEN切換鼠標鍵開關(guān)左ALT+左SHIFT+NUMLOCK切換粘滯鍵開關(guān)SHIFT鍵五次切換切換鍵開關(guān)NUMLOCK五秒QQ快捷鍵,玩QQ更方便Alt+S快速回復Alt+C關(guān)閉當前窗口Alt+H打開聊天記錄Alt+T更改消息模式Ait+J打開聊天紀錄Ctrl+A全選當前對話框里的內(nèi)容Ctrl+FQQ里直接顯示字體設(shè)置工具條Ctrl+J輸入框里回車(跟回車一個效果)Ctrl+M輸入框里回車(跟回車一個效果)Ctrl+L對輸入框里當前行的文字左對齊Ctrl+R對輸入框里當前行的文字右對齊Ctrl+E對輸入框里當前行的文字居中Ctrl+V在qq對話框里實行粘貼Ctrl+Z清空/恢復輸入框里的文字Ctrl+回車快速回復這個可能是聊QQ時最常用到的了Ctrl+Alt+Z快速提取消息Ctrl+Alt+A捕捉屏幕最常用的快捷鍵F5刷新DELETE刪除TAB改變焦點CTRL+C復制CTRL+X剪切CTRL+V粘貼CTRL+A全選CTRL+Z撤銷CTRL+S保存ALT+F4關(guān)閉CTRL+Y恢復ALT+TAB切換CTRL+F5強制刷新CTRL+W關(guān)閉CTRL+F查找SHIFT+DELETE永久刪除CTRL+ALT+DEL任務管理SHIFT+TAB-反向切換CTRL+空格--中英文輸入切換CTRL+Shift輸入法切換CTRL+ESC--開始菜單CTRL+ALT+ZQQ快速提取消息CTRL+ALT+AQQ截圖工具CTRL+ENTERQQ發(fā)消息Alt+1保存當前表單Alt+2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論