iT邦幫忙

2025 iThome 鐵人賽

DAY 4
1
AI & Data

讓電腦聽懂人話:30 天 NLP 入門系列 第 4

Day 4|文本清理(上):Regex 介紹

  • 分享至 

  • xImage
  •  

引言

近年來 Thread 是個很流行的社群媒體,相信大家在滑脆的時候應該會覺得密密麻麻的文字,看得非常眼花撩亂...

  • 有的貼文會參雜很多表情符號 😘🤡💅🏻
  • 有的貼文會不停的中英夾雜,you know, like 晶晶體之類的
  • 有的貼文會附上一長串業配的商品連結 🍃 https://youtu.be/dQw4w9WgXcQ?si=cEHLtXW2N0N9ePHo
  • 有的貼文會加上好幾個 hashtag,#堅持 #NLP #一輩子

在處理文字資料時,經常會遇到很雜亂的內容,像是多餘的空格、亂七八糟的標點符號、特殊符號,甚至還有錯字。這些對電腦來說都是雜訊,如果不先清理,我們就很難從中提取出有用的資訊。甚至在後續我們用來訓練模型時,也會大大影響模型的表現。

因此,文本清理是 NLP 的第一步,也是非常關鍵的一步。它決定了後續整個任務的成敗 — 正所謂「Garbage in, garbage out」!

正規表達式 Regular Expression(Regex)

Regex 是我們在做文本處理得好幫手~它讓我們可以用有限且特定的字符,來描述我們所讀的文字,也可以說它是一套用於「搜尋和匹配」的規則。

它最主要的用途有:

  • 找出特定模式的文字
  • 替換不需要的文字
  • 提取有用資訊

Regex 基本元素

1. 字元匹配(Character)

Regex 用途
\d 數字 (0-9)
\D 非數字
\w 字母 (大小寫Aa-Zz) 跟數字 (0-9)
\W 非字母跟數字
\s 空白格
\S 非空白格
\n 換行符號
\t tab
. \n 以外所有字元

2. 數量匹配(Quantifier)

這個要搭配它的前一個字元使用,做數量的乘法

Regex 用途
* 0 或更多
+ 1 或更多
? 0 或 1
{n} n 個
{n,} 最少 n 個
{n,m} n 到 m 個

3. 位置匹配(Anchor)

Regex 用途
^ 字串開頭或多行字串中每一行的開頭
$ 字串結尾或多行字串中每一行的結尾
\A 字串開頭
\Z 字串結尾
\b 詞語邊界
\B 非詞語邊界
\< 詞語開頭
\> 詞語結尾

4. 群組和範圍(Group and Range)

Regex 用途
(abc) abc 作為一個群組
(a|b) ab
[abc] abc
[^abc] abc
[0-9] 數字 0-9
[A-Q] 大寫字母A-Q
[a-q] 小寫字母a-q

5. 逃脫字元(Escape)

當我們真的要指涉某個特殊符號,而不是要使用它的匹配功能時,要使用 \

Regex 用途
\? ?(不是數量匹配字元)

使用情境範例

當我們需要從文章中抓取某些有特定模式的資訊時,就可以使用 Regex 輕鬆匹配!

1. 手機號碼

台灣的手機號碼都是09開頭,總共有十碼,我們可以用以下表達式:

09\d{8}

2. 日期

日期通常會有固定的格式,像是YYYY-MM-DD,我們可以用以下表達式:

\d{4}-\d{2}-\d{2}

3. Email

Email也會有固定的格式,像是以下:

aaa@gmail.com
bbb@yahoo.com.tw
ccc123@hotmail.com

我們可以用以下表達式:

\w+@[a-z]+\.com\.?[a-z]*
  • \w+:開頭可能會是字母跟數字混合,並且是一個字元以上
  • @[a-z]+@ 後面會是不同的信箱因此不會有數字,並且也是一個字元以上
  • \.com:因為這裡的.是要直接指涉.,而不是用作匹配所有字元的功能,因此要用escape的斜線
  • \.?:後面的區域名不一定會出現因此用?代表.會出現 0 或 1 次
  • [a-z]*:區域名只會是字母並且不一定會出現,因此用 0 或以上

結語

Regex 真的是十分好用的文本清理工具~~雖然一開始上手會有點不習慣,也需要花比較多時間去記住規則還有去想要怎麼做轉換。在最後推薦的大家兩個練習的好幫手:

  • Regular Expression Cheat Sheet:這個小抄整理得不錯,但網路上還有很多其他人整理的,可以去找自己看得慣的~
  • regex101:可以把要匹配的內容貼上去,然後練習打出 regex,這裏會幫你顯示你打的有沒有匹配到,是很好的練習工具 👍🏻

下一篇會進一步介紹 Python 中使用 Regex 的套件 re,還有介紹幾個比較簡單且常用的功能~

References


上一篇
Day 3|NLP 應用概覽
下一篇
Day 5|文本清理(下):Regex 應用
系列文
讓電腦聽懂人話:30 天 NLP 入門5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言