iT邦幫忙

2021 iThome 鐵人賽

DAY 15
0
AI & Data

資料三十-那些最基本的資料處理與分析技能系列 第 15

【Day15-文字】文字資料的基本處理——Token、Stem、Stopword

前一天我們談了一些關於如何處理字串的的基本操作
同時在結尾有稍微提出一點對於文字的看待觀點
那我們今天就針對昨天提出的這些問題來做一些處理吧~

讓程式記得不同的單字——Tokenization

回到前一天我們提出的問題——電腦要如何看待這些文字呢?
這個時候就要提到一個概念叫做token(中文比較接近的翻譯應該是標記),因為對於電腦來說並不認得這些單字的實際意思,不過卻可以分的出來這些單字是一樣或不一樣的,因此我們可以透過將整篇文章分割成不同的基本單位——英文通常以一個單字為單位,而中文則以一個詞語為單位。

text = "I have a pen. You had two apples."
token = nltk.word_tokenize(text)
token

輸出:

['I', 'have', 'a', 'pen', '.', 'You', 'had', 'two', 'apples', '.']

讓程式記得同一個單字的不同樣子——Stemming/Lemmatization

回到我們昨天的另一個問題——apple和apples應該要是視為一樣還是不同的東西呢?
這個時候我們可以有兩種方式來把它轉換

詞根提取-Stemming

from nltk import PorterStemmer
PS = PorterStemmer()
token_stem  = [PS.stem(word) for word in token]
token_stem

輸出:

['i', 'have', 'a', 'pen', '.', 'you', 'had', 'two', 'appl', '.']

詞性轉換-Lemmatization

from nltk.stem import WordNetLemmatizer
LM = WordNetLemmatizer()
token_lem = [LM.lemmatize(word,"v") for word in token]
token_lem = [wnl.lemmatize(word,"a") for word in token_lem]
token_lem = [wnl.lemmatize(word,"n") for word in token_lem]
token_lem

輸出:

['I', 'have', 'a', 'pen', '.', 'You', 'have', 'two', 'apple', '.']

嗯...今天被拉去續攤,所以解釋比較簡陋XD


上一篇
【Day14-字串】淺談python中最常用到的str處理方式——格式化、尋找、取代、分割、合併
下一篇
【Day16-搜尋】茫茫文海當中找到那個對的詞——文字處理利器之正規表達式在python的應用
系列文
資料三十-那些最基本的資料處理與分析技能30

尚未有邦友留言

立即登入留言