1. 程式人生 > >文字特徵提取_03:基於詞頻數的文件向量CountVectorizer

文字特徵提取_03:基於詞頻數的文件向量CountVectorizer

王小草SparkML筆記

筆記整理時間:2017年1月10日
筆記整理者:王小草

1. 基於詞頻數的文件向量

在文字特徵提取_01和02中分別介紹了TF-IDF文件矩陣和基於神經網路的word2vec詞嵌入矩陣。本文我們要介紹的是一個非常基礎非常簡單的文件向量表徵。

做過LDA的小夥伴知道對於文件的特徵,它只需要每個詞在該文件中出現的頻數即可。因此簡單而言,根據頻數(token counts)可以將一個文件轉換成一個向量。

假設有兩篇文件,分詞後以詞的陣列形式表示,如下:

id texts
0 Array(“a”, “b”, “c”)
1 Array(“a”, “b”, “b”, “c”, “a”)

通過計算詞頻,文件可以表示成如下表格中的第三列:

id texts vector
0 Array(“a”, “b”, “c”) (3,[0,1,2],[1.0,1.0,1.0])
1 Array(“a”, “b”, “b”, “c”, “a”) (3,[0,1,2],[2.0,2.0,1.0])

將兩篇文件中的詞去重後就組成了一個字典,這個字典中有3個詞:a,b,c,分別建立索引為0,1,2.
在第三列的文件向量,是由基於字典的索引向量,與對應對索引的詞頻向量所組成的。
文件向量是稀疏的表徵,例子中只有3個詞可能感覺不出,在實際業務中,字典的長度是上萬,而文章中出現的詞可能是幾百或幾千,故很多索引對應的位置詞頻都是0.

2. Spark程式碼

來看看官網上的案例。

object FeatureExtraction {

  def main(args: Array[String]) {

    Logger.getLogger("org.apache.spark").setLevel(Level.WARN)

    val conf = new SparkConf().setAppName("FeatureExtraction").setMaster("local")
    val sc = new SparkContext(conf)

    val spark = SparkSession
      .builder
() .appName("Feature Extraction") .config("spark.some.config.option", "some-value") .getOrCreate() // 人為得建立一個df val df = spark.createDataFrame(Seq( (0, Array("a", "b", "c")), (1, Array("a", "b", "b", "c", "a")) )).toDF("id", "words") //訓練CountVectorizerModel val cvModel: CountVectorizerModel = new CountVectorizer() .setInputCol("words") .setOutputCol("features") .setVocabSize(3) .setMinDF(2) .fit(df) //也可以基於已有的字典訓練模型 val cvm = new CountVectorizerModel(Array("a", "b", "c")) .setInputCol("words") .setOutputCol("features") //預測 cvModel.transform(df).show(false) spark.stop() } }

列印的結果:

+---+---------------+-------------------------+
|id |words          |features                 |
+---+---------------+-------------------------+
|0  |[a, b, c]      |(3,[0,1,2],[1.0,1.0,1.0])|
|1  |[a, b, b, c, a]|(3,[0,1,2],[2.0,2.0,1.0])|
+---+---------------+-------------------------+

相關推薦

文字特徵提取_03基於詞頻向量CountVectorizer

王小草SparkML筆記 筆記整理時間:2017年1月10日 筆記整理者:王小草 1. 基於詞頻數的文件向量 在文字特徵提取_01和02中分別介紹了TF-IDF文件矩陣和基於神經網路的word2vec詞嵌入矩陣。本文我們要介紹的是一個非常基礎非常

文字情感分析(二)基於word2vec和glove詞向量文字表示

上一篇部落格用詞袋模型,包括詞頻矩陣、Tf-Idf矩陣、LSA和n-gram構造文字特徵,做了Kaggle上的電影評論情感分類題。 這篇部落格還是關於文字特徵工程的,用詞嵌入的方法來構造文字特徵,也就是用word2vec詞向量和glove詞向量進行文字表示,訓練隨機森林分類器。 一、訓練word2vec詞

APP開發基於Bmob後臺共享移動web(一)

前言 本篇部落格主要用來記錄我個人移動web小專案開發過程,當然還有一些關於javascript如何使用Bmob後臺的API,現在網上關於javascript使用Bmob後臺API的例項太少了,我目前又不會搞後臺開發,加上我的這個專案打算幾個月後提交併參加比賽有些急,後臺也來不及去研

程式設計師程式設計藝術第二十六章基於給定的生成倒排索引(含原始碼下載)

第二十六章:基於給定的文件生成倒排索引的編碼與實踐作者:July、yansha。出處:結構之法演算法之道引言    本週實現倒排索引。實現過程中,尋找資料,結果發現找份資料諸多不易:1、網上搜倒排索引實現,結果千篇一律,例子都是那幾個同樣的單詞;2、到谷歌學術上想找點稍微有價

基於sklearn的文字特徵提取與分類

文章開的比較久但內容沒怎麼寫,不好意思! 題目是80萬條簡訊作為訓練資料,10%的垃圾簡訊(label = 1),90%正常簡訊(label = 0),然後在20萬條資料作為測試物件,找出垃圾簡訊與正常簡訊。我最終的評分是0.985,相對於第一0.997還是有很大差距,排

文字挖掘----基於OCR的關鍵字提取

前言 緊急新增:有人反饋看不懂。那是因為沒有看姐妹篇,《你有沒有想到,這樣的觀點挖掘引擎?》。請先閱讀本文,再繼續看下去! 做了一段時間的OCR,把大量的圖片、PDF處理成了文字。請注意:這些文字在網際網路上屬於稀有資源。這些文字以前都放在一個盒子裡,如今,用OCR做鑰匙開

文字特徵提取方法研究

一、課題背景概述 文字挖掘是一門交叉性學科,涉及資料探勘、機器學習、模式識別、人工智慧、統計學、計算機語言學、計算機網路技術、資訊學等多個領域。文字挖掘就是從大量的文件中發現隱含知識和模式的一種方法和工具,它從資料探勘發展而來,但與傳統的資料探勘又有許多不同。文字挖掘的物件

機器學習-2.特徵工程和文字特徵提取

1. 資料集的組成 前面講了,機器學習是從歷史資料當中獲得規律,那這些歷史資料的組成是個什麼格式?大都儲存在哪裡? – 在機器學習裡大多數資料不會存在資料庫中,大都存在檔案中(比如csv檔案) – 不存在資料庫原因:1. 讀取速度導致存在效能瓶頸。2. 儲存的格式不太符合機器學習

大資料生物資訊學特徵選擇方法基於搜尋的視角

#引用 ##LaTex @article{WANG201621, title = “Feature selection methods for big data bioinformatics: A survey from the search perspecti

sklearn基礎(一)文字特徵提取函式CountVectorizer()和TfidfVectorizer()

CountVectorizer()函式 CountVectorizer()函式只考慮每個單詞出現的頻率;然後構成一個特徵矩陣,每一行表示一個訓練文字的詞頻統計結果。其思想是,先根據所有訓練文字,不考慮其出現順序,只將訓練文字中每個出現過的詞彙單獨視為一列特徵,構成一個詞彙表(vocabulary

三種文字特徵提取(TF-IDF/Word2Vec/CountVectorizer

另一類最近比較流行的模型是把每一個單詞表示成一個向量。這些模型一般是基於某種文字中與單詞共現相關的統計量來構造。一旦向量表示算出,就可以像使用TF-IDF向量一樣使用這些模型(例如使用它們作為機器學習的特徵)。一個比較通用的例子是使用單詞的向量表示基於單詞的含義計算兩個單詞的相似度。Word2Vec就是這些

資料探勘-文字特徵提取方法研究

一、 課題背景概述     文字挖掘是一門交叉性學科,涉及資料探勘、機器學習、模式識別、人工智慧、統計學、計算機語言學、計算機網路技術、資訊學等多個領域。文字挖掘就是從大量的文件中發現隱含知識和模式的一種方法和工具,它從資料探勘發展而來,但與傳統的資料探勘又有

NLP中的語言模型及文字特徵提取演算法

本文以基本語言模型為邏輯主線,漫談NLP中兩個核心問題,即文字表示(Text Representation)與文字特徵提取(Feature Engineering)。通過本文你會發現,NLP的一部分經典演算法以及目前的發展都能夠通過文字表示串聯在一起,有個

【自然語言處理】【scikit-learn】文字特徵提取

詞袋錶示 文字分析是機器學習演算法的主要應用領域。 然而,原始資料,一串符號序列不能直接送到演算法本身,因為大多數演算法期望具有固定大小的數字特徵向量而不是具有可變長度的原始文字文件。 為了解決這個問題,scikit-learn提供了從文字內容中提取數字特徵的最常用方法的

sklearn文字特徵提取CountVectorizer 和 TfidfVectorizer

fromsklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer1. CountVectorizervectorizer=CountVectorizer(analyzer = "word",

sklearn文字特徵提取

class sklearn.feature_extraction.text.CountVectorizer(input='content', encoding='utf-8', decode_error='strict', strip_accents=None, lowercase=True, preproc

文字情感分析(一)基於詞袋模型(VSM和LSA)和n-gram的文字表示

現在自然語言處理用深度學習做的比較多,我還沒試過用傳統的監督學習方法做分類器,比如SVM、Xgboost、隨機森林,來訓練模型。因此,用Kaggle上經典的電影評論情感分析題,來學習如何用傳統機器學習方法解決分類問題。 通過這個情感分析的題目,我會整理做特徵工程、引數調優和模型融合的方法,這一系列會有四篇文

筆記MyBatis Mapper XML詳解 - 映射和參

gin server 頂級 ctp columns ref acl 目標 對象傳遞 MyBatis 的真正強大在於它的映射語句,也是它的魔力所在。由於它的異常強大,映射器的 XML 文件就顯得相對簡單。如果拿它跟具有相同功能的 JDBC 代碼進行對比,你會立即發現省掉了將近

最詳細資料MTK校準配置詳細說明下載

meta 峰值 req 校準 最小 lock 參考 all database 最詳細資料:MTK校準配置文件參數詳細說明下載 以下是MTK校準配置文件參數詳細說明的資料,資料到闖客網技術論壇下載,有什麽不明白的地方加群咨詢:813238832 4.1 INI 文件的介紹:4

使用Qt開發文字編輯器(二)標籤頁式實現

Qt中相關的類 標籤頁俗稱Tab頁,Qt提供了QTableWidget用於建立基於Tab頁式的文件。使用QTableWidget,我們可以很方便得新增和刪除Tab、設定和獲取Tab頁上面的文字,設定當前的Tab。 實現 MainWindow類中維護