跳到主要內容

Concise Basic: 建構自己的語料庫 Compile Your Own Corpus


Concise是一套用來建構並分析語料庫的應用程式,目的在於提供簡易的程式界面,讓一般不會程式設計的人文社會學科使用者,也能對特殊的文本進行語料庫語言學上的分析。語料庫(corpus)是Concise運作的核心概念,這份文件將會介紹語料庫的基本概念,並且簡介Concise在建構語料庫的背後運作過程。



什麼是語料庫?


語料庫(corpus,複數為corpora)與文件集(document set)在Concise裡頭是同樣的概念,指的是用來解決您資訊需求的素材,或是您感興趣的目標文本。必須先有素材存在,才有可能進行接下來的分析。


所有素材、文本的集合就是語料庫。您可以將語料庫想像為一本雜誌,這本雜誌是由許多個別的文章組成的。這時,個別的文章就是語料庫中的文件(document),而這本文件集合的雜誌就是個語料庫。如果將單位改變,把一本雜誌所有的內容作為一個文件,那麼雜誌的集合就成了一個更大的語料庫。


Corpus Manager 用是相同的概念,每一列都是一份文件。這些文件集合成了Concise的語料庫。您可以將Corpus Manager視為雜誌的目錄,雙擊其中的文件,或是按右鍵選擇「開啓 Open」,就能打開Document Viewer檢視文件的內容。


Concise 是如何建構語料庫的?


用Concise來建構語料庫並不複雜,只要點選「匯入 Import」,選取要匯入的檔案,稍微調整一下自訂詞庫,接下來都交給Concise去處理。


然而,在這個簡單的步驟後頭,語料庫的建構涉及幾個概念:分詞(tokenisation)、標註(tagging)與索引(indexing)

中文分詞


分詞(tokenisation)指的是將文件中原始的詞彙轉為控制的詞彙。簡單的說,就是處理怎麼樣才算是一個詞彙(word)的問題。對英文,或是用空白字元作為間隔的語系來說,這個問題會稍微簡單一些,但是仍得要處理多樣詞形是否要還原為基本詞形的問題。舉例來說,過去式、進行式與未來式是否要還原為簡單現在式,是否要保留所有格等問題。

中文對時態與所有格並沒有那麼敏感,但是詞彙的邊界卻是個大問題。中文字指的是「字元」(char)的概念,但語料庫中重視的卻是詞彙(token或word)。詞彙可能僅有一個中文字,或是由兩個以上的中文字構成。要怎麼樣將一連串的中文句子斷成一個個有意義的詞彙,一直是讓許多中文的使用者或開發者頭痛的部分。

目前找得到,並且原本就以繁體中文為基礎建構的分詞系統,大概就是中央研究院中的中文斷詞系統。可惜的是這個系統並不是開源的,當然背後的詞庫與分詞的依據,全都只能仰賴該小組發表的論文。對一般的分詞需求可能足夠了,但是特殊主題(如農業、旅遊、美食等)的應用,特別是專有名詞的處理上就顯得有些不足。

目前比較常見的Java開源分詞軟體大概有下列幾個:ik-analyzerICTCLASmmseg4j庖丁解牛fudannlpsmallseglingpipeStandford Word Segmenter。以上所有的分詞軟體用的都是用簡體中文的詞庫,或用簡體中文詞庫訓練出來的模型。儘管這些模型可以用在繁體,但是效果並不怎麼好。

然而其中的mmseg4j,應用了蔡志浩的MMSEG演算法,只要將裡頭的詞庫與中文字的機率檔案代換,即可應用於繁體中文。同時,也方便特殊主題的使用者新增自訂詞庫。這個便利的特性符合Concise的需求,因而在修改了mmseg4j原始碼讓它也能拋出標點符號後,成為Concise的中文分詞核心。


標註(tagging)


不同的研究目的會需要不同的標註方式,最常見的標註是詞性(part-of-speech)。根據不同的目的,有時還會對類碼(lemma,或稱還原詞形)、分類、命名實體(named entity)進行標註。有的研究將標註視為分詞的一部份。

Concise 從 0.3.6 之後,在匯入文件時增加詞性標註的功能。詞性最重要的功能,依舊是區別詞彙的不同意義。在中文裡頭,同樣的詞彙在不同的句子或是文脈中,經常有不同的作用。有時候可以當作名詞,有時候又作為副詞或是形容詞。詞性的標註有助於消彌這些詞彙在文脈中的歧義性。


然而就如同中文分詞的系統,詞性標註的開源程式依舊缺乏繁體中文的模型。好在繁體中文與簡體中文極為相似,句法在某種程度上是可以共通的。因而可以運用簡體中文訓練出的詞性標註模型,直接對分過詞的繁體中文進行詞性標註。

Concise選擇的是 Stanford NLP 中的 Part-Of-Speech Tagger,用的模型是賓州大學的中文句結構樹(CTB, Chinese Tree Bank)所訓練出來的。詞性的說明可以在這裡下載。


索引(indexing)


索引可以讓應用程式快速找到搜尋的目標,但索引的方式直接影響搜尋的結果。很多搜尋系統在建構索引的時候會略過標點符號與停用詞(stop words),認為這些資訊對搜尋結果是冗贅的。但是Concise對空白字元(空格、tab、斷行符號)外的所有詞彙(包括標點符號)進行索引,讓使用者在後續的操作中,根據其目的自行選擇要顯示的詞彙與停用詞。

Concise在0.3.0之後採用Apache Lucene Core作為索引與搜尋的核心,這個核心在許多專案中都能見到。語料庫匯入Concise之後,相關的索引也會一併完成。藉著索引中儲存的資訊,讓Concise能較為快速地找尋並顯示結果。



一旦建構了語料庫,就可以依據不同的搜尋、呈現、與過濾方式,提取文本中的訊息。從最基本的脈絡化關鍵詞(Keyword in context)、詞彙的計數,到具備簡單統計功能的詞語共現(collocation)和語料庫語言學的關鍵詞(Keyword),甚至是視覺化的文本探索,Concise試圖用簡便的方式讓使用者/研究者能夠從不同的角度看待他們的文本。




留言

熱門文章

OREO聖誕麋鹿 #差不多食譜

聖誕節就快到囉!今年我們用現成的材料,來做些簡單好玩的小東西。第一個登場的,就是有著紅鼻子的麋鹿。 3隻「OREO聖誕麋鹿」差不多需要這些材料: OREO餅乾 ...... 3片 蝴蝶餅 ...... 3-6片(掰斷有失敗的機會) 餅乾棒 ...... 3根(我用百力滋) 眼睛糖 ...... 6顆 紅色m&m's ...... 3顆(紅鼻子) 融化的巧克力 ...... 適量(黏著用) 「OREO聖誕麋鹿」差不多是這麼做的: Step 1. 準備好材料 計算一下自己想要做多少隻OREO聖誕麋鹿,按照材料表把需要的餅乾糖果給買回來。材料備齊之後,就把巧克力拿去用微波爐融化備用。沒有微波爐的也可以隔水加熱,想辦法把巧克力融化就可以。 Step 2. 製作麋鹿 再過來就要開始製作麋鹿了!先把OREO轉開,留下有奶油的那邊,待會方便把餅乾稍壓一下固定。 把蝴蝶餅掰斷成鹿角的樣子,沾上巧克力,擺到OREO上面。餅乾棒同樣沾上巧克力,一樣放上OREO。接著蓋上OREO,稍微壓一下。 這邊可以大膽去擺,在巧克力凝固前都可以調整。要是發現黏不太住,多沾點巧克力再試試。 Step 3. 擺出表情 接下來要用眼睛糖和紅色m&m's做出麋鹿的表情。用筷子將眼睛糖和m&m's沾上巧克力,黏到眼睛鼻子相應的位置就可以。 沒有辦法買到眼睛糖的,可以用白巧克力先畫出眼白,再用黑巧克力點出眼珠。紅鼻子也可以自己換成橘色、綠色、藍色等等不同的m&m's。 Step 4. 讓巧克力凝固 表情做好之後不要馬上移動,得要有點耐心讓巧克力凝固。要不然悲劇馬上就會發生,不是表情變扭曲,就是整支麋鹿散架。 等巧克力凝固後,就可以像棒棒糖那樣拿起來玩耍了。再來杯熱牛奶,整隻麋鹿給他泡下去也很有趣。 最後幫大家整理一下「OREO聖誕麋鹿」的做法: 巧克力用微波爐加熱融化備用。 轉開OREO。 蝴蝶餅掰成鹿角的形狀,沾巧克力後放上OREO餅乾。 餅乾棒同樣沾上巧克力,擺上OREO餅乾。 蓋上餅乾,在眼睛糖和紅色m&m’s背後沾上巧克力,黏到眼睛和鼻子相應的位置。 稍微等一下,讓巧克力凝固就好囉!

木乃伊熱狗捲 Hot Dog Mummies - 差不多食譜 #萬聖節

這次我們繼續過萬聖節,來做個更簡單的「木乃伊熱狗捲」。看完材料表,相信你已經知道該怎麼做了。 「木乃伊熱狗捲」差不多需要這些材料: 小熱狗 ...... 4條(大熱狗可以切半使用) 起酥片 ...... 1片 蛋黃 ...... 1個 起司片 ...... 1片 海苔 ...... 1片 番茄醬 ...... 適量 「木乃伊熱狗捲」差不多是這麼做的: Step 1. 起酥片切條 從冷凍庫拿出起酥片,在室溫放一陣子,等它稍微變軟之後再開始切成細條。稍微放軟再切比較不會破掉。 Step 2. 捲熱狗 第二步,要開始加上熱狗來處理。方法也很簡單,就是把切好的起酥條一圈一圈纏上小熱狗,一條用完再接另一條繼續纏,怎麼纏都沒關係。 要是你的熱狗比較大根,可以切短一點來弄,造型會比較可愛。 Step 3. 刷蛋液送進烤箱 弄好之後來個蛋黃,稍微攪散就可以塗到纏著熱狗的起酥條上。蛋黃液是讓顏色稍微金黃一點,沒有塗蛋黃液的那些烤起來都白白的。 接著就可以送進烤箱了,用攝氏200度烤10分鐘左右,把起酥皮烤出你要的顏色就可以。 Step 4. 裝上眼睛,沾點番茄醬 出爐稍微放涼,趁這個時間來做眼睛。拿起司片弄成圓圓的眼睛,再拿一點海苔當眼球,組合好隨意擺到木乃伊熱狗上。這是萬聖節用的,真的只要亂擺就可以囉! 最後,隨意沾點番茄醬在繃帶上面,我們的木乃伊熱狗捲就完成囉! 結尾再幫大家複習一下「木乃伊熱狗捲」的做法: 酥片拿出來退冰,稍微軟化之後切成細條。 將起酥條一圈圈纏上小熱狗。 刷上蛋液,送入攝氏200度的烤箱烤到金黃。 稍微放涼,擺上起司片和海苔做的眼睛,再沾點番茄醬就好囉!

差不多食譜:手工巧克力餅乾 Chocolate Cookies

又是手工餅乾,最近一連出了兩份餅乾食譜,這個「手工巧克力餅乾」已經是第三份了。會不會有更多呢?我可以告訴大家,這是肯定的。 要怪就怪這個陰鬱的冬季雨天,哪裡都不方便去,也懶得出去。餅乾櫃空在那邊已經很久了,雖然有時候會嘴饞,但也沒有迫切去補貨的必要。反正經常開伙,平常該有的材料都會有,自己弄個成分完全透明的零食,也是個不錯的選擇。再說,用烤箱進行烘焙時,房間會變得比較乾燥,也比較溫暖。在夏天是個折磨,但到了冬天,這種感覺還滿不錯的。 話不多說,開始進行這一道「手工巧克力餅乾」的準備工作。