當前大家最為熟知的大型語言模型(Large Language Model,簡稱LLM)包括ChatGPT、Gemini、DeepSeek等,他們具有非常強大的運算、語言表現能力,在這些能力背後,其實是靠很多基礎自然語言處理技術(NLP)的支撐。
程式如何去理解並處理人類的語言,又是怎麼去組織語言回覆使用者的需求和問題,都是當今大家非常好奇,且持續學習、追蹤的議題。
在這30天內,我將會去探索AI、機器學習、深度學習跟語言學之間的連結與應用,動機是出自於本身為學習語言學的背景,因此我想要摸索如何透過語言學這門學問,讓我們能用程式語言更好地去處理人類的語言,也就是讓機器更能夠去抓出人類語言細膩之處,進而有更好的表現。
第一天會想要從Regular Expression開始介紹,其實是因為這個東西算是我在踏入自然語言處理(NLP)這個學門的第一印象(最初記憶...?)。由此可知,Regular Expression是NLP當中,基本中的基本,以下就來帶大家認識Regular Expression~~(我也順便複習一下😁)
Regular Expression,中文稱作正規表達式,或是正規表示式,是一種有規則地利用代數符號,來表示、代表字串(string)的方式。簡單來說,我們可以利用Regular Expression,在茫茫文海當中找出我們想要看的字詞。
舉個例子,假設今天你要比較不同劇本(如下面的對話)當中,角色對話所佔的比例,你就可以用Regular Expression寫出你要找出的字串模式(pattern)。
今天是一個晴朗的日子,
小明放學後回到家後先跟阿公打了招呼:「阿公,我回來了」。
「你回來了啊」,小明阿公聽到後回覆。
小明聞到廚房飄來的香氣,肚子咕嚕咕嚕地叫了起來。
以這個例子而言,想要找出的對話字串模式,可能會是劇本當中上下引號中間包含文字(「...」
)這種組合。透過Regular Expression,我們就可以看劇本當中這種組合出現的次數,並去做進一步的比較。
在實際使用Regular Expression之前,必須先稍微熟悉一下他的基本符號,因爲這些符號是構成搜尋模式的基礎。以下為一些基本的符號:
.
: 指任意符號字元(除了換行符號)*
: 指前一個字元符號有零或以上的次數+
: 指前一個字元符號有一或以上的次數?
: 指前一個字元符號有零或一的次數[]
: 匹配中括號中任一字元|
: 代表「或」,例如:(A|B)()
: 通常用括號表示特定分組模式-
: 匹配中範圍內任一字元^
:$
: 標示句子的結尾\w
: 任何字元或數字\W
: 任何非字元或數字\d
: 任何數字\D
: 任何非數字\b
: 標示字的邊界\B
: 標示非字的邊界\s
: 空白\S
: 非空白{n}
: 指前一字元符號出現的次數\
: 有些符號,像是.
,在Regular Expression中有特殊用途,如果我們想要用它最單純的本身,就要加上\
\n
: 換行這些只是一些基本的符號規則,還有其他符號,這邊就不一一贅述,歡迎各位多多探索,網路上有提供很多Cheat Sheet可以讓我們參考!
若要練習使用Regular Expression,可參考regex101這個網站(點我進入)。
我們可以在裡面放入想要探索的文本,並嘗試用不同符號來抓取出我們想要的字串。若是忘記一些符號的規則,網站右下角也有提供Quick Reference供我們參考。
現在就來試試吧~~
這邊回到上面我舉的例子,當我們要在這個劇本當中找出角色的對話,首先先把這小段劇本貼入TEST STRING的欄位,接著就可以在上方欄位下這個指令:
「.+」
首先最基本的就是上下引號,接著是上下引號內要放入的符號,因為引號內會是角色說的話,所以可以運用.
這個代表任意字元,再加上+
加號,代表任意字元出現一次或以上,也就是一段話。
這只是一個簡單的例子,大家可以嘗試看看用更複雜的文本,尋找更精細的pattern!!