前一天我們談了一些關於如何處理字串的的基本操作
同時在結尾有稍微提出一點對於文字的看待觀點
那我們今天就針對昨天提出的這些問題來做一些處理吧~
回到前一天我們提出的問題——電腦要如何看待這些文字呢?
這個時候就要提到一個概念叫做token(中文比較接近的翻譯應該是標記),因為對於電腦來說並不認得這些單字的實際意思,不過卻可以分的出來這些單字是一樣或不一樣的,因此我們可以透過將整篇文章分割成不同的基本單位——英文通常以一個單字為單位,而中文則以一個詞語為單位。
text = "I have a pen. You had two apples."
token = nltk.word_tokenize(text)
token
輸出:
['I', 'have', 'a', 'pen', '.', 'You', 'had', 'two', 'apples', '.']
回到我們昨天的另一個問題——apple和apples應該要是視為一樣還是不同的東西呢?
這個時候我們可以有兩種方式來把它轉換
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', '.']
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