協作閣

開源協作部落格

LittleLight 2

Joy / 2019-03-14 /


前情提要

這個 Microblog 預計要寫滿 18 篇(咦,這是一個長大成人的概念嗎?XD),這是第二篇而已,再次提醒我自己:
1. 這是一個自己開燈照亮前方一小段路的學習紀錄,輕鬆寫、用心記,好玩很重要。
2. 上一週我費勁、苦心地熬了一個夜晚,也沒有熬出什麼厲害的 code ,很挫折但是也發現很多以前都不知道的資料結構差異,我覺得很有收穫。
3. 每次只能走一小小步,不要被自己打敗。

目標介紹

主要提問:這些年來大家是否對語言學的了解多更多了呢?
回應方法之一:分析歷年語奧報名表中必答題「請用幾句話形容你/妳對語言學的瞭解」的資料。

資料特性
這道必答題的回覆型式很多元,包含完整語句、口語用句、短語(成語)、其他外文等表達,簡短的句子居多,不一定會有標點符號。

第二小步

根據第一篇文章中可以進步的地方的第一小點,這次將使用停用字表來讓斷詞的結果更好看一點。
可預期的結果為「的」字將不會出現,第一高頻詞應為「語言」。

#> 'data.frame':    257 obs. of  4 variables:
#>  $ X2019: Factor w/ 249 levels " ","·語言學是關於人類語言的研究。\n·語言和文化環境有關(ex.小嬰兒會能夠發出任何音,但隨著周遭文化環境的不同,漸漸的"| __truncated__,..: 63 88 18 57 196 83 112 191 158 43 ...
#>  $ X2018: Factor w/ 186 levels ""," 很棒!很難!但我很喜歡",..: 63 8 54 169 131 64 181 170 82 112 ...
#>  $ X2017: Factor w/ 162 levels "","  從小就對邏輯推理有興趣,發現語言學奧林匹亞後我便着迷於網站上五花八門的題目。同時也令我認識到了語言學的多樣性"| __truncated__,..: 8 122 50 155 16 127 35 115 33 81 ...
#>  $ X2016: Factor w/ 128 levels "","1. 語言學是研究語言的科學. 人們從不同的語言中搜集各種語言資料, 加以分析, 幫助我們了解語言的運作.\n2.在我學過的"| __truncated__,..: 41 77 62 21 61 108 1 75 4 63 ...
#> 'data.frame':    257 obs. of  4 variables:
#>  $ X2019: chr  "將文字與聲音邏輯化、模組化、規則化" "我覺得語言學很好玩因為那一些題目會讓我需要想很多,而且我學會了很多東西。" "不多" "基本" ...
#>  $ X2018: chr  "對於定義世界的學問的探討" "Languages are like name cards. The more you receive, the more you'll know about foreign culture,and the higher "| __truncated__ "吃語感,很有趣" "語言是定義事物的基礎,而且我認為語言文字是擁有非常強大的力量的。舉例來說,有一張椅子在屋子的角落,明明世界上不"| __truncated__ ...
#>  $ X2017: chr  "I think that the study of linguistics is about patterns and their exceptions. I took an introductory class call"| __truncated__ "語言學在我的理解中是ㄧ門在主觀的思考中試圖找出客觀邏輯的學問,也是研究人類文化變遷與特定族群思考脈絡的最佳媒介。" "從前未曾深入探討,我想語言學就是一門研究語言結構語法,擴充語言存在意義的學問。" "邏輯推理的過程\n抽絲剝繭尋找蛛絲馬跡" ...
#>  $ X2016: chr  "我認為語言學是研究人類語言的形成,發展以及構成的學術。從發音,解讀以及結構(如文法)去了解語言的根本,同時也可以"| __truncated__ "語言學,與我,是一門以清晰架構及科學方法剖析探究我們每天使用的語言。它涵概的範圍很廣,更是各領域學科中不可或缺的靈魂元素。" "研究語言產生、形式、規則與對應意義的學科" "分析人類語言之結構,音韻,語法運用等等,並可從不同領域角度加以剖析。" ...
#> Worker Type:  Jieba Segment
#> 
#> Default Method  :  mix
#> Detect Encoding :  TRUE
#> Default Encoding:  UTF-8
#> Keep Symbols    :  FALSE
#> Output Path     :  
#> Write File      :  TRUE
#> By Lines        :  FALSE
#> Max Word Length :  20
#> Max Read Lines  :  1e+05
#> 
#> Fixed Model Components:  
#> 
#> $dict
#> [1] "/tmp/RtmpqotJIJ/jiebaR_dict/dict/jieba.dict.utf8"
#> 
#> $user
#> [1] "/home/travis/R/Library/jiebaRD/dict/user.dict.utf8"
#> 
#> $hmm
#> [1] "/tmp/RtmpqotJIJ/jiebaR_dict/dict/hmm_model.utf8"
#> 
#> $stop_word
#> [1] "stopword.txt"
#> 
#> $user_weight
#> [1] "max"
#> 
#> $timestamp
#> [1] 1591339609
#> 
#> $default $detect $encoding $symbol $output $write $lines $bylines can be reset.

再回頭看看資料

看看這個詞頻表,第一個詞並不是「的」字。目標達成!!! :)
不過再看看這個詞表的前十個高頻字,竟然有英文字母!!!!!!!而且是 n ? 好奇怪啊~~~
…下一個目標就直接訂為清除英文字好了…

我覺得似乎可以透過詞頻高的詞來組織中學生們對於語言學的理解與想像,有點像關鍵字的作用,只是中學生們可能還不是很懂一些術語或行話,也許是很接近語言學的平凡人格的,更可親、可理解。
這樣說來,倒是有點好奇:不知道語言學領域的人會怎麼回答這題?

學習筆記

真的在動手寫 code 時才會發現原來自己懂得那麼少、腦袋那麼不夠用…
因此~更應該要寫筆記、常練習啊!!!!!!!
以下紀錄一下自己發現的不懂的地方與理解或發現,希望以後還是會記得:

  1. 在處理停用字表的時候發現,即使檔案命名為 .txt ,還是有無法運作的狀況。我想到之前在 Lope 的 python 的讀書會中有提過這樣的情況,後來我打開編輯器重新貼上停用字表內容並另存新檔,就解決了這個問題。

  2. 因為讀檔後的資料無法進行斷詞,直覺地使用了 str() ,但發現 R 跟 Python 不一樣之處: str() 這個函數,可以直接去看物件的結構組成。(覺得很方便)因此使用了 mode() 去挖它的資料型態。

  3. 在斷詞的時候,發現了原來 string 和 character 是不一樣的東西!character 是基本資料型態之一, string 則是一個由 character 構成的 vector 。因此,有一個函數名為 toString() ,功能有點像 as.character() + paste() 結合,可以將各種向量轉為 string 。