- Gensim 教程
- Gensim - 首頁
- Gensim - 簡介
- Gensim - 開始使用
- Gensim - 文件與語料庫
- Gensim - 向量與模型
- Gensim - 建立詞典
- 建立詞袋 (BoW) 語料庫
- Gensim - 變換
- Gensim - 建立 TF-IDF 矩陣
- Gensim - 主題建模
- Gensim - 建立 LDA 主題模型
- Gensim - 使用 LDA 主題模型
- Gensim - 建立 LDA Mallet 模型
- Gensim - 文件與 LDA 模型
- Gensim - 建立 LSI 和 HDP 主題模型
- Gensim - 開發詞嵌入
- Gensim - Doc2Vec 模型
- Gensim 有用資源
- Gensim - 快速指南
- Gensim - 有用資源
- Gensim - 討論
Gensim - 文件與語料庫
在這裡,我們將學習 Gensim 的核心概念,主要關注文件和語料庫。
Gensim 的核心概念
以下是理解和使用 Gensim 所需的核心概念和術語:
文件 - 它指的是一些文字。
語料庫 - 它指的是文件的集合。
向量 - 文件的數學表示稱為向量。
模型 - 它指的是用於將向量從一種表示形式轉換為另一種表示形式的演算法。
什麼是文件?
如上所述,它指的是一些文字。如果我們詳細介紹一下,它是一個文字序列型別物件,在 Python 3 中稱為‘str’。例如,在 Gensim 中,文件可以是任何東西,例如:
- 140 個字元的簡短推文
- 單段落,即文章或研究論文摘要
- 新聞文章
- 書籍
- 小說
- 論文
文字序列
文字序列型別在 Python 3 中通常稱為‘str’。我們知道,在 Python 中,文字資料是用字串或更具體地說‘str’物件處理的。字串基本上是不可變的 Unicode 程式碼點序列,可以用以下方式編寫:
單引號 - 例如,‘你好嗎?’。它也允許我們嵌入雙引號。例如,‘你好,“怎麼樣”嗎?’
雙引號 - 例如,"你好嗎?"。它也允許我們嵌入單引號。例如,"你好,'怎麼樣'嗎?"
三引號 - 它可以有三個單引號,例如,'''你好嗎?'''。或者三個雙引號,例如,"""你好,'怎麼樣'嗎?"""
所有空格都將包含在字串文字中。
示例
以下是 Gensim 中文件的示例:
Document = “Tutorialspoint.com is the biggest online tutorials library and it’s all free also”
什麼是語料庫?
語料庫可以定義為在自然交流環境中產生的大型結構化機器可讀文字集。在 Gensim 中,文件物件的集合稱為語料庫。語料庫的複數是corpora。
語料庫在 Gensim 中的作用
Gensim 中的語料庫具有以下兩個作用:
作為訓練模型的輸入
語料庫在 Gensim 中扮演的第一個也是最重要的角色是作為訓練模型的輸入。為了初始化模型的內部引數,在訓練期間,模型會從訓練語料庫中查詢一些共同的主題和主題。如上所述,Gensim 側重於無監督模型,因此它不需要任何人工干預。
作為主題提取器
模型訓練完成後,可用於從新文件中提取主題。這裡,新文件是在訓練階段未使用的文件。
示例
語料庫可以包含特定人員的所有推文、報紙的所有文章列表或特定主題的所有研究論文等。
收集語料庫
以下是一個包含 5 個文件的小型語料庫示例。這裡,每個文件都是一個包含單個句子的字串。
t_corpus = [ "A survey of user opinion of computer system response time", "Relation of user perceived response time to error measurement", "The generation of random binary unordered trees", "The intersection graph of paths in trees", "Graph minors IV Widths of trees and well quasi ordering", ]
預處理收集語料庫
收集語料庫後,應採取一些預處理步驟以保持語料庫簡單。我們可以簡單地刪除一些常用的英語單詞,例如“the”。我們還可以刪除語料庫中只出現一次的單詞。
例如,以下 Python 指令碼用於將每個文件小寫,按空格拆分並過濾掉停用詞:
示例
import pprint
t_corpus = [
"A survey of user opinion of computer system response time",
"Relation of user perceived response time to error measurement",
"The generation of random binary unordered trees",
"The intersection graph of paths in trees",
"Graph minors IV Widths of trees and well quasi ordering",
]
stoplist = set('for a of the and to in'.split(' '))
processed_corpus = [[word for word in document.lower().split() if word not in stoplist]
for document in t_corpus]
pprint.pprint(processed_corpus)
]
輸出
[['survey', 'user', 'opinion', 'computer', 'system', 'response', 'time'], ['relation', 'user', 'perceived', 'response', 'time', 'error', 'measurement'], ['generation', 'random', 'binary', 'unordered', 'trees'], ['intersection', 'graph', 'paths', 'trees'], ['graph', 'minors', 'iv', 'widths', 'trees', 'well', 'quasi', 'ordering']]
有效的預處理
Gensim 還提供更有效地預處理語料庫的功能。在這種預處理中,我們可以將文件轉換為小寫標記列表。我們還可以忽略過短或過長的標記。此類函式為gensim.utils.simple_preprocess(doc, deacc=False, min_len=2, max_len=15)。
gensim.utils.simple_preprocess() 函式
Gensim 提供此函式將文件轉換為小寫標記列表,並忽略過短或過長的標記。它具有以下引數:
doc(str)
它指的是應該應用預處理的輸入文件。
deacc(bool, 可選)
此引數用於刪除標記中的重音符號。它使用deaccent() 來執行此操作。
min_len(int, 可選)
藉助此引數,我們可以設定標記的最小長度。小於定義長度的標記將被丟棄。
max_len(int, 可選)
藉助此引數,我們可以設定標記的最大長度。大於定義長度的標記將被丟棄。
此函式的輸出將是從輸入文件中提取的標記。