---
title: 建構文字探勘建模之使用環境
tags: NCHC
lang: zh-tw
---
# 建構文字探勘建模之使用環境
| 子項計畫 | 查核點編號 | 查核點事項 | 預定達成日 |
|:------------------------:|:----------:|:--------------------------:|:----------:|
| 3.2 數據分析與AI模式研發 | C11 | 建構文字探勘建模之使用環境 | 2021/06/30 |
## 一、建立環境
於TWCC[1]建立開發型容器,映像檔類型為pytorch-20.11-py3,型號為c.super。
| 雲端平台 | 運算資源 | 映像檔類型 | 型號設定 | 作業系統 |
|:--------:|:----------:|:------------------------:|:--------:|:------------:|
| TWCC | 開發型容器 | pytorch-20.11-py3:latest | c.super | Ubuntu 18.04 |
## 二、使用套件
:::spoiler sentence-transformers-2.0.0
相依套件:
huggingface-hub-0.0.12
pillow-8.2.0
tokenizers-0.10.3
transformers-4.8.1
:::
:::spoiler ipywidgets-7.6.3
相依套件:
jupyterlab-widgets-1.0.0
widgetsnbextension-3.5.1
:::
:::spoiler gensim-4.0.1
相依套件:
smart-open-5.1.0
:::
CUDA-11.1.0
PyTorch-1.7.0
pandas-0.24.2
jieba-0.42.1
ckip-transformers-0.2.6
## 三、建立步驟
### 1. 於TWCC上建立容器

### 2. 安裝套件
```
$ pip install sentence-transformers==2.0.0 ipywidgets==7.6.3 gensim==4.0.1 jieba==0.42.1 ckip-transformers==0.2.6
```
## 四、建立目的
要成功運行文字探勘模型,事前的環境建置極其重要。由於許多模型需要較好的效能體驗,GPU就扮演著相當重要的角色。目前主流AI開發框架為Tensorflow及Pytorch,這兩個框架皆可在CPU及GPU上運行,本計畫將以Pytorch開發為主。
為進行文本分析處理,環境針對文本內容先進行文本資料前處理,包括資料清洗、斷詞技術、詞性分析以及TF-IDF[2],以利提供基礎的文字屬性,接著運用詞向量技術將文本詞彙轉為向量,而每一篇文本即可藉由詞彙向量組成一個文本向量,做為後續分析依據。
## 五、可執行分析工作 / 模型開發
為進行文本分析處理,須先針對文本進行資料前處理,文本資料分為結構化與非結構化資料,結構化資料可透過pandas進行資料清洗,篩選欄位資訊使資料一致。
非結構化資料如字串或文本內容,在進行NLP處理過程中,需要針對文本進行拆解,中文與英文不同的部分在於英文的斷詞可直接用空白進行區隔,中文則需針對斷詞方式進行特殊處理。可通過jieba及ckip-transformers進行斷詞及詞性標記,詞性標記可依據字詞在句法語言形態上扮演的角色可以透過詞性分類賦予語句中每個字詞最適當之詞性符號。另外,ckip-transformers中的CkipNerChunker可進行實體辨識(NER),可識別在文本中具有特定意義的實體(Entity),包括人名、地名、機構名等專有名詞,以及時間、數量、貨幣、比例等數值文字。
將文本斷完詞後,詞向量技術可將文本詞彙轉為向量,gensim中提供Word2Vec[3]可透過CBow(Continuous - Bag of Word)或Skip-gram其中一種模型將輸入的字詞轉換成一個相對低維的向量,將所有詞映射到一個向量空間。sentence-transformers[4]是基於BERT[5]運用Siamese和triplet網路架構來獲取更具語義相似性的句子,可進行文本向量比對分析。若想進行NLP模型開發,可使用gensim及transformer進行模型訓練,而Hugging Face[6]上提供許多預訓練模型,可直接載入使用或Fine-Tuning成客製化模型。
## 六、參考
[1] TWCC, https://www.twcc.ai/
[2] Aizawa, Akiko, “An Information-Theoretic Perspective of Tf-idf Measures,” Information Processing & Management, v.39, no.1, p.45-65, 2003.
[3] Mikolov, Tomas, et al. "Efficient estimation of word representations in vector space." arXiv preprint arXiv:1301.3781 (2013).
[4] Reimers, Nils, and Iryna Gurevych. "Sentence-bert: Sentence embeddings using siamese bert-networks." arXiv preprint arXiv:1908.10084 (2019).
[5] Devlin, Jacob, et al. "Bert: Pre-training of deep bidirectional transformers for language understanding." arXiv preprint arXiv:1810.04805 (2018).
[6] Hugging Face, https://huggingface.co/models