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


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

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

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

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

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

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

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

1、文本檢索

文本文件可以有各種格式,如PDFDOCHTML等。第一步是將這些文檔轉換為可讀的文本格式。接下來,必須創建一個語料庫。語料庫只是一個或多個文檔的集合。當我們在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 AllocationLDA)模型是一種廣泛使用的話題建模技術。以上結果表明,這兩個文件的主題都集中在機器學習和數據科學領域,你可以從GitHub中找到數據集和代碼。

 

問答

相關閱讀

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

文本挖掘的分詞原理

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

 

此文已由作者授權騰訊雲+社區發布,原文鏈接:https://cloud.tencent.com/developer/article/1007140?fromSource=waitui


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM