用R語言進行文本挖掘和主題建模

用R語言進行文本挖掘和主題建模

歡迎大家前往騰訊雲+社區,獲取更多騰訊海量技術實踐乾貨哦~

我們每天都會遇到各種各樣的文本數據,但大部分是非結構化的,並不是全部都是有價值的。

據估計,全球約80%的數據是非結構化的。這包括音頻,視頻和文本數據。在這篇文章中,我們將只討論文本數據。在系列後面,我們將會談論到其他非結構化數據。

我們閱讀的書籍,博客,新聞文章,網頁,電子郵件等都是文本數據。所有這些文本都為我們提供了大量的信息,並不斷增長。但是,並非所有的數據都是有用的。我們過濾掉噪音,只保留重要的信息。這是一個乏味的過程,但作為人類,我們需要智慧 - 閱讀是一個必不可少的工具。而且,當世界傾向於智能機器時,處理來自非結構化數據的信息的能力是必須的。對於人類和智能機器來說,從大量的文本數據中挖掘信息是必需的。文本挖掘可以提供方法來提取,總結和分析來自非結構化數據的有用信息,以獲得新的見解。

文本挖掘可以用於各種任務。以下是我們的系列將進一步討論的幾個主題:

  • 主題建模
  • 文檔聚類
  • 文檔分類
  • 文字摘要

這篇文章主要關注主題建模。在接下來的帖子中,我們將深入到其他任務。

1、文本檢索

文本文件可以有各種格式,如PDF,DOC,HTML等。第一步是將這些文檔轉換為可讀的文本格式。接下來,必須創建一個語料庫。語料庫只是一個或多個文檔的集合。當我們在R中創建語料庫時,文本會被標記並可供進一步處理。

library(tm)library(SnowballC)library(topicmodels)#設置工作目錄(根據需要修改路徑)setwd("//Users//datascience//textmining//topicmodel")#載入文檔到語料庫#獲取目錄中的.txt文件列表filenames <- list.files(getwd(),pattern="*.txt")#將文件讀入字元向量files <- lapply(filenames,readLines)#創建矢量語料庫articles.corpus <- Corpus(VectorSource(files))

2、文本預處理

接下來,我們需要對文本進行預處理,將其轉換為可以處理以提取信息的格式。在分析文本之前減小特徵空間的大小是非常重要的。我們可以在這裡使用各種預處理方法,如停用詞清除,案例摺疊,詞幹化,詞形化和收縮簡化。但是,沒有必要將所有的規範化方法應用於文本。這取決於我們檢索的數據和要執行的分析類型。

# 將每個字母變成小寫articles.corpus <- tm_map(articles.corpus, tolower)# 刪除標點符號articles.corpus <- tm_map(articles.corpus, removePunctuation)#刪除數字articles.corpus <- tm_map(articles.corpus, removeNumbers);# 刪除通用和自定義的停用詞stopword <- c(stopwords(english), "best");articles.corpus <- tm_map(articles.corpus, removeWords, stopword)articles.corpus <- tm_map(articles.corpus, stemDocument);

以下是我們應用於減少數據集特徵空間的預處理方法的簡短描述:

刪除標點符號:刪除了各種標點符號,如+, - 和?。

停用詞清除:將常用詞和短語功能詞等停用詞過濾掉,以便對數據進行有效的分析。由NLTK提供的標準英語停用詞列表與自定義辭彙集合一起使用,以消除非正式辭彙和產品名稱。我們也可以從我們的文本中提供我們認為與我們的分析無關的文字。

案例摺疊:案例摺疊將所有大寫字母轉換為小寫字母。

詞幹化:詞幹是將修飾詞或派生詞歸為根的過程。例如,工作(進行時)和工作(過去式)都會被詞幹化為工作(原型)。

刪除號碼:對於某些文本挖掘活動,號碼不是必需的。例如,在主題建模的情況下,我們關心的是找到描述我們語料庫的基本辭彙。在這種情況下,我們可以刪除號碼。然而,在某些情況下,例如,如果我們正在為財務報表進行主題建模,它們可能會增加實質性內容。

下一步是創建一個文檔項矩陣(DTM)。這是一個重要的步驟,因為解釋和分析文本文件,它們最終必須轉換成文檔術語矩陣。 DTM包含每個文檔的術語出現次數。 DTM中的行代表文檔,文檔中的每個詞代表一列。在將文集轉換為文檔項矩陣之後,我們還移除了低頻詞(稀疏詞)。

articleDtm <- DocumentTermMatrix(articles.corpus, control = list(minWordLength = 3));articleDtm2 <- removeSparseTerms(articleDtm, sparse=0.98)

3、主題建模

主題建模是為了找到最能代表集合的文檔集合中的關鍵詞/術語。Latent Dirichlet Allocation(LDA)模型是一種廣泛使用的話題建模技術。以上結果表明,這兩個文件的主題都集中在機器學習和數據科學領域,你可以從GitHub中找到數據集和代碼。

問答

從命令行運行R語言腳本

相關閱讀

用R進行文本挖掘與分析:分詞、畫詞雲

文本挖掘的分詞原理

大數據挖掘中易犯的11大錯誤

此文已由作者授權騰訊雲+社區發布,原文鏈接:cloud.tencent.com/devel

weixin.qq.com/r/6TlxaU- (二維碼自動識別)


推薦閱讀:

TAG:數據挖掘 | R編程語言 |