当前位置:网站首页 > 技术博客 > 正文

pycharm汉化教程



在自然語言處理 (NLP) 的任務中,純文字的資料型態本身是相當難以進行處理的,尤其是在機器學習的任務當中。

試想:今天我們輸入圖像進行分類的訓練,我們可以使用『像素值』代表圖片的特徵進入模型當中進行訓練。但是文字呢?

文字型態的資料,是沒有辦法如同數值資料一樣進行 Forward Propagation 以及 Backward Propagation 的、是沒有辦法微分的,簡單來講,是沒辦法進行運算並且訓練權重網路的。

為了要解決這個問題,我們需要將『文字』轉換成『數值』。

最簡單的方法,就像我在《[PyTorch] 旅館評論情感分析實戰紀錄 (0)》這篇文章中所做的一樣,將每個『相異字』(Character) 轉換成一個特定的數字。這樣一來,我們便可以將機器學習相關的技術應用在文字領域了。

不過,只是單純地轉換 Character,有時是得不到較好的結果的。對中文而言,有時使用『詞』作為句子裡的基本元件單位會更恰當;另外,只是轉成一個『數字』也很難表現出中文詞彙的多樣性,轉換成『向量』通常效果會更好一點。

Word2Vec 就是這樣的一個工具,其最早是為 Google 開發的一個工具;而今天本文的主角 Gensim 則是它的 Python 實現 (不過只有最高層是 Python、內部還是封裝了 Word2Vec 的 C 接口)。

以下就來簡單地介紹該如何使用 Gensim 這項工具來完成將『文字轉換成向量』這項工作吧!

如果你的電腦裡還沒有 Gensim,可以透過以下指令下載:

這裡以 Wiki 上的中文資料為訓練語料,Wiki 上的資料可是相當優秀的。不僅量多、而且詞彙涵蓋範圍廣,可以應用在許多不同的任務上。

可以從這個網址找到下載處:https://zh.wikipedia.org/wiki/Wikipedia:%E6%95%B0%E6%8D%AE%E5%BA%93%E4%B8%8B%E8%BD%BD

進入之後可以直接選擇一個日期,那是不同時間點的資料備份。

比如說我選擇了 這個時間點的資料,那麼,我要下載的資料則為:zhwiki--pages-articles-multistream.xml.bz2

要注意的是,你的日期可能與我不同,不過同樣都是這份檔案。

下載之後不用解壓縮,可以使用 Gensim 裡的工具直接提取文章。

WikiCorpus 是 Gensim 裡面的一個函式,可以幫助我們從 Wiki 的資料中提取乾淨的文章。

程式碼如下:

我將原本應是標點符號的地方以空白隔開,畢竟這可能會影響到『斷詞結果』。

『斷詞』這項工作指的是文本分成以『詞』為單位的句子。斷詞的工具有很多種,基本上可以參考我之前寫過的:

如果想要對繁體中文斷詞效果最好,首推 CKIP;如果是要斷詞速度的話,那非 Jieba 莫屬。在這裡以 Jieba 示範。

(註:Wiki 的資料當中許多地方是簡繁混雜的,可以考慮使用 OpenCC 這項工具來轉換。詳細的作法可以參閱我之前撰寫過的《中文繁簡轉換的便利工具 —— OpenCC》)

處理好之後的文本 seg.txt 應如下 (為了展示斷詞效果,我將詞彙斷開的地方使用換行示意):

最後,就只需要使用 Gensim 訓練 Word2Vec 模型即可。

訓練完之後,我將模型儲存為 "word2vec.model"。

首先,我們將剛才訓練好的模型讀入。然後我們隨便選了個詞『生物』。

我們可以看到詞彙的維度的確是 100 維,跟我們剛才訓練時設定的一致。

然後我們可以使用 most_similar 看到這個向量最相近的詞彙 (基本上是將兩向量進行 Cosine Similarity 計算) —— 這是在只使用『數字』代表一個詞彙時所做不到的事情。

有了將文字轉向量之後,大部分機器學習的模型都能跑了,非常方便。


我們所訓練的模型自然不可能涵蓋這個世界上所有的詞彙;也就是說,我們需要考慮在碰到不存在模型詞表(corpus)中的詞彙時,應該如何去處理未知詞。

目前就我所熟悉的處理方式可以分為兩類:

模型平均向量』我們可以事先計算好、而『全零向量』也可先設置好。接著,再使用 try-except 針對『詞彙』不在『詞表』中的情況進行錯誤處理。

比方說像以下的範例程式碼:

  • 上一篇: 二维码图片解码器
  • 下一篇: lxml怎么使用
  • 版权声明


    相关文章:

  • 二维码图片解码器2025-07-11 08:01:00
  • redis数据备份如何实现2025-07-11 08:01:00
  • 倒排索引算法2025-07-11 08:01:00
  • es6常用特性2025-07-11 08:01:00
  • .suffixes makefile2025-07-11 08:01:00
  • lxml怎么使用2025-07-11 08:01:00
  • csrf攻击防范2025-07-11 08:01:00
  • 图像质量评价算法2025-07-11 08:01:00
  • 结构体指针使用方法2025-07-11 08:01:00
  • 什么是余弦相似性2025-07-11 08:01:00