系統參數設定

Sys.setlocale(category = "LC_ALL", locale = "zh_TW.UTF-8") # 避免中文亂碼
## [1] "zh_TW.UTF-8/zh_TW.UTF-8/zh_TW.UTF-8/C/zh_TW.UTF-8/zh_TW.UTF-8"

安裝需要的packages

packages = c("dplyr", "tidytext", "jiebaR", "gutenbergr", "stringr", "wordcloud2", "ggplot2", "tidyr", "scales")
existing = as.character(installed.packages()[,1])
for(pkg in packages[!(packages %in% existing)]) install.packages(pkg)
require(dplyr)
## Loading required package: dplyr
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
require(tidytext)
## Loading required package: tidytext
require(jiebaR)
## Loading required package: jiebaR
## Loading required package: jiebaRD
require(gutenbergr)
## Loading required package: gutenbergr
library(stringr)
require(wordcloud2)
## Loading required package: wordcloud2
library(ggplot2)
library(tidyr)
library(scales)

原住民傳說內容

sai_shia <- "賽夏族-住在山裡的矮黑人。很久以前,賽夏族人打獵的時候,都是全體一起出去,一大群人賣力的圍捕和獵殺,辛苦半天所得到獵物並不多。那時候,他們也不會耕種,季節不好,採摘不到果實和野菜,只好餓肚子,日子過得辛苦極了。頭目眼看田園裡穀穗稀疏,只好派勇士們出去打獵,勇士們都一起大聲回答:「我們一定要打到獵物回來!」他們在迷霧裡搜索著動物的蹤跡。突然間,勇士嘎歷發現一條小路,於是獨自走過去,當他想要回頭和同伴說話時,卻發現自己落單了。嘎歷開始緊張,一不小心就落下深不見底的山谷。當嘎歷落了地穩住了身子,突然聽見山腰有人在低聲吟唱,於是急忙躲到大樹後,他看見一群矮黑人圍坐成一圈,他們的身高不到一百公分,黑皮膚,捲頭髮,上半身裸露著,唱著怪歌,像正在舉行一種儀式,圈子中間是一堆纏繞著的百步蛇。矮黑人唱歌跳舞,百步蛇一條一條悄悄的挪開了。原來這是一種「驅蛇的儀式」。嘎歷想:「這些矮黑人好像有法力,也許可以請他們幫忙,讓我們的作物豐收」,於是他鼓足勇氣走進山洞,矮黑人頭目聽了他的請求,也很慷慨地答應,但是他開出條件:「我們可以幫忙,不過收成的一部分要給我們。」矮黑人到了賽夏部落以後,族人的生活終於改善了,金黃的田地讓人看了心裡好歡喜。慶功宴上,矮黑人頭目得意地對賽夏族人說:「你們現在的生活,都是矮黑人的功勞!」矮黑人因為懂得歌唱、耕種、打獵、祭祀,又會施法術,他們開始擄掠,欺侮婦女,終於引起賽夏族人不滿,於是決定反抗。又到了秋收的時候,賽夏族頭目還是準備了豐盛的食物,邀請矮黑人一起來慶祝。就在同時,嘎歷奉頭目的命令在矮黑人回家的路上佈置了一個陷阱。宴會結束,兩族人各自返家,因為天還沒亮,矮黑人們又喝得醉醺醺的,走著走著一不小心全都掉下了陷阱摔死了。矮黑人頭目看到他的族人摔死,才知道原來中了賽夏族人的計,於是憤怒的詛咒說:「賽夏族人,恩將仇報!你們將受到我祖靈的懲罰,田地不再發芽!」嘎歷回答:「我們對你們多麼真心,可是你們卻欺侮我們的妻女,我們這麼做是不得已的。之後,居然一連下了好幾個月的雨,賽夏族人住的地方都淹水,好多人也因此喪生。就在這時,矮黑人頭目又來了,他說:「過去的就算了,我來教你們矮靈祭歌,你們要誠心誠意的唱,否則還會受到矮靈的懲罰。」於是,賽夏頭目鄭重的宣布:「以後每年的豐收慶改為矮靈祭,誠心祈求矮靈不要降災。」所以,以後每年矮靈祭的時候,大家都會誠心誠意的祈禱懺悔,徹夜跳舞,來安慰矮靈,希望能夠藉著祭典,過平安的生活。"

tai_ya <- "泰雅族-占卜鳥希利克「希利克」在臺灣鳥類的分類上屬畫眉科,名稱為「繡眼畫眉」。其特徵為頭部、臉及後頸是灰色,頭部兩側各有一黑褐色縱線,眼之周圍有白色眼圈,是山林中極為普遍的留鳥。泰雅族、排灣族、布農族之原住民,常會以這種鳥類的叫聲次數及發音位置,作為判定當時吉凶的預兆,稱作「鳥卜」。泰雅族稱這種鳥鳴聲為「希利克」,「希利克」這個名稱源自於一個古老傳說。相傳古時候,深山裡到處生長著茂盛的樹林,樹林裡住著許多動物,有黑熊、雲豹、石虎、水鹿、山羌、獮猴等;還有各種鳥類:高貴的帝雉、漂亮的藍腹鷳、威猛的蒼鷹和許許多多數不清的鳥兒們,牠們在寬廣的森林裡遊戲並過著愉快的生活。一風和日麗早晨,森林裡的鳥兒們正聚集在一起快樂的歌唱著,突然有一隻鳥兒提議說:「大家來比一比力氣,看誰能把岩壁上的那塊大石頭推到溪谷裡去,大家就選牠為最聰明的鳥。」大夥兒覺得這種比賽很有趣,於是爭先恐後竹地要試試看!最先出來的是山雉雞,牠拖著身上美麗的長尾巴,神氣的踱著步伐來到大石前。這時才發現所謂的石頭竟然那麼巨大,牠開始猶豫起來;最後,牠改變主意,放棄比賽。接著大老鷹飛到大石上,用巨大的翅膀奮力拍著大石,結果雖然把石頭搖動了,卻無法讓石頭滾下溪谷,只好垂頭喪氣地飛走了。接下來,許多鳥兒都一一試過,還是沒有一隻能推動大石。最後輪到一隻長的非常不起眼的小鳥,牠的名字叫「希利克」;兩隻眼睛帶著白眼圈,頭頂上有著藍黑巴的羽毛,身上其它部份則是橄欖色的,身材比麻雀還嬌小。當牠站出來說:「讓我來試試看!」時,大家都笑得東倒西歪。但是牠根本不管大家的嘲笑,只是奮力地拍動翅膀,高高地飛過大石,然後從遠處疾下,嘴裡還悅耳地發出「吱-吱-」的叫聲;看到牠像箭一般衝向大石頭,大家不禁驚叫起來,因為大石頭居然移動了,並且轟隆隆地滾到溪谷去。於是,大家相信希利克鳥一定是神派來的,才會具備如此的神力,便選希利克鳥為最聰明的鳥。這件事被泰雅族的祖先知道了,他們相信聰明的希利克鳥一定也能幫助解決人類的問題;從此以後,祖先們凡是要舉行結婚喜事,或是出門打獵、出草,甚至有關於耕種的事情,在開始做之前,都要先聽聽希利克鳥的鳴叫聲,或是觀察牠飛行的方向或狀況。當牠發出悅耳的「希-希」聲時,就表示族人可以按照計畫去做事;若聽到的是急躁、短促的鳴叫「吱、吱」,或是在族人的面前慌張地亂飛,就表示不吉利。這時如果勉強採取行動,一定會碰到困難;如打獵受傷或傳染病等。從此,希利克鳥就變成泰雅族人最愛護的鳥兒。"

bu_nung <- "布農族-射日英雄。很久很久以前,天上有兩個太陽,當一個太陽下山時,另一個太陽就緊接著昇起,所以,當時沒有白天和黑夜的分別,兩個太陽輪流出現個不停,有許多人活活的被曬死。頭目非常生氣,就派了幾個勇士帶了弓箭和糧食,各背著一個小男孩,向東出發,找太陽報仇。其中一個勇士叫必勇,他沿途種下果樹的種子,好讓小孩長大時,有果樹指引回家的路。必勇父子兩人翻越幾十座山,不知道經過了多少年,兒子也已長大了,有一天,終於找到了太陽居住的地方,於是趕快拿起弓箭向太陽射去,結果卻只射到太陽的一隻眼睛,太陽用一隻手壓著被射傷的眼睛,用另一隻手捉住了這一對父子,很生氣的問:「你們為什麼要用箭射傷我的眼睛呢?」他們回答說:「因為你曬死了我們許多族人,我們要報仇。」太陽嘆氣說:「你們真是忘恩負義的東西,你們的生活都依靠我,但你們從來沒有感謝過我,所以你們的族人才會被曬死,這都是你們自己招來的禍害!但你們受的苦難也足夠了,以後我就變成月亮,你們回家後要告訴族人,在月圓的時候要祭拜我,這樣你們的穀物一定豐收,人口也會興旺,現在我給你們雞和小米的種子,雞用來報時,小米用來祭祀。」太陽說完,兩人就向它告別,當初種的果樹也已經長大,他們就依照果樹的方向回家,當他們回到家鄉時,父親已變成駝背的老人,兒子也已滿頭白髮,他們把征代太陽的經過詳細的向族人說明,並且將月亮交待的事報告給族人。從此以後,布農族人以-從月亮帶來的小米播種,以月亮的圓缺作為耕種和舉行祭祀的依據。"

tsou <- "鄒族-塔山的愛情傳說。從前,在特富野部落,有一對很相愛的男女,男的名字叫巴蘇亞,女的叫山美。每天傍晚,都可以看見他們手拉著手在散步。可是,有一天,巴蘇亞生重病去世,山美十分傷心,常常一個人難過的唱著他們以前常唱的情歌。有一次,當山美又在傷心的唱歌的時候,突然看見死去的巴蘇亞就站在她的面前,她非常驚喜。巴蘇亞牽著她的手,走到塔山的一個洞穴前,進去以後,山美發現這裡住著許多人,於是,她就和巴蘇亞一起生活在這裡。每隔一段時間,她就會帶著糯米酒回家探望,山美的家人聽她說是和巴蘇亞在一起,覺得很奇怪,但是看到她又恢復以往的快樂,所以也沒有過問,只是偷偷跟在後面,確定她平安才離開。日子一久,山美的家人也習慣了,有時候還會帶些酒放在洞口旁邊給她。過了幾年,山美生了一個漂亮的小寶寶,她帶著巴蘇亞高高興興的抱著小孩回家探望家人。山美的媽媽特地煮了一桌好菜,吃飯時,只聽見談笑聲,看得見杯盤碗筷移動,桌上的好菜也都被吃光光,可是就是看不見巴蘇亞的人影。更奇怪的是,小寶寶抱在媽媽手裡是正常的嬰兒,一抱到外婆的手裡就變成了樹根。要回塔山的時候,山美跟父母說:「這是我最後一次回來。如果有一天,你們看見塔山的山壁上掛著這件穿在我身上的白衣,就表示我已經死了。」不知道過了多久,部落裡的人真的看見一件白色的衣裳掛在塔山的山壁上,山美永遠和她所愛的男子在一起了。據說,那件白色的衣裳,到現在還掛在那兒呢!"

lu_kai <- "魯凱族-巴嫩與蛇郎。巴嫩出生在頭目的家庭,長得美麗動人且歌聲清亮如黃鶯。有一天,好奇的巴嫩,跟隨耕作的婦女們上山,卻在樹林裡迷路了。忽然聽見遠方傳來悠悠的笛聲。當笛聲漸漸清楚的時候,巴嫩眼前站著一位非常英俊的青年,「啊!... ...你是誰?」「巴嫩公主,我是蛇族的青年,我的祖先犯了戒條,受到詛咒,被貶為蛇族。你將是我的妻子,所以,你看得到我的原形... ...」從此以後,巴嫩常常到山裡去會蛇郎。有一天,蛇郎帶了一群人到巴嫩的門外高唱求婚的歌。巴嫩家族的人一看,竟是一條條的百步蛇,大家都嚇壞了。但是巴嫩堅持一定要嫁給蛇族,疼愛巴嫩的父母只好傷心地答應了。迎娶當天,蛇族浩浩蕩蕩的來到了巴嫩家門口,長老高唱迎親的歌,聘禮一樣也不少。母親含著眼淚,把巴嫩打扮得漂漂亮亮的,他的姐妹和兒時的玩伴,都來為她送嫁。黃昏時,送嫁的隊伍舉著熊熊的火把,護送巴嫩來到深山的鬼湖邊,巴嫩公主回頭對著家人說:「親愛的爸爸、媽媽,我會守護這個地方,你們來這兒狩獵,一定會有獵物,但是,如果獵物是冰冷的,請不要帶回去。」說完以後,巴嫩隨著蛇郎走入湖中,幾天以後,湖邊的岸上長滿了百合花。一直到今天,魯凱族人,尤其是女人,都喜歡在頭飾上,插上一朵百合花,紀念她們心中永遠難忘的巴嫩公主。"

pai_wan <- "排灣族-孔雀王子。傳說有一天,天神化作孔雀王子到人世間來遊玩,他覺得世界真美麗,於是他決定到世界各地去看一看。有一天,他不知不覺沿著溪流走進充滿神祕色彩的排灣族部落,他好奇得到處逛。突然,他見到一位眼睛很大的女子正在溪邊洗衣服,他傻傻地注視她,過了一會兒,女子走了,他才驚醒。心生愛意的孔雀王子,於是決定娶這位美麗的女子為妻。打聽之下,才知道這氣質非凡的女子竟是頭目的女兒穆莉淡。孔雀王子想了想:「我是一個神,應該要怎麼介紹我自己給他們認識呢?聽說排灣族是非常講求門當戶對的?」但是,孔雀王子終究還是抗拒不了愛情的力量,於是常常在穆莉淡外出的時候,和她說話。慢慢地,兩個人就開始交往。孔雀王子鼓起勇氣向穆莉淡求婚,雖然穆莉淡很開心,但是她必須得到家人的同意。於是孔雀王子選了一個好日子,到穆莉淡家提親,請求頭目答應他們的婚事。頭目和家族的長者經過一陣討論之後,果然還是捥拒了孔雀王子。孔雀王子雖然傷心沒有得到大家的祝福,但仍然不放棄,於是振翅飛向天際,此時羽翼間撒下了一顆顆美麗的琉璃珠當作聘禮,並在同時帶著公主消失在彩虹的另一端。因此,傳說中的琉璃珠又稱為「孔雀珠」,是排灣族人最珍視的珠寶。"

bei_nan <- "卑南族-「石生」和「竹生」傳說。卑南族人對他們祖先的由來,可分「石生」和「竹生」。「石生」的傳說。卑南族人相信祖先是由巨石裂開所生的。遠古時代,在今天台東知本里海岸附近,有一塊巨石。一天,巨石裂開出現了一名女子,她的眼睛長在膝蓋上,之後,她的腳後跟腫大起來,竟然懷孕了,不久,生了一個女兒。這個女孩長大後,遇到了因洪水逃難的男子,兩人相愛於是結為夫妻,他們就是後來卑南族的祖先。「竹生」的傳說。卑南族人祖先是由竹子所生。遠古時候,在今天台東縣太麻里鄉美和村的地方,出現一名女神,她右手捧著石頭,左手握著竹子。女神把右手的石頭丟到地上,土地裂開跳出了一個人,就是後來阿美族的祖先。女神再把左手的竹子豎立在地上,竹子的上節裂開,出現一名女神,下節也蹦出來另一名男神。這一對男女神就是後來卑南族的祖先。"

a_mei <- "阿美族-七彩布裙的傳說故事。很久以前,部落裡有兩個非常優秀的青年勇士-古拉斯和卡爾照,他們口才好,打獵技巧高超,對於傳統的舞蹈及歌曲,也能琅琅上口。可是,二人個性完全不同,古拉斯性情雖剛烈,但古道熱腸,卡爾照溫文有理,沉默寡言,都是多數族人心目中最理想的未來頭目人選。兩人同時喜歡一個名叫少瑪拉的姑娘,但是傳統法律裡一妻不事二夫,該如何是好呢?於是古拉斯提議「比武招親」,卡爾照同意後,便向當時頭目提出請求,請頭目擔任監考官,這件事傳遍了整個部落,大家扶老攜幼,競相前往比武場地聚集。比賽開始後,無論是賽跑或是射箭...等,兩人都是平手,最後聰明的頭目想出一個比賽-「撐竿跳」,誰能撐越過深澗溪谷,誰就可以娶回少瑪拉!觀看的鄉親開始議論紛紛誰勝誰負,但這一項目實在太困難了,一不小心可能要人命,所以大家都不敢肯定誰會過關。此時觀看的群眾面向溪谷,人人冒著冷汗頻頻顫抖,古拉斯望了一下河谷,心想一定過不了,於是向頭目說:「我肚子痛能不能先上茅坑,讓卡爾照先過吧!」,頭目不疑有他,答應了。原來古拉斯暗藏詭計,心想:「萬一不能跳過的話一定會死去,不如先讓卡爾照去吧,等卡爾照死了,我就可以順理成章地成為少瑪拉的丈夫了」。老實的卡爾照只好先拿起竹竿,向天神誠心祈禱:「讓我有勇氣躍過溪谷吧!」天神似乎聽見了卡爾照的祈求,就在不可能越過的那一瞬間,一道五彩光芒照亮了整個山谷,萬丈光芒投射在卡爾照身上,不知名力量順勢推了他一把,卡爾照竟然輕輕地飄過了深谷,這一幕大家都看傻了,原本鴉雀無聲的會場,一時間歡聲雷動,喝采聲久久不絕於耳,古拉斯看到這種情景,無奈的跌坐在石頭上,心想結束了。頭目報告比賽結果,將少瑪拉許配給了卡爾照,卡爾照告訴少瑪拉:「其實這次的比賽,天神可能聽到了我的祈求,助我一臂之力,才讓我順利跳過溪谷,為了感謝天神的幫助,請妳幫我做一件七彩的布裙,當作紀念。」於是少瑪拉日夜趕工,在結婚前完成了彩虹色布裙。後來,整個部落也跟著織出同樣的布裙,如虹彩般的「七彩」順理成章的成為部落特別標記,而卡爾照也成為家喻戶曉的頭目。"

ya_mei <- "雅美族-紅頭部落的始祖傳說。遠古的人住在海邊。有一天,一個孕婦與老婦人一起到海邊提水,奇怪的是,海水不知為什麼一直漲高,孕婦與老婦人就開始往回跑,但海水不但不退去還一直在後面追趕。好不容易海水停住了,孕婦也跑不動了,便蹲下休息,結果發現一塊白石頭,從底下不斷冒出水來。他們想剛剛在海邊沒提到水,但是也不能沒水喝啊!所以她們兩人又花了好大的力氣把石頭搬開,舀了水準備回家,可是地下的水卻像噴泉似,越流越多,直追著他們漫流,終於將兩個提水的女人淹沒了。可是海潮仍然持續上升,逐漸吞沒了村莊與田地,最後幾乎整個蘭嶼島都陷入了海中,只露出今天望南蜂與芳南蜂二座山頭。及時跑到這二座山頂的人並不多,豬、山羊、老鼠等動物都被淹死了,山上又沒有田地作物,人沒有食物可吃,一個個的餓死了。經過四年之後,海水仍然不退,山上僅剩下一對夫妻,妻子懷孕中。八年,山上出現了大量成堆的夜光貝和礫石。到第九年,那位懷胎多年未生產的孕婦,某天發現了一隻老鼠,便把牠丟入海中,祈求海水降退,結果海水真的就漸漸消退了,但是又經過十年之後,海水才退回原處,這對夫妻逗留山上又觀望一年,確定山下有水喝之後,才下山去,這時整座山已經又覆蓋了茂盛的森林與田園。"

shau <- "邵族-白鹿傳說。很久以前,邵族祖先帕達木,和平常一樣,和十幾個族人出遠門打獵。他們準備十五天的乾糧,用竹子筒裝粟米,還有生山芋及生蕃薯。經過好幾天,都沒有收獲。於是帕達木和族人們就找了一個山洞休息,起火烤蕃薯,露營過夜。他們正在煩惱,這麼多人出門打獵,又經過那麼多天,總不好意思空手回到部落,讓等待他們豐收回來的家人失望,因此他們雖然知道糧食已經剩不多,但是追捕獵物的企圖愈來愈強烈。終於有一天,帕達木帶來的一隻獵犬,吠得好厲害,而且在叢林繞了好多圈,一會兒跑出來,一會又鑽進叢林,最後有幾個人看到獵物,都嚇了一跳,原來不是大山豬,也不是野兔,而是一隻從沒有見過的白鹿。這下子,大家精神都為之振奮,開始全力追捕「白鹿」,可是連續追了好幾天,都沒找到,奇怪的是,獵犬卻一點也不累,還是不停地找,帕達木和族人們當然也不甘心肥美的白鹿跑掉,於是拿起弓箭和配刀繼續追蹤。只要獵犬叫,他們就跟著跑,一直跑到今天的南投縣魚池鄉,終於又看見白鹿的影子跑下山,大家又猛追,遠遠看去,白鹿突然跳進一條大河。(就是今天的日月潭)。獵犬在河岸不斷狂吠,族人也游泳過岸尋找鹿的蹤跡,奇怪的是,完全找不到任何動物的腳印。這時天色漸漸暗下來,獵犬也死心不再追了,只到水邊飲水。大家又飢又渴,糧食也都吃光了,只好跟著狗兒到水邊喝水,有的熱得順便下河泡水。這時他們泡在水中的腳邊出現許多怪魚,不但不怕他們,用腳趕也趕不走,大大小小不知有幾百尾。帕達木和族人們已經很累了,又被這些魚「欺負」,一氣之下,拿起佩刀和弓箭向魚群刺殺,大家飢餓之下,就想這些怪魚是不是也可以吃?因為他們一向住在山上,吃過山豬、兔子、羌肉、鳥肉、蛇肉等等,卻沒有吃過這種魚肉,害怕吃了這種東西會生病或死亡。他們把宰殺的魚撈起來,拿到岸上起火烤魚。帕達木先「試吃」,沒發生甚麼問題,而且覺得味道很好,於是大家開始忙著抓魚、烤魚,把吃不完的烤成魚乾當「乾糧」,也解決了回程食物的問題。帕達木和族人們回到家鄉後,告訴村裡的人,他們發現一個有山有水,又有一種吃不完的大魚,花草樹木非常漂亮的人間仙境。於是他們追逐白鹿,發現新天地的冒險故事,轟動全村。日子一天天過去,帕達木念念不忘那個美麗的地方,於是他決定帶著家人遷村,其他族人知道了,也有將近一百人跟隨帕達木,因為當初帕達木在沿途的樹木做了記號,所以他們很容易就找到了這個人間仙境。跟隨而來的族人們就推舉發現新天地的「帕達木」為邵族第一代頭目,於是帕達木在今天的日月潭珠仔山附近,一棵三十個人才抱得住的巨大「茄苳」樹下,召集族人向樹神發誓:從今而後,不論富貴或窮困,永遠不會搬離此地,只要茄苳樹長出一片新葉,邵族必增添一人。"

ge_ma_lan <- "噶瑪蘭族-冬瓜美人的傳說。從前,有一個農人發現了冬瓜的種子,他小心翼翼地把種子埋在土裡,過了幾天,長出了芽也結了果實,等到成熟要把它切開來吃的時候,竟然聽到冬瓜裡傳出「不能切」的聲音,農人嚇一跳,也不敢吃,只好放在家裡。不久,冬瓜熟透裂開,從裡面蹦出了一個女孩。農人開心地為這個女孩取名為冬瓜美人。冬瓜美人漸漸長大,而且越來越漂亮,有時候她到附近取水,一路上就有好多人向她要水,目的是為了想接近她,所以通常還沒到家容器裡已經滴水不剩、空空的了。冬瓜美人很喜歡織布,但是連她要織布,都有好多人圍在旁邊,讓她無法專心工作,因此農人想了一個方法,他在屋外做一個柵欄,而且很小心地將織布機放在蓋好的屋頂平台上,讓她在上面織布,並且叮嚀冬瓜美人要當心安全。但是有一天,冬瓜美人正專心織布的時候,織布機竟然滑下屋頂,冬瓜美人心急想去撿,結果不小心失足滑落摔死了。從這個傳說,我們可以了解以前噶瑪蘭族的年輕女子,日常生活中必須從事取水與織布的工作。而且據說織布機是一種神聖的器具,有許多禁忌,例如男人不可觸摸、平常不織布時要好好的收藏起來...等。"

tai_lu_ge <-"太魯閣族-巨人傳說。在很久以前太魯閣族人居住的地方,出現了一個很高大的巨人,叫馬威。傳說我們正常人一步的距離,他可是能從這個山頭跨到另一個山,他的腳一跺,太魯閣這個山區就被他踏出了「布洛灣」與「希拉岸」平台;聽說,花東縱谷就是被他踩來踩去才會出現這麼多的平原。這麼高大、有力量的人住在我們的周圍,一定是大家最佳的好幫手,可是事實上這個巨人並沒有好好善用他的優點專長,反而濫用造成其他人的困擾。為什麼這麼說呢?巨人利用自己又快又大的步伐,經常搶奪族人們辛苦追捕的獵物。當他看見族人在山上追趕獵物時,他的頭就貼在獵物逃跑的捷徑上,張開他的大嘴巴等著動物橫衝直撞的跑到他的嘴裡去,因此他常常可以不勞而獲的填飽肚子,但是生活在巨人周圍的人,卻時常因他而挨餓受苦,他的行為愈來愈讓人無法忍受。最後族人們終於決定團結起來反抗他,雖然大家都畏懼巨人的力量,但相信集合大家的意見一定可以想出打敗巨人的方法。經過一段時間的討論之後,族人們想出了一個冒險的計劃,並且積極著手預備。就在一個適合打獵的日子裡,族裡的勇士們到山上集合,假裝要去打獵。巨人又開始期待一頓豐盛的大餐。於是他躲到另一座山的後頭,等著動物經過。這時候族人在山上升火燒著事前準備好的圓形水晶石,巨大的水晶石燒得通紅,大家看見時機成熟了,便合力將水晶石推下山去,勇士們邊追趕著巨石邊一路喊著:「下去了!下去了!趕快追呀!」假裝真的在追趕獵物。聽見勇士們的喊叫聲和巨石滾下山的聲音,巨人很快的伸出頭來,張開他的大嘴巴和舌頭靠在山路的彎道上,預備一口氣吞下衝過來的動物。誰知,突然有一個燒燙的東西滾進了他的喉嚨,巨人痛的在地上打滾,最後滾到花東的外海,身體就淹沒在茫茫大海中,只剩下他的兩雙腳露出海面,傳說中就是現在的蘭嶼和綠島,一個巨人傳奇的一生就這樣結束了。"

sa_chi <- "撒奇萊雅族-洪水傳奇。幾千年前神明曾經告訴人們,所有的重要活動,如狩獵、初耕、收成、出草、婚喪喜慶等,都必須虔誠的祭拜,以表示對神明的尊敬及感謝之意。但由於連年豐收,人開始好逸惡勞,並認為所有的收穫都是理所當然的,因此逐漸荒廢了對祖先神明的祭祀。神明於是決定懲罰撒奇萊雅人,天上開始不斷的下雨,河水暴漲,沖垮了村莊,淹沒了土地,無數的人們也因此死亡。一位機警的頭目帶著族中的幾百人逃到奇萊雅山的峰頂而倖免於難,但與仍不停的下,幾個星期後,眼看著洪水就要淹過奇萊雅山,撒奇萊雅人還是逃不過滅種的命運。恐怖的氣氛蔓延了整個村莊,頭目宣布放棄一切掙扎,帶領全族向上天虔誠祈禱懺悔,祈求神明赦免。祈禱了一天一夜後,祭司告訴群眾他得到了神的啟示,只要用最好的祭品和一對男女來祭貢,洪水就會退去。頭目於是請族人準備了最好的祭品,並徵求自願犧牲的一對男女,將他們放在大型米篩中,由祭司推入洪水,不料他們和貢品又被洪水沖了回來,令眾人不知如何是好。祭司搖搖頭說,「神明認為他們年紀太大了!無法接受。」於是又換了一對年輕男女,還是被沖回,眾人不禁束手無策,此時水位又升高,許多人因此慘遭滅頂。頭目百般不解,祭司面帶惶恐,無奈的告訴頭目,神要的是一位年輕貌美的女孩和壯碩英俊的男孩,部落中最美的就是頭目的小女兒,只有犧牲她,才能解救族人,消退洪水。頭目的小女兒不僅清麗絕俗,家世顯赫,而且聰明伶俐,善解人意,是部落中人共同的寶貝, 正當大家猶豫時,頭目的小女兒和一位面龐俊秀的男孩不聲不響走上了米篩,兩人相視堅定的握住雙手,微笑向族人揮手告別。族人還不及反應,米篩竟自動向洪水深處流去,隨著兩人漸行漸遠,雨真的停了,眾人悲喜交集,在深沈的悲痛中,見到了雨後的第一線陽光,也看到撒奇萊雅人的未來與重生。苦難的日子結束了,劫後餘生的撒奇萊雅人離開奇萊雅山,重新回到故鄉,開墾耕種,繁衍子孫,開始撒奇萊雅人的新生活。"

sai_de_ke <- "賽德克族-白石傳說。南投縣仁愛鄉賽德克族有這樣一個傳說,族人相傳中央山脈有顆巨大的白石,賽德克族人稱Rmdax tasing,意思是發亮的石頭,是賽德克族祖先發源的地方,而且這個白石山區也是賽德克族族人狩獵的獵區。當他們在中央山脈打獵的時候,白石就像是護佑著賽德克族的靈石,因為它高高在上,如同一盞燈塔,隨時指引賽德克族人們的腳步,使族人不致迷失在廣大的中央山脈中。所以,白石山,不只是賽德克族的獵區,也是賽德克族的聖山,因為裡面有賽德克族的神石:白石Rmdax tasing。而這白石Rmdax tasing,像飛來石插在山崖上,遠看,好像牡丹花的花苞,所以,又稱牡丹岩。"

斷詞、停用詞使用

使用外部檔案作為斷詞、停用詞參數

# 初始化斷詞引擎
jieba_tokenizer <- worker(user="legend_dict.txt", stop_word = "stop_words.txt")

# 自定義斷詞函式
legend_tokenizer <- function(t) {
  lapply(t, function(x) {
    tokens <- segment(x, jieba_tokenizer)
    tokens <- tokens[nchar(tokens)>1]
    return(tokens)
  })
}

定義完成後,我們即可使用unnest_token() 進行中文斷詞了

sai_shia_tibble <- tibble(indigenous = "賽夏族", text = sai_shia)
sai_shia_tokens <- sai_shia_tibble %>% 
  unnest_tokens(word, text, token=legend_tokenizer)

tai_ya_tibble <- tibble(indigenous = "泰雅族", text = tai_ya)
tai_ya_tokens <- tai_ya_tibble %>% 
  unnest_tokens(word, text, token=legend_tokenizer)

bu_nung_tibble <- tibble(indigenous = "布農族", text = bu_nung)
bu_nung_tokens <- bu_nung_tibble %>% 
  unnest_tokens(word, text, token=legend_tokenizer)

tsou_tibble <- tibble(indigenous = "鄒族", text = tsou)
tsou_tokens <- tsou_tibble %>% 
  unnest_tokens(word, text, token=legend_tokenizer)

lu_kai_tibble <- tibble(indigenous = "魯凱族", text = lu_kai)
lu_kai_tokens <- lu_kai_tibble %>% 
  unnest_tokens(word, text, token=legend_tokenizer)

pai_wan_tibble <- tibble(indigenous = "排灣族", text = pai_wan)
pai_wan_tokens <- pai_wan_tibble %>% 
  unnest_tokens(word, text, token=legend_tokenizer)

bei_nan_tibble <- tibble(indigenous = "卑南族", text = bei_nan)
bei_nan_tokens <- bei_nan_tibble %>% 
  unnest_tokens(word, text, token=legend_tokenizer)

a_mei_tibble <- tibble(indigenous = "阿美族", text = a_mei)
a_mei_tokens <- a_mei_tibble %>% 
  unnest_tokens(word, text, token=legend_tokenizer)

ya_mei_tibble <- tibble(indigenous = "雅美族", text = ya_mei)
ya_mei_tokens <- ya_mei_tibble %>% 
  unnest_tokens(word, text, token=legend_tokenizer)

shau_tibble <- tibble(indigenous = "邵族", text = shau)
shau_tokens <- shau_tibble %>% 
  unnest_tokens(word, text, token=legend_tokenizer)

ge_ma_lan_tibble <- tibble(indigenous = "噶瑪蘭族", text = ge_ma_lan)
ge_ma_lan_tokens <- ge_ma_lan_tibble %>% 
  unnest_tokens(word, text, token=legend_tokenizer)

tai_lu_ge_tibble <- tibble(indigenous = "太魯閣族", text = tai_lu_ge)
tai_lu_ge_tokens <- tai_lu_ge_tibble %>% 
  unnest_tokens(word, text, token=legend_tokenizer)

sa_chi_tibble <- tibble(indigenous = "撒奇萊雅族", text = sa_chi)
sa_chi_tokens <- sa_chi_tibble %>% 
  unnest_tokens(word, text, token=legend_tokenizer)

sai_de_ke_tibble <- tibble(indigenous = "賽德克族", text = sai_de_ke)
sai_de_ke_tokens <- sai_de_ke_tibble %>% 
  unnest_tokens(word, text, token=legend_tokenizer)

legend_tokens <- bind_rows(sai_shia_tokens, tai_ya_tokens, bu_nung_tokens, tsou_tokens, lu_kai_tokens, pai_wan_tokens, bei_nan_tokens, a_mei_tokens, ya_mei_tokens, shau_tokens, ge_ma_lan_tokens, tai_lu_ge_tokens, sa_chi_tokens, sai_de_ke_tokens)

字頻統計

# 計算詞彙的出現次數,如果詞彙只有一個字則不列入計算
legend_tokens_count <- legend_tokens %>%
  group_by(word) %>%
  summarise(sum = n()) %>%
  filter(sum>1) %>%
  arrange(desc(sum))

sai_shia_tokens_count <- sai_shia_tokens %>% 
  filter(nchar(.$word)>1) %>%
  group_by(indigenous, word) %>% 
  summarise(sum = n()) %>% 
  ungroup() %>% 
  #filter(sum>10) %>%
  arrange(desc(sum))

tai_ya_tokens_count <- tai_ya_tokens %>% 
  filter(nchar(.$word)>1) %>%
  group_by(indigenous, word) %>% 
  summarise(sum = n()) %>%  
  ungroup() %>% 
  #filter(sum>10) %>%
  arrange(desc(sum))

bu_nung_tokens_count <- bu_nung_tokens %>% 
  filter(nchar(.$word)>1) %>%
  group_by(indigenous, word) %>% 
  summarise(sum = n()) %>%  
  ungroup() %>% 
  #filter(sum>10) %>%
  arrange(desc(sum))

tsou_tokens_count <- tsou_tokens %>% 
  filter(nchar(.$word)>1) %>%
  group_by(indigenous, word) %>% 
  summarise(sum = n()) %>%  
  ungroup() %>% 
  #filter(sum>10) %>%
  arrange(desc(sum))

lu_kai_tokens_count <- lu_kai_tokens %>% 
  filter(nchar(.$word)>1) %>%
  group_by(indigenous, word) %>% 
  summarise(sum = n()) %>%  
  ungroup() %>% 
  #filter(sum>10) %>%
  arrange(desc(sum))

pai_wan_tokens_count <- pai_wan_tokens %>% 
  filter(nchar(.$word)>1) %>%
  group_by(indigenous, word) %>% 
  summarise(sum = n()) %>%  
  ungroup() %>% 
  #filter(sum>10) %>%
  arrange(desc(sum))

bei_nan_tokens_count <- bei_nan_tokens %>% 
  filter(nchar(.$word)>1) %>%
  group_by(indigenous, word) %>% 
  summarise(sum = n()) %>%  
  ungroup() %>% 
  #filter(sum>10) %>%
  arrange(desc(sum))

a_mei_tokens_count <- a_mei_tokens %>% 
  filter(nchar(.$word)>1) %>%
  group_by(indigenous, word) %>% 
  summarise(sum = n()) %>% 
  #filter(sum>10) %>%
  arrange(desc(sum))

ya_mei_tokens_count <- ya_mei_tokens %>% 
  filter(nchar(.$word)>1) %>%
  group_by(indigenous, word) %>% 
  summarise(sum = n()) %>% 
  #filter(sum>10) %>%
  arrange(desc(sum))

shau_tokens_count <- shau_tokens %>% 
  filter(nchar(.$word)>1) %>%
  group_by(indigenous, word) %>% 
  summarise(sum = n()) %>%  
  ungroup() %>% 
  #filter(sum>10) %>%
  arrange(desc(sum))

ge_ma_lan_tokens_count <- ge_ma_lan_tokens %>% 
  filter(nchar(.$word)>1) %>%
  group_by(indigenous, word) %>% 
  summarise(sum = n()) %>%  
  ungroup() %>% 
  #filter(sum>10) %>%
  arrange(desc(sum))

tai_lu_ge_tokens_count <- tai_lu_ge_tokens %>% 
  filter(nchar(.$word)>1) %>%
  group_by(indigenous, word) %>% 
  summarise(sum = n()) %>%  
  ungroup() %>% 
  #filter(sum>10) %>%
  arrange(desc(sum))

sa_chi_tokens_count <- sa_chi_tokens %>% 
  filter(nchar(.$word)>1) %>%
  group_by(indigenous, word) %>% 
  summarise(sum = n()) %>%  
  ungroup() %>% 
  #filter(sum>10) %>%
  arrange(desc(sum))

sai_de_ke_tokens_count <- sai_de_ke_tokens %>% 
  filter(nchar(.$word)>1) %>%
  group_by(indigenous, word) %>% 
  summarise(sum = n()) %>%  
  ungroup() %>% 
  #filter(sum>10) %>%
  arrange(desc(sum))

# 印出最常見的20個詞彙
head(sai_shia_tokens_count, 20)
## # A tibble: 20 x 3
##    indigenous word       sum
##    <chr>      <chr>    <int>
##  1 賽夏族     矮黑人      14
##  2 賽夏族     賽夏族       8
##  3 賽夏族     頭目         8
##  4 賽夏族     矮靈         6
##  5 賽夏族     嘎歷         6
##  6 賽夏族     打獵         3
##  7 賽夏族     生活         3
##  8 賽夏族     勇士         3
##  9 賽夏族     族人         3
## 10 賽夏族     百步蛇       2
## 11 賽夏族     幫忙         2
## 12 賽夏族     不到         2
## 13 賽夏族     誠心誠意     2
## 14 賽夏族     懲罰         2
## 15 賽夏族     豐收         2
## 16 賽夏族     耕種         2
## 17 賽夏族     過去         2
## 18 賽夏族     回答         2
## 19 賽夏族     獵物         2
## 20 賽夏族     每年         2

字頻統計比較圖

sai_shia_t <- head(sai_shia_tokens_count, 10)
tai_ya_t <- head(tai_ya_tokens_count, 10)
bu_nung_t <- head(bu_nung_tokens_count, 10)
tsou_t <- head(tsou_tokens_count, 10)
lu_kai_t <- head(lu_kai_tokens_count, 10)
pai_wan_t <- head(pai_wan_tokens_count, 10)
bei_nan_t <- head(bei_nan_tokens_count, 10)
a_mei_t <- head(a_mei_tokens_count, 10)
ya_mei_t <- head(ya_mei_tokens_count, 10)
shau_t <- head(shau_tokens_count, 10)
ge_ma_lan_t <- head(ge_ma_lan_tokens_count, 10)
tai_lu_ge_t <- head(tai_lu_ge_tokens_count, 10)
sa_chi_t <- head(sa_chi_tokens_count, 10)
sai_de_ke_t <- head(sai_de_ke_tokens_count, 10)

legend_a_t <- bind_rows(sai_shia_t, tai_ya_t)
legend_b_t <- bind_rows(bu_nung_t, tsou_t)
legend_c_t <- bind_rows(lu_kai_t, shau_t)
legend_d_t <- bind_rows(bei_nan_t, a_mei_t)
legend_e_t <- bind_rows(ya_mei_t, pai_wan_t)
legend_f_t <- bind_rows(ge_ma_lan_t, tai_lu_ge_t)
legend_g_t <- bind_rows(sa_chi_t, sai_de_ke_t)

legend_all_t <- bind_rows(legend_a_t, legend_b_t, legend_c_t, legend_d_t, legend_e_t, legend_f_t, legend_g_t)

legend_a_t%>%  
  ggplot(aes(reorder(word, sum), sum)) +
  geom_col(show.legend = FALSE) +
  facet_wrap(~indigenous, scales = "free_y", ncol = 7) +
  labs(y = "原住民族",x = "字詞") +
  theme(text=element_text(size=16)) +
  theme(text = element_text(family = "Heiti TC Light")) +
  coord_flip()

文字雲

select(sai_shia_tokens_count, word, sum) %>% wordcloud2()
# select(tai_ya_tokens_count, word, sum) %>% wordcloud2()
# select(bu_nung_tokens_count, word, sum) %>% wordcloud2()
# select(tsou_tokens_count, word, sum) %>% wordcloud2()
# select(lu_kai_tokens_count, word, sum) %>% wordcloud2()
# select(pai_wan_tokens_count, word, sum) %>% wordcloud2()
# select(bei_nan_tokens_count, word, sum) %>% wordcloud2()
# select(a_mei_tokens_count, word, sum) %>% wordcloud2()
# select(ya_mei_tokens_count, word, sum) %>% wordcloud2()
# select(shau_tokens_count, word, sum) %>% wordcloud2()
# select(ge_ma_lan_tokens_count, word, sum) %>% wordcloud2()
# select(tai_lu_ge_tokens_count, word, sum) %>% wordcloud2()
# select(sai_de_ke_tokens_count, word, sum) %>% wordcloud2()

伊利亞德 vs. 奧德賽

從gutenberg上下載書籍內容,並作斷詞與章節標注

Gutenberg free eBooks

https://www.gutenberg.org/

iliad <- gutenberg_download(6130) %>% filter(text!="")
## Determining mirror for Project Gutenberg from http://www.gutenberg.org/robot/harvest
## Using mirror http://aleph.gutenberg.org
iliad$text[11:34] <- ""
iliad <- iliad %>% filter(text!="")

iliad <- iliad %>% 
  mutate(chapter = cumsum(str_detect(.$text, regex("^BOOK (XC|XL|L?X{0,3})(IX|IV|V?I{0,3})\\.$"))))

iliad_tokens <- iliad %>%
  unnest_tokens(word, text)
ody <- gutenberg_download(1727) %>% filter(text!="") %>% distinct(gutenberg_id, text)

ody <- ody %>% 
  mutate(chapter = cumsum(str_detect(.$text, regex("^Book (XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$"))))

ody_tokens <- ody %>%
  unnest_tokens(word, text)

停用詞

data(stop_words)
iliad_tokens <- iliad_tokens %>% 
  anti_join(stop_words)
## Joining, by = "word"
ody_tokens <- ody_tokens %>% 
  anti_join(stop_words)
## Joining, by = "word"
all_tokens <- bind_rows(iliad_tokens, ody_tokens)

詞頻統計

iliad_tokens_count <- iliad_tokens %>%
  count(word, sort = TRUE) %>% 
  filter(n>30) %>% 
  filter(word != "thy" & word != "thou") %>% 
  mutate(bookname = "iliad")

ody_tokens_count <- ody_tokens %>%
  count(word, sort = TRUE) %>% 
  filter(n>30) %>% 
  filter(word != "till") %>% 
  mutate(bookname = "odyssey")

all_tokens_count <- all_tokens %>% 
  count(word, sort = TRUE) %>% 
  filter(n>30) %>% 
  mutate(bookname = "Homer")

使用詞前十名比較

i_o_t <- bind_rows(iliad_tokens_count, ody_tokens_count) %>% filter(bookname != "odyssey" | word != "gods")
  
i_o_t%>%  
  group_by(bookname) %>% 
  top_n(10, n) %>% 
  ggplot(aes(reorder(word, n), n)) +
  geom_col(show.legend = FALSE) +
  facet_wrap(~bookname, scales = "free_y") +
  labs(y = "書名",x = "字詞") +
  theme(text=element_text(size=16)) +
  theme(text = element_text(family = "Heiti TC Light")) +
  coord_flip()

伊利亞德中,因為主體為描述戰爭,常出現的字有arms(武器)、war(戰爭),另外也出現多名主要人物的名字:Achilles、Hector、jove,以及通篇故事圍繞的爭鬥地點tory(特洛伊城)。

奧德賽中,故事主體為希臘英雄奧德修斯(Ulysses)在特洛伊陷落後返鄉的故事。因在十年特洛依戰爭結束後,奧德修斯又漂泊了十年,才回到了故鄉。人們認為他已經死去,而他的妻子珀涅羅珀和兒子(son)鐵拉馬庫斯(Telemachus)必須面對一群放肆的求婚者(suitors),這些人相互競爭,以求與珀涅羅珀成婚。從以上的內容可簡單的解釋奧德賽中前十名的用詞。

主要人物出現章節比較

tokens_achilles <- iliad_tokens %>% 
  filter(.$word == "achilles") %>% 
  group_by(chapter, word) %>% 
  summarise(count = n())

tokens_hector <- iliad_tokens %>% 
  filter(.$word == "hector") %>% 
  group_by(chapter, word) %>% 
  summarise(count = n())

iliad_major_name_compare_plot <- 
  bind_rows(tokens_achilles, tokens_hector) %>%
  ggplot(aes(x = chapter, y=count, fill=word)) +
  geom_col(show.legend = F) +
  facet_wrap(~word, ncol = 1) + 
  #ggtitle("「Achilles」vs.「Hector」") + 
  xlab("Chapter") + 
  ylab("出現次數") + 
  theme(text = element_text(family = "Heiti TC Light"))
iliad_major_name_compare_plot

文字雲

# select(iliad_tokens_count, word, n) %>% wordcloud2()
select(ody_tokens_count, word, n) %>% wordcloud2()

兩本書使用字詞頻率比較

frequency <- bind_rows(mutate(iliad_tokens, bookname = "iliad"),
                       mutate(ody_tokens, bookname = "odyssey")) %>% 
  mutate(word = str_extract(word, "[a-z']+")) %>%
  count(bookname, word) %>%
  group_by(bookname) %>%
  mutate(proportion = n / sum(n)) %>% 
  select(-n) %>% 
  spread(bookname, proportion) %>% 
  gather(bookname, proportion, `odyssey`)

繪出圖表

ggplot(frequency, aes(x = proportion, y = `iliad`, color = abs(`iliad` - proportion))) +
  geom_abline(color = "gray40", lty = 2) +
  geom_jitter(alpha = 0.1, size = 2.5, width = 0.3, height = 0.3, na.rm = T) +
  geom_text(aes(label = word), check_overlap = TRUE, vjust = 1.5, na.rm = T) +
  scale_x_log10(labels = percent_format()) +
  scale_y_log10(labels = percent_format()) +
  scale_color_gradient(limits = c(0, 0.001), low = "darkslategray4", high = "gray75") +
  theme(legend.position="none") +
  labs(y = "Iliad", x = "Odyssey")

原住民傳說 vs. 荷馬史詩 詞頻比較

c_legend_tokens_count <- legend_tokens_count
colnames(c_legend_tokens_count) <- c("word", "n")
c_legend_tokens_count <- c_legend_tokens_count %>% 
  mutate(bookname = "原住民傳說")

all_bind <- bind_rows(c_legend_tokens_count, all_tokens_count)
                      
all_bind%>%  
  filter(word != "thy") %>% 
  group_by(bookname) %>% 
  top_n(10, n) %>% 
  ggplot(aes(reorder(word, n), n)) +
  geom_col(show.legend = FALSE) +
  facet_wrap(~bookname, scales = "free") +
  labs(y = "分類",x = "字詞") +
  theme(text=element_text(size=16)) +
  theme(text = element_text(family = "Heiti TC Light")) +
  coord_flip()

由結果我們可以看出,原住民傳說中最常使用的字詞有族人、頭目等,可見其故事主體多數聚焦於民族本體,另外因為資料量不夠大,導致特定族群傳說的人名也出現在前十名之中,若各原住民族的資料量增加,應能解決這個問題。