當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python cuml.feature_extraction.text.HashingVectorizer用法及代碼示例


用法:

class cuml.feature_extraction.text.HashingVectorizer(input=None, encoding=None, decode_error=None, strip_accents=None, lowercase=True, preprocessor=None, tokenizer=None, stop_words=None, token_pattern=None, ngram_range=(1, 1), analyzer='word', n_features=1048576, binary=False, norm='l2', alternate_sign=True, dtype=<class 'numpy.float32'>, delimiter=' ')

將文本文檔集合轉換為標記出現的矩陣

它將文本文檔的集合轉換為包含令牌出現計數(或二進製出現信息)的 cupyx.scipy.sparse 矩陣,如果 norm='l1' 則可能歸一化為令牌頻率,如果 norm='l2' 則投影到歐幾裏德單位球麵上.

此文本矢量化器實現使用散列技巧來查找標記字符串名稱以進行整數索引映射。

這種策略有幾個優點:

  • 它的內存非常低,可擴展到大型數據集,因為不需要在內存中存儲詞匯字典,這對於通常受內存限製的 GPU 而言更為重要

  • pickle 和un-pickle 很快,因為它除了構造函數參數之外沒有任何狀態

  • 它可以用於流式傳輸(部分擬合)或並行管道,因為在擬合期間沒有計算狀態。

還有一些缺點(與使用帶有內存詞匯表的 CountVectorizer 相比):

  • 無法計算逆變換(從特征索引到字符串特征名稱),這在嘗試反省哪些特征對模型最重要時可能會成為問題。

  • 可能存在衝突:不同的標記可以映射到相同的特征索引。但是在實踐中,如果 n_features 足夠大(例如文本分類問題為 2 ** 18),這很少會成為問題。

  • 沒有 IDF 加權,因為這會使轉換器有狀態。

使用的散列函數是有符號的 32 位版本的 Murmurhash3。

參數

lowercase布爾,默認=真

在標記化之前將所有字符轉換為小寫。

preprocessor可調用或無(默認)

覆蓋預處理(字符串轉換)階段,同時保留標記化和n-grams 生成步驟。

stop_words字符串 {‘english’},列表,默認 = 無

如果‘english’,則使用內置的英語停用詞列表。 ‘english’ 有幾個已知問題,您應該考慮替代方案。如果是列表,則假定該列表包含停用詞,所有這些都將從生成的標記中刪除。僅適用於 analyzer == 'word'

ngram_range元組 (min_n, max_n), 默認=(1, 1)

n-values範圍的上下邊界,用於提取不同的單詞n-grams或char n-grams。將使用所有滿足 min_n (1, 1) 的 ngram_range 僅表示一元組,(1, 2) 表示一元組和二元組,而(2, 2) 表示僅二元組。

analyzer字符串,{‘word’, ‘char’,‘char_wb’}

特征應該由單詞n-gram還是字符n-grams構成。選項 ‘char_wb’ 僅從單詞邊界內的文本創建字符 n-grams; n-grams 在單詞的邊用空格填充。

n_features整數,默認=(2 ** 20)

輸出矩陣中的特征(列)數。少量特征可能會導致哈希衝突,但大量特征會導致線性學習器中的係數維度較大。

binary布爾值,默認 = 假。

如果為 True,則所有非零計數都設置為 1。這對於模擬二進製事件而不是整數計數的離散概率模型很有用。

norm{‘l1’, ‘l2’},默認='l2'

用於標準化術語向量的範數。 None 表示沒有標準化。

alternate_sign布爾,默認=真

當為 True 時,將交替符號添加到特征中,以近似保存散列空間中的內積,即使對於小的 n_features 也是如此。這種方法類似於稀疏隨機投影。

dtype類型,可選

fit_transform() 或 transform() 返回的矩陣類型。

delimiterstr,默認為空格

如果stop_words 不是無,則用作替換停用詞的字符串。通常,單詞之間的分隔符是一個不錯的選擇。

例子

from cuml.feature_extraction.text import HashingVectorizer
corpus = [
    'This is the first document.',
    'This document is the second document.',
    'And this is the third one.',
    'Is this the first document?',
]
vectorizer = HashingVectorizer(n_features=2**4)
X = vectorizer.fit_transform(corpus)
print(X.shape)

輸出:

(4, 16)

相關用法


注:本文由純淨天空篩選整理自rapids.ai大神的英文原創作品 cuml.feature_extraction.text.HashingVectorizer。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。