:::

論文進度報告:評估閱讀理解能力 Progress report: Measure Reading Comprehension

布丁布丁吃布丁

論文進度報告:評估閱讀理解能力 Progress report: Measure Reading Comprehension

image

要評估一個人的閱讀理解能力並不是很容易的事情。除了閱讀理解的程度會隨著文章不同而有所變動之外,閱讀理解能力還涉及多方面的概念,根據Cromley等人(2010)提出的DIME Model,認為閱讀理解涵蓋了「先備主題知識」、「推論」、「閱讀策略」、「閱讀詞彙」與「閱讀流暢度」這五個構面;而Keshav(2007)、Bogucka & Wood(2009)、John & Roy (2010)等人又針對學術論文提出了閱讀指導,他們認為學術論文的重點通常落於「研究問題」、「研究貢獻」、「研究結果」的證據、「結論」等部分。

為了使閱讀理解能力的評估更為客觀,我採用了兩種方式來評估:問答題形式的心得報告以及四選一選擇題的測驗。並規劃為期兩週的閱讀文章作業流程來取得這些資料,而這也就是我論文中最主要的實驗設計。

實驗規劃

image

這是實驗是在數位學習碩士課程中作為一個課堂報告進行。在課堂報告目的中融入了我的實驗目的,我希望能在這次的作業中讓受試者使用KALS標註系統、並取得受試者閱讀理解能力資料。

在實驗開始之前,我會課堂中說明閱讀文章與標註系統操作,並告知受試者要在閱讀過程中填寫閱讀心得報告,以及閱讀文章完畢之後要進行閱讀理解測驗的訊息。說明結束之後,我請受試者先進行閱讀文章、確認閱讀心得報告的問題,並即時回答受試者的疑惑。

課堂結束之後,受試者會有兩週的時間閱讀文章並撰寫閱讀心得報告。在這段期間中,受試者可以利用課堂討論區進行非同步的提問,我也會在最短時間為受試者排解操作上的困難。受試者可在這段期間內任意時候利用數位學習平台繳交閱讀心得報告,在兩週期限結束之前,我也會確認尚未繳交的受試者,並催促受試者完成撰寫。

兩週報告結束後,我會要求受試者利用數位學習平台填寫閱讀理解測驗,並限時30分鐘內完成。除了填寫測驗時發生了操作上的問題之外,所有受試者都能在時限內完成。

另一方面,原本應該在兩週內完成的閱讀心得報告,卻仍有部分受試者無法在期限內繳交。所以我只好延後繳交時間,讓實驗過程從14天延長到16天才能回收所有的閱讀心得報告。然而閱讀心得報告在設計上並沒有嚴格要求時間限制,因此延後繳交並不會造成太大的影響。

閱讀文章選擇

在本次實驗中,閱讀文章是要給數位學習碩士課程「資訊科技融入教學」作為課堂作業來閱讀,因此文章的選擇與主題會受限於實驗情境,必須要搭配課程以及授課內容大綱,課程的涵蓋主題包括了數位學習理論、教案設計、研究方法、學習風格與適性化、遊戲式學習等。另一方面,由於我的系統需要辨識「詞性」的特徵,所以選用文章必須使用中文語言。

基於以上理由,我選擇使用黃桂芝、曾憲雄、翁瑞鋒與何筱婷於2008在數位學習科技期刊發表的「採遊戲式學習教育平台之科學教育活動設計」作為指定的閱讀文章。該文章是描述如何使用e-GBL遊戲式學習平台,並應用知識螺旋理論,讓遊戲式學習導入教學過程中,採用的研究方法是數位學習常見準實驗研究法,並利用了思考風格之學習分析。其探討議題多能與實驗情境配合,因此我選擇他作為本研究實驗中的指定閱讀文章。

關於這篇文章的原文可以到開放進用期刊「數位學習科技期刊」中下載,下載位置連結在此。我也做了這篇文章的介紹投影片如下:(SkyDrive下載)


閱讀心得報告設計

心得報告的規劃是參考Keshav(2007)、Bogucka & Wood(2009)、John & Roy (2010)等人認為閱讀學術論文的重點,並根據指定閱讀文章、實驗的情境來設計。閱讀心得報告是五題問答題,請受試者自由作答。不限字數,但在說明時提示受試者不用寫太多文字。每個題目配分皆為20分,滿分為100分。受試者必須在兩週的閱讀文章過程中繳交,但是實際上最後是延期到16天才收齊所有受試者的閱讀心得報告。

由於問答題的題目設計在評分上容易偏於主觀、難以取得公平。所以我安排兩位評分者為受試者的閱讀心得報告評分。這兩位評分者熟悉指定閱讀文章,能夠勝任評判閱讀理解能力的工作。每個題目皆有設計好的評分準則,依據題目複雜度的不同,評分準則有2到5條不等,皆有各自的配分。評分時則是請評分者依照此準則,評定受試者回答內容與此準則的符合程度來給分,以確保評分具備信度。

閱讀心得報告的題目與評分準則在評分者之間有多次討論與修正。最早設計時是6題(SkyDrive下載),後來擬定評分準則 (SkyDrive下載),最後的題目與評分準則如下:

  1. 這篇論文提出了哪些研究問題?你覺得是否清楚合適?
    • 受試者是否能從研究問題取得資料?(10分)
      受試者是否能對研究問題提出自己的看法,且能夠解釋支持或反對的理由。(10分)
  2. 請簡單地敘述該論文的主要貢獻。
    • 受試者是否能找到文中「研究貢獻」一節的敘述?(7分)
    • 受試者是否能夠結合論文研究的結果結合到研究貢獻之中?(7分)
    • 受試者是否能用自己的言語來合理地詮釋、說明研究貢獻?(6分)
  3. 哪些證據支持這篇文章的研究結論?論文中的研究數據是怎樣解釋結論?你是否有其他看法?
    • 受試者是否能在研究結果與分析的段落找尋資料?(5分)
    • 受試者是否能夠用自己的話撰寫簡潔的摘要?(5分)
    • 受試者是否能夠連結研究資料與結論之間的關係?(3分)
    • 受試者是否能夠質疑對這些證據,或是嘗試評估結論的正確性?(3分)
    • 受試者是否能夠以這份研究數據提出不同解釋?(4分)
  4. 請提出這篇論文在研究方法上可以改善的地方。
    • 受試者是否能發現樣本數量不足的問題?(3分)
    • 受試者是否能發現單組前後測設計的缺點?(4分)
    • 受試者是否能夠發現學習成效問卷的嚴謹性不足?(3分)
    • 受試者是否能針對研究方法提出其他的建議?(5分)
    • 受試者是否能夠以研究方法的缺點來檢討結論的合理性?(5分)
  5. 這篇論文能對你在實施教學上的啟發是什麼?
    • 受試者是否能從敘述他從這份論文中學習到的知識 (10分)
    • 受試者是否能夠能將論文內容與自身教學經驗結合提出看法 (5分)
    • 受試者是否能夠在教學實施上提出舉例應用、或是新的研究看法或研究方向 (5分)

在回收受試者的閱讀心得報告之後,我擷取受試者針對各五個題目回答的答案,並重新組合成五份評分表格。以第四題的評分表格(SkyDrive下載)來說,表格中包含了題目、評分準則、受試者回答內容、評分欄位。評分表格除了可以方便評分者進行評分之外,還可以讓評分者容易比較所有受試者的回答狀況,以確保評分能夠客觀、公正。

評分者信度的評估方法

在回收受試者的閱讀心得報告之後,兩位評分者即依照評分準則給分。良好的評量工具需要具備效度與信度。閱讀心得報告的效度可從文獻探討中確定,而信度的計算方式,則讓我花了好一段時間研究。

根據余敏賢(2003)的教育測驗與統計重點整理所述,依照評分者人數與評分方法的不同,求評分者信度可用的評分方法有四種,引用表格如下:

評分者人數
二名 二名以上
評分方式 名次法
(等級資料)
Spearman等級相關係數 Kandall和諧係數
分數法
(等距資料)
Pearson相關係數 變異數分析 (Hoyt分析法)

根據我的情況,應該採用Pearson相關係數。但是卻也有許多學者認為這是錯誤的作法。

大陸學者徐曉鋒與劉勇(2007)講解James(1993)的組內評分者間一致性評估的方式,他們指出信度與一致性的不同,此外也有組間與組內的差別。柴惠敏(2007)認為評分者信度評估不應該用Pearson相關係數,因為Pearson相關係數的前提是兩個變項應該是獨立,而我目前資料狀況中,兩位評分者評定出來的分數卻是相依的。他建議應該使用Shrout與Fleiss提出的組內相關係數分析 (intraclass correlation coefficient, ICC)來進行分析。但是ICC需要確認許多前提,竹家庄blog中有專家回答讀者問題中可以得知,這的確不是簡單、隨便就可以使用的一種工具。最後讓我打退堂鼓、回來使用Pearson的是庄主最後的一段話:

定量分析与其它绝大多数知识不同,只能循序渐进、一个台阶一个台阶往上爬。如果对进阶的方法不甚了了,与其大胆试用(大部分情况下会用错,而且错了还不知道原因何在),我强烈建议使用熟悉的经典方法,如回归、方差、crosstabs等等。经典方法也许用到你的数据上会有些问题、但那是已知的问题,而新方法可能带来的风险是无法预知。如果医生不了解某一新药,绝不敢乱用,而会使用已知作用有限并有副作用的旧药。我们是给数据看病的Data Doctor,也要有如此的基本医德。共勉。

閱讀心得報告結果分析

回收受試者的閱讀心得報告之後,兩位評分者即依照評分準則進行評分。評分結果再以Pearson相關係數進行分析,取得Pearson相關係數r = 0.832,雙尾的顯著性p = 0.000 < 0.001,顯示兩位評分者的評分具有顯著的相關性。據吳明隆(2009)的相關係數評判準則來看,r = 0.832屬於高度正相關,也就是評分者A認為高分的受試者、評分者B也認為高分,反之亦然。

相關係數評判標準
相關係數 相關程度
0.7以上 高度相關
0.4-0.69 中度相關
0.1-0.39 低度相關
0.1以下 弱或無相關

由於每個領域的評量工具都有不同的信度準則,r=0.832作為評分者信度來使用是否達到理想的信度水準,這點我還沒有找到足夠的文獻來支持。然而我的研究並不是專注於發展一個評量工具,所以分析到這邊我自認應該足矣。

基於以上信度水準,我可以有信心地將兩位評分者的分數取平均結合,成為最後的報告分數。簡單來說就是下圖:

image


閱讀理解測驗規劃

除了閱讀心得報告之外,我也根據Cromley等人(2010)提出的DIME Model來設計四選一的閱讀理解測驗。

image 

DIME Model (Direct and Inferential MEdiation Model,直接與推論調解模型)是一個閱讀理解測驗設計的模型,Cromley等人認為「閱讀理解能力」(Comp. = comprehension)是由「先備主題知識」(Background)、「推論」(Inference)、「閱讀策略」(Strategies)、「閱讀詞彙」(Vocabulary)與「閱讀流暢度」(Word)這五個構面組成。並在2010的實驗中以生物學專業領域的學術文本作為指定閱讀文章,探討是否DIME Model也適用於特定領域的文章上。研究結果發現,先備主題知識、閱讀詞彙、閱讀策略與推論跟閱讀理解有顯著的影響。而沒有顯著影響的閱讀流暢度,可能是由於學術文章的重點與閱讀快慢並沒有太大影響的關係。

我採用DIME Model的架構來設計閱讀理解測驗,並依據Cromley等人的發現而捨棄閱讀流暢度的構面,僅以先備主題知識、推論、閱讀策略與閱讀詞彙這四個構面來設計題目。依照DIME Model的設計概念來看,只要檢測這四個構面即可推測出綜合的閱讀理解能力。

根據DIME Model題目設計的說明,配合我在實驗中的指定閱讀文章等實驗情境之後,四個構面的設計理念如下:

先備主題知識 (Prior topic knowledge)
  • 測試受試者是否對於「遊戲式學習」、「科學教育」等該篇文章談論的主題概念有所誤解。
  • 必須避免跟「詞彙閱讀」的題目相衝突。
推論 (Inference)
  • 基於Hannon與Daneman (2001)發展出來的方法。
  • 題目由固定形式組成:「A句」並且「B句」因此。再請受試者選擇A句到B句推論的正確答案。
  • 每個答案都是正確的,但只有一個跟推論結果相關。
閱讀理解策略使用 (Reading comprehension strategy use)
  • 測試受試者是否能夠使用閱讀理解策略,例如「摘要」、「預測」、「自我測試」、「先備主題知識活化」、「做筆記(例如圖表繪製)」、「圖文批配」。
  • 設計題目時,需以另一篇類似的文章作為閱讀題目。另一篇文章為「黃國豪, 李玲梅, 王皓瑀, 洪珮菁, 吳佳茹, & 賴煖菱. (2010). 無所不在學習之系統建置與成效分析─以小學生認識校園植物為例. 數位學習科技期刊, Volume2(Number3). Retrieved from http://ijdlt.org/paper_info.php?pid=52043」,這是與實驗指定閱讀文章屬於同樣的期刊,表示審核門檻雷同。儘管摘要敘述方式與實驗閱讀論文不同,但是與大部分論文的摘要相同,足以作為代表。
閱讀詞彙 (Reading vocabulary)
  • 測試受試者是否能理解「專有詞彙」跟「非專有詞彙」的意義。
  • 題目設計為:列出一段敘述,在要測試的詞彙下畫底線,並要求受試者選擇跟這個詞彙最符合的敘述。
  • 詞彙是選擇自重要的關鍵概念,但並不會在題目的段落中解釋。
  • 必須避免跟「先備主題知識」的題目相衝突。

依照以上四個構面與設計理念,最後我設計出15題的閱讀理解測驗 (SkyDrive下載)。並在為期兩週的閱讀文章期間結束之後,於數位學習平台上進行限時30分鐘的測驗,測驗完成之後即進行統計分析。

測驗的評估方法

比起問答題的心得報告,選擇題的測驗較容易評估,不僅方法客觀、爭議性也較少。在此我主要參考了鄭湧涇(1998)的評量結果統計分析步驟:

  1. 將試卷依得分的高低排列。
  2. 由最高分向下取全部試卷數的27% 或三分之一,稱為「高分組」。
  3. 再由最低分向上取與高分組相同份數的試卷,做為「低分組」。
  4. 分別計數高、低分組,選答各試題每一選目的人數,記錄在「試題卡」(Test item card)上。
  5. 計算各試題之「難度指數」,以百分比表示,其計算方法如下:

難度指數(P) = {[T-(RU+RL)]/T}x100

RU :高分組答對該題人數

RL :低分組答對該題人數

T :全部取樣人數,即高、低分組試卷份數之和

  1. 求取各試題之「鑑別指數」,其計算方式如下:

鑑別指數(D) =(RU-RL)/(1/2)T

  1. 評鑑每一試題的「擾亂答案」(選目)之有效性。
  2. 將所有試題依其難度指數與鑑別指數值製作綜合分析表,並求出其平均值;綜合分析。

最後我再用庫李法(Kuder-Richardson method,1937)中的KR20來評估內部一致性信度。但是必須說明的是,許多評估測驗評量的指導中並沒有說明他們是使用哪些數值作為計算KR20的數據,到底是要用全部受試者的答題狀況、還是應該要像難度指數與鑑別指數一樣只取用高分組、低分組的答題狀況來計算,似乎較難以有所定論。可以確定的是,僅使用高分組與低分組來計算KR20信度係數的結果會比採用全部受試者的結果還要高,也就是數字看起來會比較漂亮的意思。所以以下KR20內部一致性信度係數我只有使用高低分組的受試者來計算。

閱讀理解測驗分析結果

image

19位受試者完成測驗之後,我就可以依據測驗結果來進行分析。

初步分析結果顯示整體難度指數為36%,比正常情況下的50%還要簡單很多,也不到理想的37.5%;整體鑑別指數為0.29,屬於不佳的試題,必須加以改進或棄卻(Ebel, 1972);整體無效選目高達36.8%,也就是完全不會有人去選、一看就知道是錯誤的選目數量。而最後的KR20內部一致性信度為0.56,在10到15題的小型題庫中算是可接受的範圍(林朝順等,2005),但不算理想。

試題鑑別指數(D)的評鑑標準
D值 評鑑
0.40以上 極佳的試題
0.30-0.39 尚可的試題,可能需要稍加改進
0.20-0.29 不佳的試題,必須加以改進或棄卻
0.19以下 極差的試題,應棄卻

為了提高這份測驗的信度,參考Ebel (1972)的建議,將題目中鑑別指數等於或低於0.2的題目刪除,修正整份測驗。刪減之後題目數量從15題降至8題,整體難度指數提高到47.5%,屬於理想的程度;整體鑑別指數提高到0.6,屬於極佳的程度;無效選目降低到28.3%,KR20內部一致性信度更是提高到0.77。

整體而言,修正後的測驗都顯示出較理想的狀況,因此我將之作為「測驗分數」來採用。修正過程簡單來說就是下圖:

image

閱讀理解測驗的詳細結果請看投影片:(SkyDrive下載)

閱讀理解分數處理

在實驗中利用兩種評量工具可以取得兩項數值:「報告分數」與「測驗分數」。我以Pearson相關係數再做分析,計算出r = 0.616,雙尾顯著性p = 0.005 < 0.01,屬於顯著的中度正相關,顯示這兩項數值都可以測量出同一種概念,也就是閱讀理解能力。接著我將兩項數值以比例的方式標準化,並取平均結合,得到最後的閱讀理解分數。處理方式如下圖:

image

整個處理過程的分數列於下表:

受試者
編號
修正前
測驗分數
測驗分數 評分者A
報告分數
評分者B
報告分數
報告分數 閱讀理解
分數
1 12 6 48 50 49 0.84
2 12 6 53 75 64 1
3 12 5 46 65 55.5 0.81
4 9 4 40 31 35.5 0.49
5 10 3 46 52 49 0.54
6 10 4 39 52 45.5 0.6
7 8 4 26 14 20 0.32
8 8 2 34 41 37.5 0.31
9 11 4 37 48 42.5 0.56
10 8 2 47 47 47 0.41
11 10 5 59 61 60 0.86
12 8 1 40 42 41 0.25
13 9 4 32 46 39 0.53
14 10 5 57 63 60 0.86
15 10 6 54 63 58.5 0.94
16 9 4 48 60 54 0.69
17 12 6 51 56 53.5 0.88
18 6 2 17 20 18.5 0.1
19 7 2 40 30 35 0.28

 

我將以上所有過程以投影片方式說明,投影片如下:(SkyDrive下載)


小結

這些資料都是我論文的一部分,但是在寫這篇文章的時候,我並不是抱著我在寫論文的心態而寫,而只是單純地記錄我是如何處理這些資料以及這之中遇到的困惑。實際上論文時可能會將一些無法解答的疑惑刪除、修飾,讓論文寫起來漂亮一點。

儘管為了我花了許多精力在蒐集文獻、規劃如何評估閱讀理解能力,但是平心而論,這並不能非常準確地說這樣子就能評估閱讀理解能力,只能說是盡可能地去得到受試者在閱讀理解能力上高低的量化數值而已。就如我內文所說的,這個研究並不是發展閱讀理解能力評估量表或是心得報告規範工具,在撰寫這份論文之中,我最多就做到這邊而已。

被迫採用這種不穩定的評估方式,最大的原因還是受限於實驗情境中,必須要配合課堂內容而選定文章。碩士生閱讀的文章不會是一般常見的泛用讀本,自然也難以有客觀、公正的評量工具。迫於這種情況下只能自己規劃,但這不管怎麼做都很難讓人真的信服。

最理想的解決方式還是換一個實驗情境、採用經過公開評量的工具,例如PIRLS(Progress in International Reading Literacy Study,促進國際閱讀素養研究)或是全民英檢使用的閱讀文章與評量工具,就能夠避免陷入這種窘境。

事實上,在之前的規劃中,我的確是打算採用PIRLS的文章作為實驗的工具。但是人算不如天算,在種種無奈與時間限制之下,我只能採用目前這種作法。然而換個角度想想,很多時候我們很難去創造一切盡如己願的環境來評估資料,像現在這樣能夠配合場域、情境即時地設計一個評估方式,說不定這才是比較貼近現實的狀況。變化並沒有錯,錯的是無法因應變化的人,我是這樣子認為的。

即使如此,我想我在評估閱讀理解能力的過程中,應該還是有些地方值得別人參考、使用,所以才將資料彙整、撰寫成這篇文章。希望能夠幫到大家的忙。


參考文獻

  • Cromley, J. G., Snyder-Hogan, L. E., & Luciw-Dubas, U. A. (2010). Reading Comprehension of Scientific Text: A Domain-Specific Test of the Direct and Inferential Mediation Model of Reading Comprehension. Journal of Educational Psychology, 102(3), 687-700. 
  • Keshav, S. (2007). How to read a paper. ACM SIGCOMM Computer Communication Review, 37(3), 83–84. 
  • Bogucka, R., & Wood, E. (2009). How to Read Scientific Research Articles: A Hands-On Classroom Exercise. Issues in Science & Technology Librarianship, (59), 4. 
  • John W. Little, & Roy Parker. (2010, Fall). How to Read a Scientific Paper. Retrieved November 23, 2010, from http://www.biochem.arizona.edu/classes/bioc568/papers.htm#evaluate 
  • 黃桂芝, 曾憲雄, 翁瑞鋒, & 何筱婷. (2008). 採遊戲式學習教育平台之科學教育活動設計. 數位學習科技期刊, 1(1). Retrieved from http://ijdlt.org/paper_info.php?pid=27
  • 余敏賢. (2003). 教育測驗與統計:重點整理. 高點致勝叢書系列 (五版.). 臺北市: 高點文化. Retrieved from http://library.yfms.tyc.edu.tw/webopac/detdata.php?pagerows=15&orderby=BRN&qrow=1&brn=1031623
  • James, L. R., Demaree, R. G., & Wolf, G. (1993). rwg: An assessment of within-group interrater agreement. Journal of Applied Psychology, 78(2), 306–309.
  • 徐晓锋, & 刘勇. (2007). 評分者內部一致性的研究和應用. 心理科学, 30(5), 1175-1178. Retrieved from http://cnki50.csis.com.tw/kns50/detail.aspx?QueryID=3&CurRec=1
  • Statistics and SAS Package, School of Physical Therapy, National Taiwan University. Retrieved January 20, 2011, from http://www.pt.ntu.edu.tw/hmchai/PTcomputer/hSAS/SAScontinuous/SASicc.htm
  • Shrout, P. E., & Fleiss, J. L. (1979). Intraclass correlations: uses in assessing rater reliability. Psychol Bull, 86(2), 420–428.
  • 庄主. (2009, May 17). 如何选择Intraclass correlation coefficient (组内相关系数) 的模型? - Windows Live. Retrieved January 20, 2011, from http://zjz06.spaces.live.com/blog/cns!3F49BBFB6C5A1D86!1228.entry?wa=wsignin1.0&sa=753480086
  • 吳明隆. (2009). SPSS 操作與應用-問卷統計分析實務 (二版三刷). 台北: 五南.
  • 鄭湧涇. (1998, September 18). 科學學習成就評量:II.評量結果的統計分析. Retrieved December 27, 2010, from http://140.122.143.143/doc/evaluate3.htm
  • Kuder, G. F., & Richardson, M. W. (1937). The theory of the estimation of test reliability. Psychometrika, 2(3), 151–160.
  • 林朝順, 鄒國英, 劉正耀, 胡彼得, & 楊育純. (2005). 醫學系筆試多項選擇題品質分析. 輔仁醫學期刊, 3(4), 213–220.
  • Ebel, R. L. (1972). Essentials of educational measurement.
(more...)

論文進度報告(2011/1/19):變更的研究架構 Progress report: modified research

布丁布丁吃布丁

論文進度報告(2011/1/19):變更的研究架構 Progress report: modified research

image

現在論文的進度來到了「分析資料」的步驟。很多人會問我:「論文寫得怎樣了?」我都會回答:「一個字都還沒寫。」是的,論文還沒正式動筆寫,因為我現在還在數字之間打轉。


為什麼很久都沒報告進度?

距離上次論文進度報告居然隔了快要兩個月的時間,這段時間我到底在幹嘛呢?其實是因為12月底的時候我就在進行論文的實驗。由於擔心受試者會有霍桑效應的影響,也就是他們發現到自己原來就是實驗的對象,而改變了原本自然的行為,所以我想應該是要隱瞞「這是一個實驗、我正在觀察你們」的這個訊息。

實驗的過程中其實有很多想跟大家分享的資料,可是礙於這個限制,我自己也悶了好久。現在實驗已經結束,進入分析資料的階段,也跟老師確認了一下,就算公開應該也是不受影響,所以接下來我會陸陸續續地在這邊敘述目前論文的進度。

變動的實驗進行、變動的研究架構

由於實驗進行方式與當初計劃書規劃的有很大的不同,所以連研究目的、研究問題、研究架構等設計都要全部重寫。會變動我覺得很正常,跟人扯上關係的計畫通常都無法如願地進行,這並不是任何人的錯。如果真要怪是誰的責任,那我會認為是自己需要去承擔這種變更帶來的風險與額外工作。

簡單來說,整個研究架構都要做調整。從上週與老師討論時講的研究架構投影片 (SkyDrive下載) 讓老師直呼:「你的研究怎麼會變成這樣?」就可以知道我的論文變動的程度大到令應該是很熟悉的老師都覺得很驚訝。

總而言之,現在就是要改研究架構。我希望整個研究架構能寫到簡單、直覺、易懂,所以不斷地翻修,並嘗試跟別人說明、邊講邊反省看看自己是否寫得好或壞。

基於標註行為之知識萃取研究與應用

目前的論文的標題我擅自將之修改成「基於標註行為之知識萃取研究與應用」,而研究目的主要有三項:

  1. 發展基於閱讀標註行為之知識萃取機制。
  2. 驗證知識萃取機制有效性。
  3. 找尋改善知識萃取機制的方向。

根據以上研究目的,我需要探討以下研究問題才能達到這些目的。其中「發展」目的是要仰賴文獻探討與系統發展,因此只需要針對「驗證」與「改善」來設計研究問題:

「驗證」目的

  1. 閱讀理解能力高低是否與知識萃取機制結果相關?
  2. 知識萃取機制與整體的標註行為有何差異?

「改善」目的

  1. 哪些標註行為與閱讀理解能力高低相關?
  2. 哪些標註行為與背景因素相關?
  3. 受試者對於改善知識萃取機制的建議是?

上述研究問題中主要需要定義的有四個名詞:

  1. 知識萃取機制:本研究根據文獻探討與專家意見發展而成,考慮六種標註行為之後以模糊綜合評判來判斷標註好壞的「標註分數」、並且給予使用者提示改善的「標註建議」。知識萃取機制包含六項因素的模糊隸屬度函數制定(判斷各行為的好壞)、因素權重設定這些細項。
  2. 知識萃取機制結果:受試者透過本研究的知識萃取機制所得到的結果,包含「標註分數」與「標註建議」接受程度。
  3. 標註行為:受試者利用本研究標註系統的原始行為資料。與知識萃取機制結果不同,不受知識萃取機制設計的影響。
  4. 閱讀理解能力:閱讀本研究指定文章之後,以「閱讀理解測驗」跟「心得報告」來評定受試者的閱讀理解分數,能夠反映出受試者閱讀理解能力的高低。
  5. 背景因素:包含閱讀習慣(閱讀報紙、雜誌、書本、網路文章的頻率)、內外控性格、科技接受度模型

基於以上五個研究問題,就可以整理成下面的研究架構圖:

image

而這五個研究問題又必須蒐集不同的資料、做不同的統計與分析方法來處理,才能回答這些問題。詳細的內容就請看投影片吧:(SkyDrive下載)


結語

由於分析方式與實驗室中常見的準實驗研究法有很大的不同,各種因素之間要如何配對比較都需要構思,再繼續分析的這段日子裡,研究架構還會持續地被修正吧。

另一方面,不熟高級統計的我實在是無法貿然地使用單因子變異數等統計工具,就算統計軟體跑得出來,但我也不會解釋或是確認各種數字。儘管目前我只是使用初統的獨立樣本T檢定與Pearson相關係數,一方面我想這已經足以解釋之外,另一方面是我預期這些因素相關都不太能達到統計上的顯著性,因此到最後還是需要參雜許多質性的個案觀察來解釋吧。

(more...)

循序樣式探勘工具 Sequential Pattern Mining Tool

循序樣式探勘工具 Sequential Pattern Mining Tool

(more...)

輸出陣列元素所有不重複組合 print all unique combination of an array

輸出陣列元素所有不重複組合 print all unique combination of an array

(more...)

DSpace清理已刪除Bitstream的cleanup時出現java.lang.OutOfMemoryError: Java heap space的處理方法

布丁布丁吃布丁

DSpace清理已刪除Bitstream的cleanup時出現java.lang.OutOfMemoryError: Java heap space的處理方法

DSpace中刪除的Bitstream(檔案)只會在資料庫中標示為deleted = 1,並不會從檔案系統中移除。換句話說,檔案還留在伺服器上,佔據硬碟空間。如果要真正地刪除檔案,必須使用[dspace]/bin/cleanup指令,關於Bistream Store(檔案儲存)知識在DSpace的說明書中已經有提及,在此只是稍微回顧一下。

Bistream的清理主要是使用BitstreamStorageManager.cleanup(),他會從資料庫中取出所有被標示為deleted = 1的Bitstream,並一一地從檔案系統中刪除。但是deleted = 1的Bitstream數量太多時,就會出現「java.lang.OutOfMemoryError: Java heap space」錯誤。

簡單來說,這是由於記憶體不足,DSpace無法處理從資料庫取出來的超多資料的錯誤。處理的這個問題的方法有兩種,一種是加大Java可用的記憶體,另一種是變更資料庫查詢的方式。我認為加大Java可用記憶體的方法是治標不治本,因為總是會有挑戰記憶體上限的資料量出現。我建議的是修改查詢資料庫的方法,設定offset跟limit,一次查詢部分資料,然後分多次查詢進行。

因此我修改了BitstreamStorageManager.java,在此也順便提供給有遇到類似問題的人使用:

  1. 下載BitstreamStorageManager.java (注意,這是DSpace 1.5.1的版本,如果你使用不同版本的話,並不建議直接下載覆蓋,而是請參考下面的說明)
  2. 放至[dspace-src]/dspace-api/src/main/java/org/dspace/storage/bitstore/BitstreamStorageManager.java

這個檔案主要是修改了cleanup方法,方法如上述。詳細的程式碼如下:

    /**
     * Clean up the bitstream storage area. This method deletes any bitstreams
     * which are more than 1 hour old and marked deleted. The deletions cannot
     * be undone.
     * 
     * @param deleteDbRecords if true deletes the database records otherwise it
     *                only deletes the files and directories in the assetstore  
     * @exception IOException
     *                If a problem occurs while cleaning up
     * @exception SQLException
     *                If a problem occurs accessing the RDBMS
     */
    public static void cleanup(boolean deleteDbRecords) throws SQLException, IOException
    {
        Context context = null;
        BitstreamInfoDAO bitstreamInfoDAO = new BitstreamInfoDAO();
        int commit_counter = 0;

        try
        {
            context = new Context();        
            
            int queryBitstreamNumber = 10;
            int queryBitstreamIndex = 0;
            int queryBitstreamInterval = 10;
            
            while (queryBitstreamNumber > 0)
            {
                String myQuery = "select * from Bitstream where deleted = '1' offset " + queryBitstreamIndex + " limit " + queryBitstreamInterval;
                
                List storage = DatabaseManager.queryTable(context, "Bitstream", myQuery)
                        .toList();
                queryBitstreamNumber = storage.size();
                if (queryBitstreamNumber == 0)
                    break;

                for (Iterator iterator = storage.iterator(); iterator.hasNext();)
                {
                    TableRow row = (TableRow) iterator.next();
                    int bid = row.getIntColumn("bitstream_id");
                    
                    System.out.println("Ready to Bitsteam (" + bid + ")...");

                    GeneralFile file = getFile(row);

                    // Make sure entries which do not exist are removed
                    if (file == null || !file.exists())
                    {
                        log.debug("file is null");
                        if (deleteDbRecords)
                        {
                            log.debug("deleting record");
                            bitstreamInfoDAO.deleteBitstreamInfoWithHistory(bid);
                            DatabaseManager.delete(context, "Bitstream", bid);
                        }
                        System.out.println("File not exists, continue.");
                        continue;
                    }

                    // This is a small chance that this is a file which is
                    // being stored -- get it next time.
                    if (isRecent(file))
                    {
                        log.debug("file is recent");
                        System.out.println("File is recent.");
                        continue;
                    }

                    if (deleteDbRecords)
                    {
                        log.debug("deleting db record");
                        bitstreamInfoDAO.deleteBitstreamInfoWithHistory(bid);
                        DatabaseManager.delete(context, "Bitstream", bid);
                        System.out.println("Deleting db record.");
                    }

                    if (isRegisteredBitstream(row.getStringColumn("internal_id"))) {
                        System.out.println("do not delete registered bitstreams");
                        continue;            // do not delete registered bitstreams
                    }

                    boolean success = file.delete();

                    if (log.isDebugEnabled())
                    {
                        log.debug("Deleted bitstream " + bid + " (file "
                                + file.getAbsolutePath() + ") with result "
                                + success);
                        System.out.println("Deleted bitstream " + bid + " (file "
                                + file.getAbsolutePath() + ") with result "
                                + success);
                    }

                    // if the file was deleted then
                    // try deleting the parents
                    // Otherwise the cleanup script is set to 
                    // leave the db records then the file
                    // and directories have already been deleted
                    // if this is turned off then it still looks like the
                    // file exists
                    if( success )
                    {
                        deleteParents(file);
                    }
                    
                    // Make sure to commit our outstanding work every 100
                    // iterations. Otherwise you risk losing the entire transaction
                    // if we hit an exception, which isn't useful at all for large
                    // amounts of bitstreams.
                    commit_counter++;
                    if (commit_counter % 100 == 0)
                    {
                        context.commit();
                        System.out.println("commit");
                    }
                }
                
                queryBitstreamIndex = queryBitstreamIndex + queryBitstreamInterval;
                
                
            }    //while (queryBitstreamNumber > 0)

            context.complete();
        }
        // Aborting will leave the DB objects around, even if the
        // bitstreams are deleted. This is OK; deleting them next
        // time around will be a no-op.
        catch (SQLException sqle)
        {
            context.abort();
            throw sqle;
        }
        catch (IOException ioe)
        {
            context.abort();
            throw ioe;
        }
    }
      (more...)

      「布丁吃布丁?」文章的分類

      布丁布丁吃布丁

      「布丁吃布丁?」文章的分類

      從這一問開始,就來談談「布丁布丁吃?」裡面大概都是什麼樣的文章吧。文章在blog裡稱之為「post」,但內容不一定是供人直接閱讀的文字,有時候也是會有讓人當做應用程式一樣使用的JavaScript程式(像是序列分析工具),但在這裡我就用「文章」作為blog中每一篇內容的統稱吧。


      雜亂無章的初期

      一開始建立blog的時候,我對於要放些什麼在這邊並沒有太多概念。當時社交網站的種類並不多,blog算是少數「供人在網路上發聲」的平台之一。因此我就嘗試地把一些雜七雜八的東西放上來。

      稍微回顧了一下,我發現當時寫的文章可以大概地分成三類:

      1. 日記:記錄心情或是生活點滴的文章,一方面是為了整理、記錄當時的想法,另一方面是供未來的自己觀看。
      2. 創作:課堂的報告備考筆記考古題的答案(雖然大家比較在意的應該是考古題的題目)、面試準備或演講心得等,在各種活動時建立、撰寫的文件資料。主要的用意是供別人參考,但其實並不是這麼好閱讀。
      3. 備忘:轉載自其他網站的資料沒有答案的考古題圖片備份等等。這是為了給自己備忘用。

      這時候並沒有特定的目標讀者,這時期的文章還是相當私人,在公開的地方發佈私人用或是私人做完之後順手放出來的文章的確很奇怪。而且跟著別人有樣學樣的結果就是不少資料都是網路上重複的垃圾文章,甚至還有違反版權的疑慮。

      大學時期的備考筆記與考古題

      值得一提的是,在大學時期最受歡迎的文章是考古題。

      願意公開考古題題目的人不多,而我是很不怕死地在blog公開考古題的人之一。大學系所的考古題有個習慣,都是學長姊一脈相傳下來,我還記得當時學姊拿給我的考古題厚厚一疊,有些還是附有前人解答的影印答案卷。我覺得這樣子的知識傳承蠻不錯的,可是又很懶得印這麼多資料傳給後面的人,就乾脆將之數位化之後放在blog,這樣子只要跟來要考古題的學弟妹說「去看我的blog就好,網址是pulipuli.blogspot.com」就可以輕鬆打發!

      當然,這種舉動也會被人當做眼中釘。有些同學並不喜歡我公開考古題,他們覺得這是用功或是善於班級交際的人才能擁有的資源。搞到後來老師也知道我在網路上公開考古題,只是並沒有明確地阻止我這樣做而已。

      從一開始考古題只有題目的轉載,到接下來我逐漸地將考古題加入答案,或是在blog發表對某些考試的準備資料。然而,我並不是很會讀書的人,這些文章或多或少都有錯誤。有時候我在考前發佈了該考試的準備筆記,而之後繼續讀書時發現我有些認知錯誤,然後在考試時進行更正,似乎有些同學就因為這樣子被我誤導了。

      即使是到現在,似乎也是有些輔大圖資的學弟妹會上來使用當時發表的考古題。雖然這些並不是非常原創的文章,但是能幫上很多人這點,讓我感到非常欣慰。


      現在的分類

      隨著時間推移,原本會在blog的備忘資料卻隨著社交網站服務變多,大家在網路上發佈的訊息也越來越多樣化。加上受到電腦玩物等blog的影響,blog的文章會偏向介紹的方向,開始有了「模擬的讀者群」這樣的概念,而不是盡放一些只是供自己閱讀的文章。

      現在的分類大致上可以作為四種:

      1. 日記:一樣是記錄心情的日記,但是語氣用詞會有意識到「這是給別人看的、而不是給自己看的內容」,所以少了肆無忌憚地心情隨筆,多了更講究架構脈絡的記事風格。不過最近越來越少在blog寫心情日記,而轉移到較為私密的Plurk上來撰寫。比起老是一堆看不懂文章的blog來說,說不定追蹤我的Plurk還比較有趣?
      2. 記事:比起日記的心情記事,我也開始針對特定事情描述來龍去脈,像是詐騙事件論文進度報告。希望比起心情隨筆的日記來說,記事是更容易閱讀、更有參考價值的文章。
      3. 創作:自己做任何活動之後所產生的產物,這時期最多的就是每次meeting報告的投影片。然而這些內容也都是目標要給同學或老師看,所以至少也不會太個人。但是一些自己撰寫給自己用的JavaScript小程式還是沒有很多說明,有時候也多少讓人難以理解。
      4. 介紹:如果說創作的部份是在其他活動中產生的文章,「介紹」就是專以blog這個媒體來介紹的文章。我會預設讀者是對這方面有興趣、並具有一定程度的能力,撰寫的文章基本上都是圖文並茂,而且還幫程式碼加上顏色區別。

      我認為網路上到處轉載的垃圾資料已經夠多了,我希望能夠在這個blog的文章能多一點獨特性、減少無意義的重複。私人的備忘資料也改用其他工具來保存,像是EvernoteSkyDrive,因此逐漸減少在blog上發佈純粹是備忘相關的資料。

      電腦技巧與技術的介紹

      我在大學跟研究所時皆管理大量的電腦跟伺服器,也受到電腦玩物等blog的影響,我也開始寫些自己使用電腦跟管理伺服器的技巧,像是隨身碟防毒軟體的心得SPICEWORKS—IT管理工具簡易操作教學。而實際上「布丁布丁吃?」瀏覽率最高的都是這類型的文章。之前聽老師說有人統計出blog最受歡迎的文章類別是「電腦3C資訊」之類的,雖然從我的blog瀏覽統計裡也得到了映證。

      然而,電腦技巧的資料也是有熱門跟冷門的區別。娛樂性較高的電腦技巧文章很受歡迎,但是因為網路上介紹電腦技巧相關的文章實在是很多,有時候自己花了很多時間寫完了卻發現其實不少人已經寫過之後,就會覺得有點讓人喪氣。

      相較之下,「布丁布丁吃?」有許多很少人在介紹、而自己覺得像是挖到寶物來跟大家炫耀的電腦技術文章,像是DSpace系列。儘管對大部分的人來說看不太懂,但對有需要的人來說是非常地有用,也是讓我覺得這些都是「布丁布丁吃?」的核心價值所在。

      布丁的研究之路(是的,我正在繞遠路)

      不知道有多少人有發現到「布丁布丁吃?」的說明是「布丁的研究之路(是的,我正在繞遠路)」。

      在講講這說明跟內容的關係之前,我先介紹一下這個說明的由來。在我要考研究所時跟大學學長討論未來的方向,學長認為我不考資工資管而堅持要考圖資相關研究所的這種行為就像是在繞遠路一樣,我覺得學長說的很是,所以就把原本的「布丁的研究之路」加上了「是的,我正在繞遠路」的輔助說明。而在念研究所時,不知道是受到了「我正在繞遠路」的影響還是我真的打算繞遠路,我的確在做許多看似跟論文相關又好像不太相關的事情,結果就如學長所說的真的一直在繞遠路。

      一開始我並不知道「研究之路」到底是什麼,也許是念研究所相關的事物吧?於是「布丁布丁吃?」中有著許多我在念大學、研究所時所做過的大小事情記事,而這些就是「布丁的研究之路」上所經歷過的事情。可是唸書唸到現在,我對於「研究」的概念逐漸具體,也知道真正的研究結果通常是發表在學術期刊,而不是像我現在這樣在blog裡發表的一些自己以為覺得不錯的文章。

      儘管如此,我還是覺得在blog裡發表一些別人很少談、但是很重要的資料來說,是很有價值的事情。對我來說,這可能真的就是屬於自己的「布丁的研究之路」了。


      小結

      反思了一下自己往年的文章分類之後,才發現右邊那些「標籤」分類其實有很多不是很正確。不過這篇文章從開始寫到現在也不過三天,而且實際上主要在寫的只有一天不到,如果花更多時間在回顧文章上,也許對內容分類會有更深入的看法。

      另一方面來說,其實我也不是很在意分類究竟如何啦。就如我第一問所說的,「布丁布丁吃?」的用法並不是從分類架構來找到你需要的資料,請使用網路搜尋引擎用你的關鍵字來找資料即可。儘管我自己是圖資領域的,但對於blog這種沒有特定主題的資料集合來說,勉強給予個分類架構倒也是很奇怪。就看要什麼角度來看、進行怎樣的分析就是了吧。不過我這人沒沒無聞又無聊,我想應該也不會有人在意才是。

      下一問:

      「布丁布丁吃?」與讀者的互動:布丁與讀者互動的管道為何?回應讀者留言的過程與感想為何?與讀者在blog之外的互動經驗為何?甚至是實體互動?

      (more...)

      45巷殺人魔王燒臘店

      布丁布丁吃布丁

      45巷殺人魔王燒臘店

      IMAG0114

      • 店名:沒有名字(這家店真的不叫做殺人魔王,只是很多人都這樣叫他,所以以下都用「殺人魔王」來稱呼這家店)
      • 位置:指南路二段45巷內
        image
      • 菜單:燒臘飯、麵
      • 價位:60NTD~80NTD
      • 座位:普通容易坐到座位

      殺人魔王

      IMAG0114

      這家店在政大已經很久了,甚至有新聞報導。這家店被人戲稱為殺人魔王的原因是因為剁燒臘老闆看起來就很像殺人魔王,但我覺得其實還好,一般燒臘店的廚師也都是帶著那樣的氣勢來剁燒臘的啦。

      一開始到這家店的人一定會覺得很奇怪,究竟門在哪裡?事實上殺人魔王不僅沒有招牌,連門把都沒有!而其中一扇就是就是可以從旁推開的門,必須要將沒有門把的門直接推開才能進入。光是從開門的動作就可以判斷是否是殺人魔王的常客了。

      殺人魔王燒臘店的環境就如燒臘店一樣地油膩、黏稠,不管做哪邊都覺得髒髒黏黏的,這只能說是燒臘店處理食物時無法擺脫的困擾,而殺人魔王也不例外。儘管店內位置不少,也有提供電視,但是並不適合久坐。

      IMAG0116

      殺人魔王燒臘店的菜單也是很有燒臘店的風格:以幾種固定的燒臘肉類來排列組合成為餐點。請仔細一看,大致上都是叉燒、烤鴨、油雞、排骨、豬排等組合。再搭配飯、飯、炒飯、燴飯、蓋飯,就成了各式各樣的餐點。但是其實吃起來味道都差不多啦,非常地重鹹。

      殺人魔王不僅價位是學生等級的便宜(附近知名的陽城燒臘都是80元起跳),而份量也是學生等級多。店內提供自取的綠豆湯,可以解解燒臘的油膩。天氣熱時是冰的綠豆湯,天氣冷時則是熱的綠豆湯,綠豆湯還真是萬用。


      芙蓉蛋蓋飯(60NTD)

      IMAG0115

      殺人魔王的特色餐點之一是這道芙蓉蛋蓋飯60元,蓋滿了整盤飯的是蛋、切碎叉燒、豬排等肉類,淋上燒臘醬汁,下面則是超多的白飯。雖然說不上美味,但是光看覺得很華麗,而且飽足感十足。


      結語

      殺人魔王最大的問題是餐點都很鹹、非常重口味。雖然有綠豆湯可以配,但是綠豆容易卡在牙縫裡,喝完也不覺得特別舒爽。因此我也較少光顧殺人魔王就是。比起美味來說,這家店從店名、門口等故事應該是更令人覺得有趣的地方吧。

      (more...)