:::

邱銘心老師演講「圖資英文學術文章閱讀指引」

布丁布丁吃布丁

邱銘心老師演講「圖資英文學術文章閱讀指引」

image

上研究所來第一個難關,就是英文論文閱讀。一週三、四堂課,幾乎固定都有一到兩篇論文要閱讀。大學時有如期末報告等級的英文論文閱讀,此時變成每週都要做的功課。到了開始撰寫論文的時候,面對老師沒有教的一片陌生的領域,我深深地覺得每週讀一兩篇論文的速度還是太慢了!因此邱銘心老師從原本的「個案研究法」忽然改題目成為「圖資英文學術文章閱讀指引」的時候,真讓我有種及時雨到來的高興!

image

邱老師於11月26日來到政大圖檔所演講「圖資英文學術文章閱讀指引」,在這之前她交待我們先閱讀一篇英文論文:Diffusion theory: A review and test of conceptual model in information diffusion,並於演講時跟我們討論這篇論文的閱讀方法。這是一篇不太好說明的文章,光看表面題目的意思「擴散理論:資訊擴散中概念模型的檢驗及評論」是難以理解作者到底要表達什麼。邱老師舉了一個讓我印象深刻的例子,她說有一次她的指導教授跟她meeting關於博士論文的時候,老師不看論文而直接要求她用簡短的字句來敘述她的論文到底做了什麼。邱老師說這是一個相當重要的能力,這也警惕著撰寫碩士論文的我要時常反思自己到底在幹麼。(可惜還想得不夠清楚,才會在計畫書口試的時候被口委糾正。)

邱老師談到閱讀論文時會先注意到期刊、研討會的相關背景,以及作者的研究領域。儘管這的確能夠幫助論文閱讀更加順利,但是對於這個領域認識尚淺的我們來說,實在是很難去判斷這些背後因素,更別說光讀懂論文本身就已經很頭痛了。如果有類似citing index或是作者領域與發表年表之類的工具可以使用的話,那我想應該可以幫助我們補充這些論文背後的資訊吧?

image

最後老師提到一些標註的技巧,我也想補充一些我作標註的方法。我讀得論文都會轉換成PDF檔案,利用Adobe Acrobat Pro(政大有買)或是PDF X-Change Viewer(免費,http://toget.pchome.com.tw/intro/business_wordprocessing/25873.html)都可以對檔案進行標註。可以作到標亮重點文字,增加文字評論,簡易的繪圖、符號等功能。再搭配zotero書目管理工具(http://www.zotero.org/)內建的PDF註解搜尋引擎,連檔案內的註解都可以直接搜尋。Zotero還可以對檔案下標籤、筆記,讓你的檔案有更好的組織架構。

此外,要註解些什麼東西也是很重要的。邱老師寫到要把你覺得不懂得地方以及你覺得有問題的方法記下來,但我覺得更實用的方法是記下你能夠理解的部份,並把他用你的話重新撰寫。在撰寫論文的時候,時常需要引用其他研究的說法來佐證,於是就會遇到「當初到底在哪裡看過這段話,可是卻想不太起來」的困境。這時如果要再回頭去翻每篇文章,然後重新理解、撰寫註解,是很費時的功夫。不如再當初就先把覺得以後會用到的點子、想法,都直接用你自己的話撰寫成一段文字,做好英翻中的工作與挑出你著重的重點,以後寫論文的時候直接參考這些重要筆記,再加上引用來源,很快地就可以完成一篇基於你閱讀文獻之後的文獻探討。

善用電腦工具,就能快速地整理並找到你當初讀過的論文,而不要到了要寫文獻探討的時候才在焦頭爛額喔!

(more...)

計劃書口試通過

布丁布丁吃布丁

計劃書口試通過

image

今天邀請的口委老師為師大圖資所的卜小蝶老師與政大資科系的劉昭麟老師。在簡短的口頭報告之後,老師們開始針對我的論文開始提問。老實說,老師不愧是老師,問的問題都相當切中核心(至少是昨天rehearsal時候大家沒有提到的點)。主要是討論到主題的聚焦,論文的撰寫方式上需要修改。大體的方向跟研究方法是沒有問題的,但這次計劃書其實還不夠具體,是蠻可惜的,儘管劉老師說計劃書大概就作到這種程度吧。

比較有趣的是,今天來口試的委員個別來自於社會科學領域跟資訊工程領域,兩位老師切入的觀點都不一樣。劉老師會相當擔心實驗對象要怎麼進行,卜老師原本則是以為要探討標註內容的分析,而在口試的問答過程當中我也是盡可能地解釋了老師的疑問。

另外一點就是論文寫法的部份,我的論文先從文獻探討、發展理論、設計系統、到最後進行實驗一步一步進行。聽說要做系統的科系似乎並不會作這方面的文獻探討,但是沒有理論基礎就直接提出功能的話,研究這樣不會不夠紮實嗎?這還是我第一次發現。仔細想想,似乎以前meeting時,工教的學生就不太探討理論,而比較專注於技術實作上,這倒也是很符合這個說法。因此先作過文獻探討,再進行系統的開發,這種內容似乎很受老師認同。劉老師說要拿回去給學生參考,有點讓我受寵若驚。

當然,這樣一路探討下來,要做的事情就非常地多。不僅卜老師覺得這題目要做的事情很多,連我自己也覺得這樣做下來延畢的可能性相當地大。不過我還是覺得研究作的紮實是最重要的,即使計劃書結束了,我還是想要多讀幾篇相關文獻,讓知識萃取的方法更具體一點。

最後在評分的時候,卜老師好像看得出我不太緊張的感覺,實際上我覺得跟老師們討論的過程還蠻有趣的,有種知識就在辯證當中產生的成就感。(雖然很多時候是被指出缺點啦)

寫論文很有趣,讀文獻很有趣,作系統也很有趣,也希望跟人牽扯的實驗也會很有趣,加油!


最後跟大家分享我口試時使用的投影片跟初稿,這是未修改的版本,之後會依據老師的建議修改題目及部份內容,不過主要的大綱跟想法是不變的。先把這部份放上來供大家參考,之後如果有修改版本或其他的發現,再放上來跟大家分享。

  • 數位圖書館讀者閱讀標註知識萃取方法之研究與應用(初稿):docpdf書背的doc(裝訂時使用)
  • 數位圖書館讀者閱讀標註知識萃取方法之研究與應用 計劃書口試簡報pptpdfgoogle doc

希望這些經驗能給大家一些參考,也祝大家研究順利!

2008-12-23-147

(more...)

計劃書口試前夕

布丁布丁吃布丁

計劃書口試前夕

2008-12-21-143

計劃書口試初稿印完了,印了六本。今天一早送給口試委員老師們,天氣很冷,差點撞車。


好,就算是明天要口試的今晚,我還是不覺得我確實地完成了這本研究論文計劃書。就算今天跟老師rehearsal(排演)完明天的口試,老師認為報告得很好,也沒辦法彌補我那種不足的缺憾感。

因為這次研究論文計劃書口試延期跟拖稿拖到我都快不知道該拿什麼臉去見兩位口委老師,另一方面是這次計劃書也趕太兇了,趕到一堆很明顯沒做完的部份,但我卻只能眼睜睜地看著它寄出電子檔、送印,然後作成投影片,報告。

實在是太糟糕了。


太趕的論文,太多的缺憾

事情是這樣的,繼上次報告了一下我文獻探討所準備的投影片之後,我大概隔了一個多禮拜的時間,花在課堂報告跟其他所務上。後來動筆開始寫作,又跟兩位口委老師約時間,直到明天口試,前後大概兩週多。其中,大概有一半時間在前面的研究動機裡面的引用文獻(居然比文獻探討還要多?),然後又花了一點時間把研究方法論文寫作重新複習了一下,然後參考學姊、老師之前的計劃書等幾份文件寫一寫,也就寫完了。

儘管能在期限之前趕出自己盡可能能夠呈現的成果是件好事,但因為趕著寫完而捨棄掉的許多東西,讓我一直覺得耿耿於懷。舉例來說,文獻探討不夠新穎(因為理論性文獻都很早期)、資料探勘技術沒有survey(探討)、研究方法設計不夠嚴謹、標註資料萃取方法其實也不能說是完全的新點子(因為文獻探討不足)。

就算是一堆就算是我自己來看也覺得搖頭的不足之處,我還是要努力地推銷自己的點子給口委老師們,這就是現實吧。


接著來聊一下撰寫論文時的一些心得。

老師,您辛苦了!

image

由於論文撰寫時間緊迫,所以老師校對的時間也很趕。就這麼湊巧地碰上了老師要去國科會報告的時間,於是老師就在這種忙不過來的情況下,一邊修改著我的論文。

記得那時候晚上收到老師修改完成寄回的電話,老師用很疲憊的聲音說道:「老師要先去睡一下,晚一點再幫你改完第二章」實在是讓我震撼蠻大的。並不是說突然發現老師原來不是超人這種事情,而是有種強烈地感到「我給別人帶來了麻煩」這種罪惡感。總之,這些日子讓老師忙碌了不少,我也只能以論文回報老師。附帶一題,在我眼中老師還是跟超人沒什麼兩樣XD

在跟老師校稿的時候,我們是用Word的「校閱」功能來溝通。跟很多老師使用紙本修改方式不同,學生如果收到紙本上畫著一個大叉叉的符號、或是劃掉要求重新修改的記號,那學生還是不知道該怎麼修改。

但利用Word校閱中的「追蹤修訂」功能,我可以清楚地看到老師修改了什麼、想要表達什麼(如上圖紅字的部份)。這讓我可以很具體地仿效老師寫作論文的語法,儘管有些部份老師可能只是括號提示我需要補充、修改而沒有字句刪改,我依然可以參考老師想要表達的方式,修正自己原本想說的話,讓我寫起來更有「學術的感覺」。(這種感覺還真的很抽象!)

「老師再前面引領你的論文寫作」,這句老師在meeting中說過的話,我跟老師的校稿工作裡面感覺特別明顯。而電子檔傳遞速度快,兩天的時間我們就校對了4次版本(基本上第一次校對的時候我已經大體上全部寫完了)。當然,這種效率還是得要感謝老師熱心且盡力的幫忙啊!

總而言之,我很喜歡這種論文校對的方式,也推薦其他人使用。

Word使用的點點滴滴

image

在撰寫研究論文的時候,我相當依賴Word 2007的標題/目錄、標號/目錄(圖1、圖2、表1、表2)、書目管理軟體zotero,特別是引文跟參考文獻格式我都交給了zotero去處理,最後再拿書一一檢查是否符合規則。由於zotero是英文軟體,所以標點符號都是用英文的「.」、「,」,這是需要注意並轉換的地方。

image

另外就是不可以相信Word的標號功能,我遇到好多次換了台電腦儲存檔案之後,標號就全部跑掉的問題。像是老師校稿回來的檔案,往往都有一兩個標號顯示錯誤,還造成老師的誤會,實在是很恐怖的一件事情。不知道沒有讓Word裡面的功能變數全部變成普通文字的方法呢?

撇去這個問題不談,論文圖表需要置於頁面上方或下方的排版,Word可以作到自動對齊的功能,這讓我方便許多。關於這部份的作法我稍後有空再來寫個教學。


論文計劃書口試,緊不緊張?

最近很多人問我這個問題,這似乎也是口試前的傳統。

但老實說,除了因為遲繳、論文寫不好似乎沒什麼臉見口委之外,好像也沒什麼好緊張的。

我清楚地知道自己計劃書的強項、不足,以及該怎麼說明、補強自己的不足之處。我只是在有限的時間之內盡了自己所能,所以沒有完美的結果,也是在我的預料之內。

至於計劃書會不會通過呢?理論上應該是會通過的,如果我能夠成功地推銷論文點子好處的話。

而這段日子每天都是12點睡覺,然後大概4點或5點多起床,然後繼續寫作論文。每天生活都很健康、有精神,嚴謹地寫作論文對我來說非常新鮮、每次都有不同的收穫。這樣看下來,儘管有時候會累了點(到下午就會想睡午覺了XD),這段日子還過得蠻開心的。

image

明天凌晨停電,剛好又可執行「12點睡覺4點起床」的早早睡覺計畫。在這之前,繼續趕報告吧。

(more...)

971知識組織與資訊取用導讀投影片

布丁布丁吃布丁

971知識組織與資訊取用導讀投影片

王老師上課的方式是分配同學閱讀指定文獻,上課時由同學跟其他人分享所學。這學期我閱讀4篇,也做了4份投影片。想說都做,就擺上來看看會不會有人用得到吧?

投影片上傳到Google Doc之後儘管可以提供線上預覽功能,總是會有版面跑掉問題。在此順便玩玩Windows提供的免費空間SkyDrive,最近升級到25G了,不知道效能如何呢。


Chapter 10 Users of information retrieval 
資訊檢索中的使用者

Salton, G. (1983). Introduction to Modern Information Retrieval, McGraw-Hill computer science series. (頁. 448). New York: McGraw-Hill. Chapter 10 Users of Information Retrieval. Page 192-213

Chapter 22 Information retrieval in digital libraries
數位圖書館中的資訊檢索

Salton, G. (1983). Introduction to Modern Information Retrieval, McGraw-Hill computer science series. (p. 448). New York: McGraw-Hill.

Chapter 6   Automatic indexing and file organization
自動索引與檔案結構 倒置索引檔與搜尋演算法

Salton, G. (1983). Introduction to Modern Information Retrieval, McGraw-Hill computer science series. (p. 448). New York: McGraw-Hill.

Chapter 8 Metadata

Chowdhury, G. G. (2007). Organizing Information: From the Shelf to the Web (p. 230). London: Facet.
(more...)

數位典藏開放檢索服務的應用與探討 ——以臺灣百年圖書館史數位圖書館為例

布丁布丁吃布丁

數位典藏開放檢索服務的應用與探討 ——以臺灣百年圖書館史數位圖書館為例

前言

數位典藏系統能藉由網際網路的便利性,讓使用者在家裏即可透過網路欣賞、瀏覽典藏的數位化內容。但是數位典藏系統的內容往往只能限定在該系統本身上進行查詢使用,而在權限控管限制了使用者的取用行為,難以進行更進一步的應用與研究。

對於習慣於Web 2.0環境的使用者來說,他們會傾向於能夠將數位典藏的資源整合進自己習慣的工作環境底下;對於想要應用數位典藏資源進行研究的學者來說,他們會希望可以用統一、標準的規範來取用,並將數位典藏的內容整合到他們研究的系統當中;從圖書館的資源整合角度來看,圖書館會傾向於使用唯一的查詢介面,即能對於包含數位典藏在內的多種系統進行檢索,並取得、展示檢索之後的結果。

為了滿足以上的需求,數位典藏需要一種標準且全面的開放服務,以支援更深層的應用。

Z39.50的發展現況

圖書館自動化系統當中盛行的統一檢索標準是Z39.50。Z39.50是美國圖書館為了實現連結系統計畫(LSP)而發展,用來定義電腦之間的資訊檢索,透過規範查詢格式、簡化檢索過程,實現不同資訊系統之間的資料交流。Z39.50被NISO和ISO先後採納,多於圖書館領域內廣泛採用。

雖然Z39.50標準提供了檢索完整的功能,但是現今網際網路的環境底下卻不常看見Z39.50的應用。主要原因有幾點:一、Z39.50是基於ISO的OSI參考模型的通訊標準,並不是實做在網際網路的TCP/IP架構上,造成無法在網際網路上直接使用Z39.50,大大地降低了資料互通性的效率;二、Z39.50過於複雜,各個系統實做Z39.50的程度參差不齊,反而導致實際操作上有所侷限,難以發揮Z39.50在資料交換上的優點。

為了使Z39.50能夠在目前的網路環境中繼續發展,ZIG(Z39.50 Implementers Group)在2001年的會議上提出了建立ZING(Z39.50 International Next Generation)的。ZING作為新一代的Z39.50,在原有Z39.50的基礎上降低實做的門檻,擴大Z39.50的應用領域,以新的標準整合不同網路資源的檢索。

實際上,ZING是由許多不同目的的實驗性計畫所組成,其中SRW/SRU與CQL是其中有著緊密合作關係的幾個實驗。

SRU的發展與現況

SRU(Search Retrieve via URL)是一個以XML編碼為基礎的網際網路檢索用通訊協定,使用檢索用標準規範CQL(Contextual Query Language, 另有說法是Common Query Language)。SRU由Z39.50發展而成,在TCP/IP的架構上規範了檢索命令與查詢結果的格式。具體來說,SRU將查詢參數包含在URL(Uniform / Universal Resource Locato)當中,即能對支援SRU的伺服器進行查詢,並取得以XML編碼的結果,運作架構如圖1。

image

圖 1 SRU的運作模式

SRU是由美國國會圖書館負責維護管理,2004年2月發佈了SRU 1.1版本,目前已經進展到1.2版本(Library of Congress, 2004)。SRU通常會與SRW(Search Retrieve via Web)同時提到,後者是基於HTTP Request的POST方式,遵循SOAP(Simple Object Access Protocol)通訊協定,根據Web Service規範把查詢請求封裝成SOAP包,並按照SOAP資料交換機制完成資料傳遞。SRU跟SRW查詢結果均採用有著標準規範的XML編碼,以方便查詢者進行資料處理。

SRU的網路服務定義了三種基本的操作方法:

(1) Explain方法:使用者端可用此方法取得SRU網路服務的相關資訊,包括伺服器的資料、資料庫狀態、索引字段列表,metadata標準以及相關參數的預設值等資訊。第三方軟體可以依此自動配置本身系統的檢索設定,以整合提供SRU服務的伺服器。

(2) searchRetrieve方法:這是SRU服務的主要核心,可對提供SRU服務的伺服器中的資料庫進行檢索,並回傳結果集。SRU檢索規範中使用的CQL語法,必需要支援最完整的2級功能,當中必須支援欄位限制、布林邏輯以及回報語法錯誤訊息。回傳的檢索結果集必須是有結構的文字檔案,或著是以DC、MARC 21 XML Schema、MODS(Metadata Object Description Schema)等標準描述的XML檔案。

(3) Scan方法:使用此方法可以回傳網路資料庫索引中包含各個關鍵詞及出現的機率,幫助使用者確定資料庫收錄的主題範圍,進而選擇適當的關鍵詞進行檢索。

在SRU計畫網站上註冊的SRU服務提供者已經有86個(2006),包含了美國國會圖書館(2004)、OCLC、牛津大學、多倫多大學等國際上有影響的圖書館、資訊服務機構。研究SRU新型態服務模式也成為另一種熱門趨勢,其中以歐洲圖書館TEL(The European Library)最具有代表性,它透過SRU通訊協定將歐洲各國國家圖書館相關服務結合起來,並開發一個可以嵌入到使用者工作環境或網頁的迷你檢索工具(Mini Searchbox),讓使用者可以在統一介面裡面檢索歐洲各國國家圖書館的資源,實際應用到Blog上的情況如圖2。

image

圖 2 嵌入到Blog中的歐洲圖書館的迷你檢索工具

在SRU的研究計畫之中開發出相當多支援的軟體,例如INDEX DATA的YAZ Proxy、OCLC Research的Open Source SRW/U Server、CQL-Ruby等等,都是以開放原始碼的方式供人免費取用。其中Open Source SRW/U Server是以跨平台的JAVA開發而成,並且支援MIT與HP開發的機構典藏系統DSpace。

SRU searchRetrieve實作

國立政治大學圖書資訊與檔案學研究所在2007年建置了臺灣百年圖書館史數位圖書館先導計畫,以DSpace機構典藏系統修改而成數位圖書館,典藏臺灣近百年來圖書館與圖書資訊領域的數位化資料。

日前在該系統的進階檢索中,也提供了SRU的searchRetrieve方法的檢索功能。使用者只要在進階檢索欄位裡面設定好檢索條件,下方會自動產生相對應的SRU檢索語法,系統運作介面如圖3,而產生出來的URL如圖4。

image

圖 3 臺灣百年圖書館史數位圖書館先導計畫進階檢索介面的SRU功能

http://tlh.lias.nccu.edu.tw:8080/dspace/sru-search?operation=searchRetrieve&version=1.1&query=ANY%3D%22library%22&startRecord=1&maximumRecords=10

圖 4 SRU檢索指令以URL呈現

圖4的檢索指令當中輸入的參數如下:要求檢索的operation參數、SRU版本的version參數、CQL檢索語法再以URI編碼的query參數、設定檢索起點紀錄的startRecord參數、設定最大回傳筆數的maximumRecord參數。目前該系統的CQL僅支援到欄位檢索與布林邏輯的1級功能,尚未達到解析CQL並回傳錯誤訊息的2級完整功能。

最後的檢索訊息回傳結果以XML編碼,檢索結果的資料以Dublin Core呈現,節錄如圖5。

<searchRetrieveResponse>

<version>1.1</version>

<numberOfRecords>43</numberOfRecords>

<records>

<record>

<recordSchema>info:srw/schema/1/dc-v1.1</recordSchema>

<recordPacking>xml</recordPacking>

<recordData>

<srw_dc:dc>

<title>台北市立圖書館推廣活動彙編93年度</title>

<creator>台北市立圖書館</creator>

<type>出版品</type>

<publisher>台北市立圖書館</publisher>

<date>9 Jun 2008 13:17:47 GMT</date>

<language>中文</language>

<description>

北市圖為提升推廣活動的品質與成效,彙集該館舉辦推廣活動的經驗和紀錄,編印成冊,期使各界瞭解北市圖辦理各項活動的用心、努力與理念,並作為日後各分館設計推廣活動及各公共圖書館館際交流活動辦理經驗的參考。

</description>

<subject>台北市立圖書館</subject>

<subject>出版品</subject>

<subject>推廣活動彙編</subject> <identifier>http://tlh.lias.nccu.edu.tw:8080/dspace/handle/lias/1104</identifier>

</srw_dc:dc>

</recordData>

</record>

<searchRetrieveResponse>

圖 5 臺灣百年圖書館史數位圖書館先導計畫SRU檢索結果

SRU的應用探討

基於臺灣百年圖書館史數位圖書館提供了SRU開放檢索服務,許多利用該系統資源進行應用的研究,便能夠進行更進一步的利用。

以陳佳琪(2008)正在進行的「數位圖書館資源支援問題解決學習模式研究:以台灣百年數位圖書館為例」來說,該研究者以臺灣百年圖書館史數位圖書館典藏的數位資源為教材,評估結構化與非結構化的知識對於學習成效的差異,系統畫面如圖6。由於當時臺灣百年圖書館史數位圖書館尚未開放服務,因此實驗進行中學生只能到該系統進行瀏覽、檢視,研究者也無法對於系統內的典藏物件隨意操作、重整,而更接近自己的研究目的。

image

圖 6 數位圖書館資源支援問題解決學習模式研究的數位學習系統 (陳佳琪,2008)

藉由SRU開放的檢索服務,研究者將可以依照SRU規範設計檢索產生器與檢索結果分析器,依照研究自己的需求對於臺灣百年圖書館史數位圖書館發出請求,然後將回傳的資料進行分析、重新再利用,將整個流程整合到該研究的系統當中。研究者可以確保受驗者的學習過程,提昇實驗控制的成效。整體的架構圖如圖7。

圖 7 藉由SRU開放服務改進研究過程的概念架構

結語

國內的數位典藏重點仍以瀏覽、展示居多,較少考慮到開放服務提供第三方再利用,封閉的系統架構拘束了內容資源的應用發展。SRU提供設計網路開放的一種標準規範參考,具有容易實作、符合主流環境等等的優點。配合各種開放原始碼的工具一起使用,更能夠輕易地開發出支援SRU的網路服務。目前的數位典藏仍沒有完全善用網路環境的優勢,而利用SRU建立開放服務,強調數位典藏作為資源提供中心的地位,將可為數位典藏帶來全新的應用模式。

參考文獻

  1. Chick Markley. CQL-Ruby. http://www.oclc.org/research/software/srw/ (最終更新:2008/4/16)
  2. CQL: the Contextual Query Language: Specifications (SRU: Search/Retrieval via URL, Standards, Library of Congress). http://www.loc.gov/standards/sru/specs/cql.html (2008/6/18)
  3. Eric Lease Morgan (2004) . An Introduction to the Search/Retrieve URL Service (SRU). Ariadne, issue 40, july 2004. http://www.ariadne.ac.uk/issue40/morgan/ (2008/6/22)
  4. Eric Lease Morgan (2006). What is SRW/U? TechEssence.Info. http://techessence.info/node/48 (2008/6/22)
  5. Index Data. YAZ Proxy. http://www.indexdata.dk/support/ (2008/6/18)
  6. Library of Congress. LC Z39.50/SRW/SRU Server Configuration Guidelines. http://lcweb.loc.gov/z3950/lcserver.html (最終更新:2004/8/4)
  7. Library of Congress. MARC 21 XML Schema. http://www.loc.gov/standards/marcxml/ (最終更新:2007/12/14)
  8. Library of Congress. Metadata Object Description Schema: MODS. http://www.loc.gov/standards/mods/ (最終更新:2008/1/24)
  9. MIT and HP. DSpace. http://www.dspace.org (2008/6/18)
  10. OCLC Research. SRW/U [OCLC - Software]. http://www.oclc.org/research/software/srw/ (最終更新:2008/6/14)
  11. Oxford Journals. Help Search. http://www.oxfordjournals.org/help/techinfo/search.html#sru (2008/6/18)
  12. Rob Sanderson (2007). SRW and CQL. University of Liverpool. http://www.loc.gov:8081/standards/sru/pdf/robcql.pdf (2008/6/22)
  13. SRU: Search/Retrieval via URL -- SRU, CQL and ZeeRex (Standards, Library of Congress). http://www.loc.gov/standards/sru/ (2008/6/18)
  14. SRU: Search/Retrieval via URL, Standards, Library of Congress . Registered Participants: SRU Implementors Group Meeting, March 1-2, 2006. http://www.loc.gov/standards/sru/march06-meeting/registered.html (最終更新:2006/3/1)
  15. The European Library - v1.6. http://www.theeuropeanlibrary.org/portal/index.html (2008/6/18)
  16. Theo van Veen, Koninklijke Bibliotheek and Bill Oldroyd (2004). Search and Retrieval in The European Library: A New Approach. British Library. http://www.dlib.org/dlib/february04/vanveen/02vanveen.html (2008/6/22)
  17. University of Toronto. SRU explain method. http://ibridge.library.utoronto.ca:2200/unicorn?operation=explain&version=1.1 (2008/6/18)
  18. Xiaorong Xiang and Eric Lease Morgan (2005). Exploiting "Light-weight" Protocols and Open Source Tools to Implement Digital Library Collections and Services. University of Notre Dame. In D-Lib Magazine, October 2005. http://www.dlib.org/dlib/october05/morgan/10morgan.html (2008/6/22)
  19. 李春旺、王小梅、王昉、張智雄(2007)。基於SRU的集成服務平臺設計與實現。現代圖書情報技術,2007年10期。
  20. 李聰、胡偉(2006)。SRW的發展和現況分析。晉圖學刊,2006年02期
  21. 國立政治大學圖書資訊與檔案學研究所。臺灣百年圖書館史數位圖書館先導計畫。http://tlh.lias.nccu.edu.tw/ (最終更新:2008/6/15)
  22. 陳佳琪(2008)。數位圖書館資源支援問題解決學習模式研究:以台灣百年數位圖書館為例。政治大學圖書資訊與檔案學研究所,2008。(2008/6/18之前仍未結案)
(more...)

yam天空部落-影音分享下載器(IE版)

布丁布丁吃布丁

9 Comments

yam天空部落-影音分享下載器(IE版)

image

大年初一,終於把yam天空部落影音下載器做調整了。

檔案下載(SkyDrive備份 ),請在本機電腦上用IE瀏覽器直接開啟使用吧。以下是原始碼:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>yam天空部落-影音分享下載器</title>
</head>
 
<body>
<script type="text/javascript" src="http://puddingchen.35.googlepages.com/jquery.js"></script> 
<h1 style="margin:0 auto 0 auto;width:400px;"><a href="http://www.yam.com/" target="yamBlog" style="float:left;"><img src="http://blog.yam.com/i/header/logo.gif" title="yam天空部落" border="0" /></a>影音分享<br />
下載器</h1>
<div id="yam-video-download"> 
<style type="text/css"> 
#yam-video-download div.tip {
    font-size: small;
    color:gray;
}
#yam-video-download div.check-flag {
     color:white;
     background-color:#FF0000; 
     font-size: large;
     padding: 2px 5px;
     margin: 2px auto;
     border: 1px solid gray; 
     width: 200px; 
     text-align:center; 
     display:none; 
} 
#yam-video-download #outputID_yvd div.content {
    font-size: 1em;
} 
#yam-video-download #outputID_yvd div.content span.deleter { 
    color:gray; 
    border: 1px solid gray; 
    /*background-color:gray;*/ 
    font-size: smaller; 
    width: 12px; 
    display:block; 
    float:left; 
    text-align:center; 
    padding: 0 2px; 
    /*font-weight:bold;*/ 
    font-family:Arial, Helvetica, sans-serif; 
    cursor:pointer; 
    margin-right: 0.5em; 
} 
#yam-video-download #outputID_yvd div.content a.downloader,
#yam-video-download #outputID_yvd div.content a.win, 
#yam-video-download #outputID_yvd div.content span.title-copy { 
    /*border: 1px solid gray; padding: 2px; font-size: small; background-color:gray; color:white; */
     text-decoration:underline; 
     color:#0099FF; 
     cursor:pointer;
     margin-right: 0.5em; 
} 
#yam-video-download #outputID_yvd div.content a.downloader {
    /*background-color:#0066FF;*/ 
} 
#yam-video-download #outputID_yvd div.content span.title-copy { 
    /* font-size: smaller; color:gray; border:1px solid gray; text-decoration:none; margin: 5px;*/ 
}
#yam-video-download #outputID_yvd div.content span.waiting { 
    margin-right: 0.5em; cursor:wait; 
} 
#yam-video-download #outputID_yvd div.content .mouseover { 
    color:blue !important; 
    text-decoration:none !important; 
} 
</style> 
<div class="tip">※本程式使用JavaScript跨網域取得資料的低安全性設定運作,<strong>Internet Explorer</strong>之外的瀏覽器可能無法使用。</div>
<form onsubmit="jQuery('#startParsing').click();return false;">
<script type="text/javascript"> 
if (!jQuery.browser.msie) 
    jQuery("#yam-video-download div.tip").css("color", "red"); 
</script> 
<label for="inputID_yvd" style="display:block;">
<p>請輸入<strong style="color:#0066CC">yam天空部落-影音分享</strong>的網址</p>
  </label>
 
<button type="button" style="font-size: 20pt;font-weight:bold;margin: 0 0.5em;height: 1.5em;" onclick="yamVideoParsing('inputID_yvd', 'outputID_yvd', 'check-flag')" id="startParsing">分析</button>
  <input id="inputID_yvd" type="text" style="font-size: 20pt;width: 80%;height: 1.5em;" value="http://mymedia.blog.yam.com/m/" onfocus="this.select()"onchange="jQuery(this).nextAll('button:first').click()" />
<p style="margin:0;padding:0;color:gray;">(以<strong>http://mymedia.blog.yam.com/m/</strong>或<strong>http://mymedia.yam.com/m/</strong>開頭)</p>
<div class="check-flag" style="display:none;">網址有錯!請檢查!</div>
<div id="outputID_yvd"></div>
 
<!-- http://mymedia.yam.com/mp3player2.swf?pID=2195446 -->
<!--
<div class="playerMP3" style="display:none;">
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="450" height="120" id="main2Flash" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="" quality="high" bgcolor="#ffffff" width="450" height="120" name="mymovie" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
</div>
-->
<textarea class="playerMP3" style="display:none"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="450" height="120" id="main2Flash" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="" quality="high" bgcolor="#ffffff" width="450" height="120" name="mymovie" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object></textarea>
 
<!-- http://mymedia.yam.com/flvplayer.swf?pID=2416365 -->
<textarea class="playerFLV" style="display:none"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="450" height="368" id="main2Flash" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="" quality="high" bgcolor="#ffffff" width="450" height="368" name="mymovie" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object></textarea>
 
<script type="text/javascript"> 
//jQuery("#yam-video-download button").click(); 
 
//for test
    //jQuery("input#inputID_yvd").val("http://mymedia.yam.com/m/2416365");
    
function yamVideoParsing(inputID, outputID, checkClass) 
{ 
    var url = jQuery("#"+inputID).val(); 
    var checkURL = new Array; 
    checkURL[0] = "http://mymedia.blog.yam.com/m/"; 
    checkURL[1] = "http://mymedia.yam.com/m/"; 
    var checkFlag = false; 
    for (var i = 0 ; i < checkURL.length; i++) { 
        var c = checkURL[i]; 
        if (url.substr(0, c.length) == c) { 
            checkFlag = true; break;
        }
    } 
    if (checkFlag == false) { 
        jQuery("."+checkClass).css("display", "block"); 
        return; 
    } 
    else { 
        jQuery("."+checkClass).css("display", "none"); 
    } 
    //example: http://mymedia.yam.com/m/2425018 
    var mID = url.substring(url.lastIndexOf("/m/")+3,url.length); 
    if (jQuery.trim(mID) == "")
    {
        jQuery("div.check-flag").show();
        return;
    }
    //jQuery("#"+outputID).prepend(mID); 
    if (jQuery("#"+outputID+" div.content[title="+mID+"]").length != 0) 
        return; 
    //建立容器 
    var content = jQuery("<div title='"+mID+"' class='content'></div>"); 
    var deleter = jQuery("<span class='deleter'>×</span>") 
        .click(function() { 
            jQuery(this).parents("div.content:first").remove();
         })
        .hover(function() { 
            this.style.backgroundColor = "gray"; 
            this.style.color = "white"; 
            },
            function() { 
            this.style.backgroundColor = "white"; 
            this.style.color = "gray"; 
            }); 
    var downloader = jQuery("<a class='downloader'>下載</a>") 
        .hover(function() { 
            jQuery(this).addClass("mouseover"); 
        },
        function() { 
            jQuery(this).removeClass("mouseover"); 
        })
        .hide(); 
    var win = jQuery("<a href='"+url+"' target='_blank' class='win'>開啟網頁</a>");
    
    /*var preview = jQuery("div.playerMP3").clone()
        .addClass("preview")
        .show();
        preview.children("param[name=movie]").val("http://mymedia.yam.com/mp3player2.swf?pID=" + mID);
        preview.children("embed").attr("src","http://mymedia.yam.com/mp3player2.swf?pID=" + mID);
    */
    /*
    var previewURL = "http://mymedia.yam.com/mp3player2.swf?pID=" + mID;
    var previewPlayer = jQuery("textarea.playerMP3").val();
        
        //previewPlayer.replace('<param name="movie" value="" />', '<param name="movie" value="'+previewURL+'" />');
        //previewPlayer.replace('<embed src="" quality="high"', '<embed src="'+previewURL+'" quality="high"');
        previewPlayer = strReplace(previewPlayer, '<param name="movie" value="" />', '<param name="movie" value="'+previewURL+'" />');
        previewPlayer = strReplace(previewPlayer, '<embed src="" quality="high"', '<embed src="'+previewURL+'" quality="high"');
        alert(previewPlayer);
    var preview = jQuery("<div class='preview'></div>")
        .html(previewPlayer);
        //preview.children("param[name=movie]").attr("value", previewURL);
        //preview.children("embed").attr("src", previewURL);
    */    
    var preview = jQuery("<div class='preview'></div>");
        
    var titleCopy = jQuery("<span class='title-copy'>複製標題</span>") 
        .click(function () { 
            var t = jQuery(this).nextAll("span.title").html(); 
            window.clipboardData.setData('Text', t); }).hide(); 
            var title = jQuery("<span class='title'>test</span>").hide(); 
            var waiting = jQuery("<span class='waiting'>"+mID+"分析中…<img src='http://puddingchen.35.googlepages.com/ajax-loader.gif' /></span>"); 
            content.append(deleter) 
                .append(waiting) 
                .append(win) 
                .append(downloader) 
                .append(titleCopy) 
                .append(title)
                .append(preview); 
            jQuery("#"+outputID).prepend(content); 
            
            //get title 
            jQuery.get(url, function(data) { 
                //var t = jQuery(data); 
                //.find("h1.heading:first").length; 
                //alert(t.find("div").length);
                var header = '<h1 class="heading">'; 
                var footer = '</h1>';
                var t = data.substring(data.indexOf(header)+header.length, data.indexOf(footer));
                
                if (jQuery.trim(t) == "<html>\n<head>\n<titl")
                {
                    errorFlag();
                    content.hide();
                    return;
                }
                
                jQuery("#"+outputID+" div[title="+mID+"]:first span.title:first").html(t) 
                    .show(); 
                jQuery("#"+outputID+" div[title="+mID+"]:first span.title-copy:first").show(); 
                if (jQuery("#"+outputID+" div[title="+mID+"]:first :hidden").length == 0) 
                {
                    jQuery("#"+outputID+" div[title="+mID+"]:first span.waiting")
                        .hide();
                }
                
             }); 
             
             /*
             //get preview
             jQuery.get(url, function(data) { 
                 var header = '<object classid="'; 
                var footer = '</object>';
                var t = data.substring(data.indexOf(header)+header.length, data.indexOf(footer));
                    t = header + t + footer;
                jQuery("#"+outputID+" div[title="+mID+"]:first div.preview:first").html(t).show();
             });
             */
             
             //get link 
             var FileURL = "http://mymedia.yam.com/api/a/?pID=" + mID; 
             //example: http://mymedia.yam.com/api/a/?pID=2425018 
             jQuery.get(FileURL, function(data) { 
                 //var t = jQuery(data); 
                //.find("h1.heading:first").length; 
                //alert(t.find("div").length); 
                var isFlv = false;
                if (data.indexOf('mp3file=') != -1)
                {
                    var header = 'mp3file='; 
                    var footer = '&totaltime='; 
                    
                    var previewURL = "http://mymedia.yam.com/mp3player2.swf?pID=" + mID;
                    var previewPlayer = jQuery("textarea.playerMP3").val();
                        previewPlayer = strReplace(previewPlayer, '<param name="movie" value="" />', '<param name="movie" value="'+previewURL+'" />');
                        previewPlayer = strReplace(previewPlayer, '<embed src="" quality="high"', '<embed src="'+previewURL+'" quality="high"');
                }
                else if (data.indexOf('&furl=') != -1)
                {
                    isFlv = true;
                    var header = '&furl='; 
                    var footer = '&hidecode=';
                    
                    var previewURL = "http://mymedia.yam.com/flvplayer.swf?pID=" + mID;
                    var previewPlayer = jQuery("textarea.playerMP3").val();
                        previewPlayer = strReplace(previewPlayer, '<param name="movie" value="" />', '<param name="movie" value="'+previewURL+'" />');
                        previewPlayer = strReplace(previewPlayer, '<embed src="" quality="high"', '<embed src="'+previewURL+'" quality="high"');
                }
                
                var t = data.substring(data.indexOf(header)+header.length, data.indexOf(footer)); 
                
                
                jQuery("#"+outputID+" div[title="+mID+"]:first a.downloader:first")
                    .attr("href", t) 
                    .show(); 
                jQuery("#"+outputID+" div[title="+mID+"]:first div.preview:first").html(previewPlayer);
                if (isFlv == true)
                    jQuery("#"+outputID+" div[title="+mID+"]:first div.preview:first object").height("368px");
                if (jQuery("#"+outputID+" div[title="+mID+"]:first :hidden").length == 0) 
                    jQuery("#"+outputID+" div[title="+mID+"]:first span.waiting")
                        .hide();
                 }); 
            } 
            
    function errorFlag()
    {
        jQuery("div.check-flag").show();
    }
    
    function strReplace(str, oldText, newText)
    {
        var temp = str.split(oldText);
        if (temp.length > 1)
        {
            str = temp[0] + newText + temp[1];
        }
        return str;
    }
    </script>    
</div>
</form>
<hr style="margin-top: 1em;" />
<p style="text-align:center;">
版本:<strong style="color:Red">20090126 大年初一</strong> | 程式寫作:<a href="mailto:puddingchen.35@gmail.com">布丁布丁吃布丁</a> | 出處:<a href="http://pulipuli.blogspot.com/2008/11/yam-ie.html">布丁布丁吃?</a> | 資料來源:<a href="http://www.yam.com/">yam天空部落</a><br />
<span style="font-size:small;">本程式僅是利用yam天空部落的程式碼做轉換、分析的動作,並不能確認資料本身是否符合智慧財產權。使用本程式下載任何資料,並不代表本程式立場。</span>
</p>
</body>
</html>


我只是想試試看jQuery的AJAX功能,就改進了以前的yam天空影音分享下載器,取代原本要用PHP去擷取網頁內容的困擾。

壞消息是只有IE在本機端以檔案的方式開啟,才能使用客戶端跨網域取得網頁內容的功能。好消息是這功能其實是比較不安全,不能方便地使用也好。原本我是打算直接寫在Blog裡面,結果發現只要是非本機的情況下,就不能使用跨網域取得網頁內容,這也算是一個收穫吧。

順便測試一下Windows Live Writer插入程式碼的外掛效果如何。事實證明,Insert Code for Windows Live Writer挺不賴的,感謝瓶水相逢.NetInsert Code for Windows Live Writer 1.0.5 Beta - 加入捲軸功能 (20080427 修正),但如果加上一個只有y軸的捲軸就更完美了。

(more...)

計畫書準備期間,每週Meeting報告投影片

布丁布丁吃布丁

計畫書準備期間,每週Meeting報告投影片

image

回頭看看,我大概是10月中才開始正式地準備計畫書,到目前大概一個月多了,到昨天meeting時陳老師才覺得可以開始撰寫計畫書。雖然老師都這樣說了,我還是覺得少了點東西,遲遲一直無法下筆(壞毛病)。想說乾脆來整理一下之前為計畫書而製作的投影片,不知道是否會有些較為具體的想法出現。

一開始,我的論文題目是「數位圖書館閱讀標註知識萃取方法之研究」。到最後不僅變成「讀者閱讀標註知識萃取方法之研究與應用」,而內容也跟圖書館脫節了。究竟到底是怎麼演變的,以下就回顧看看吧。

2008年11月6日 研究方向確認與計畫書撰寫

當時我打算直接一次就把計畫書寫完,於是閱讀了標註應用於數位圖書館的相關文獻,規劃了一套數位圖書館上應該有的標註功能,結合協同過濾的方法,將適合讀者的標註推薦給讀者,以節省讀者自行標註的時間。

老師跟學長的評語是「這樣讀者收到的標註,都是差不多興趣的標註,無法開闊眼界,這樣子不叫做『知識萃取』。」

好個知識萃取!但這種概念太過抽象,當晚跟老師討論到半夜12點才離開(我們都是晚上6點開始meeting的),這之間我們交換了許多可行及不可行的想法。

討論的結論是,我需要閱讀更多文獻,來看看大家認為標註中的「知識」到底是什麼。

2008年11月13日 數位圖書館社會指引式段落推薦系統究

在找尋文獻的時候,我發現有一些人在研究不同人的標註與標註之間重疊的情況,他們稱之為「標註共識(Annotation consensus)」,可用於指出文獻重點、萃取文獻重要知識。而這種大家意見相同、做同樣的事情的情形,有種專有名詞統稱為「社會指引支援(Social Navigation Support,簡稱SNS)」。而SNS常見應用於推薦之用,我也找了幾篇相關文獻來看看大家是怎麼用SNS的。

最後的結論,就是將標註共識發展成段落推薦系統,並以社會指引支援的研究方法,來幫助數位圖書館提供資訊過濾、資源推薦的功能。

陳老師的評語是:「要先有教學成效,再來評估使用行為。」而否定了這個提案。我與老師討論了一下教學與圖書館典藏傳播概念之矛盾之處,不過老師仍執意往教學成效發展。

於是我的論文從一開始資工的自然語言分析,逐漸橫跨到了教育學的領域。

2008年11月19日 研究方法論文報告進度回顧

當天我們上的是研究方法課程,在楊老師的課表當中,我們這幾個碩二的學生負責報告自己的研究內容,以供學弟妹們參考。計畫書連一個字都還沒開始寫的我,還是把對於標註的了解、知識,以及跟陳老師討論的狀況,做了一個簡單的分享。儘管最後因為時間不足而沒有報告,不過這一個投影片還是簡單扼要地把之前的想法整理了一下。

2008年11月20日 由學習理論看標註學習

當時我先找尋了社會指引支援相關文獻,讀了讀發現大家著眼點不同,難以聚焦。接著想到之前提案中,有提到把大家的知識當同儕比較,於是又看了一下同儕比較教學法,但細節牽涉太多人與人的互動,系統難以實作。於是我又往更上層看下去,最後來看看認知心理學裡面的「後設認知」,以此找到了「閱讀策略」這個概念。

如果說,標註能夠保存一個人的閱讀策略,那麼我把大家相同的閱讀策略取出來,作為教導其他人的依據,也可以成為一個有趣的教學系統。

大概是因為談到教學成效的關係,陳老師很中意這種想法。只是詳細的閱讀策略,有待更多的文獻探討。使用標註來教學的文獻這麼多,應該可以讓我找到幾篇經典的吧?

喔、對了,做完這份投影片的感想是,這版型有夠難用,不要用!連擺到Google文件上版型都會跑掉,實在是……

2008年11月27日 研究進度之標註應用學習策略

這份是昨天的報告。我找了一些使用標註策略來進行教學的文獻,其中一篇「教科書標註:一種對大學生有效果且省時的閱讀策略(Textbook Annotation: An Effective and Efficient Study Strategy for College Students)」談到了較為具體的標註策略,以及評鑑用的查核表(checklist)。只是當時作者Simpson跟Nist是用口頭教學,評鑑的方式是由老師說明、學生配對彼此評鑑進行,如果能把這個流程以系統化方式進行,把大家的標註萃取成為評鑑的依據,那麼理論上也能夠提昇學習的成效——當然,我知道Simpson他們的研究重點中,「教師的說明跟引導」其實是決定標註策略成功的關鍵,單靠一個查核表,實際成效有限。而要怎麼把大家的標註轉換成評鑑的依據,我也只有想到幾個簡單的概念,實在是稱不上令人拍案叫絕的資料抽取方法(陳老師很愛這種創新的東西)。

儘管有以上缺憾,陳老師也覺得可以開始進行撰寫計畫書了。最後一張投影片,我把這個教學過程跟數位圖書館的目的做了一些比較,強調了矛盾點與隱憂,老師意外地接受了不適合用於數位圖書館的事實,於是我的論文題目也改成了「讀者閱讀標註知識萃取方法之研究與應用」,變成一個教學策略研究,而跟數位圖書館脫勾。


方法雖然有了,但實際上要如何撰寫,反而讓我感到困惑。不從熟悉的圖書館開始,我要怎麼去陳述我的研究動機、研究目的呢?

我究竟是為什麼要寫這篇論文呢?

我到底是不是圖書館學領域的人呢?

算了,就當作我萬般全能,從圖書館、資料探勘到剛剛接觸不久的教育學領域都可以通吃,就這樣吧。

(more...)