用Weka找出最特別的文本:局部異數因素之異常偵測 / Mining the Special Text with Weka: Local Outlier Factors (LOF) for Anomaly Detection
我們要如何在大量文本當中,快速找出談論內容與眾不同、別有見地的文本呢?字數長短可能會被灌水,從字詞內容著手,也許是個合理的開始。本篇將應用資料探勘中異常偵測(anomaly detection)常見的演算法:局部異數因素(Local Outlier Factor, LOF),在Weka中找出用詞最為與眾不同的文本。
單變項的離群值偵測 / Detection of outliers in univariate
(圖片來源:用R畫箱型圖)
統計上的異常值偵測大多是處理單一變項。處理方法有兩種:
- 無母數法:以四分位距來決定籬笆,超越籬笆的數值則為離群值。詳細作法請參考用R畫箱型圖這篇。
- 有母數法:基於資料為常態分佈的假設,將落於樣本平均數正負三個樣本標準差外的數值視為離群值。具體做法是計算標準分數(z-score),大於3以上就是出現機率為0.13%以下的離群值。
關於這兩種作法,可以參考離群值的檢測的這篇。然而上述這兩種方法只能適用於單一維度的變項上,不能直接套用在多維度的資料中。而多維度資料的處理,則是資料探勘擅長的領域。
多變項的異常偵測:局部異數因素 / Anomal detection in multivariate: Local Outlier Factor
在多維度的資料中,我們得要先將多維變項降維,使之成為資料案例(instance)與案例之間的距離。在文本探勘的概念中,也就是「A文件跟B文件用詞的相似程度」,如果「A文件」與「B文件」所使用的詞彙大量重複,則兩文件之間的距離很近;反之,若「A文件」和「B文件」的用詞都不相同,則兩文件之間的距離很遠。
在計算出各個案例之間的距離之後,我們就可以來計算每一份案例的異常程度,也就是局部異數因素(Local Outlier Factor),以下將之簡稱為LOF。LOF是Markus M. Breunig、Hans-Peter Kriegel、Raymond T. Ng與Jörg Sander 在2000年提出的演算法,它是用密度的概念來判斷案例的異常程度。
我們以上圖來簡單說明LOF的概念。在這個例子中的四個案例裡,右邊三個案例彼此之間距離都很近,而左邊的案例距離它們就遠了許多。對任一藍色案例來說,它們到紅色案例的距離,比到其他藍色案例的距離都還要遠。則紅色案例則被這些藍色案例當作是「異數」(outliter)。而被作為異數的程度則是以一個數值來表示,也就是LOF。
每筆案例所計算出的LOF數值,在不同範圍裡有不同意義:
- 如果LOF接近1,表示該案例週遭的密度跟它的鄰居們週遭的密度接近。
- 如果LOF小於1,則表示該案例週遭的密度比它鄰居們週遭的密度還要高,也就是內圍值(inlier)。
- 如果LOF大於1,則表示該案例週遭的密度比它鄰居們週遭的密度還要低,也就是離群值(outlier)。
關於詳細的計算方式可以看看維基百科:Local outlier factor。在計算上是有點複雜,不過還好Weka的套件中有提供局部異數因素的演算法,套件名為「localOutlierFactor」。
開放原始碼的資料探勘工具:Weka / Weka: an open source data mining tool
(圖片來源:Weka鳥的動圖)
Weka是紐西蘭懷卡托大學機器學習實驗室(Machine Learning Group at the University of Waikato)發展的資料探勘工具,以GUN授權發佈,是資料探勘領域中重要的自由軟體。雖然跟現在的Python、R相比,Weka的演算法只有少數經典的資料探勘演算法,其中一個經典演算法就是本篇要講的局部異數因素LOF。
安裝套件:局部異數因素 / Install package: localOutlierFactor
Weka預設的演算法中並沒有安裝本文所需要的LOF,不過你可以透過Weka提供的「Package Manager」(套件管理器)來安裝額外的套件。LOF的名稱為「localOutlierFactor」,請參考「Weka下載與套件安裝教學」這篇的作法來安裝套件吧。
此外,使用Weka做中文的文本探勘,還需要注意以下兩點:
這些以前都介紹過了,這次就不再贅述囉。讓我們進入操作吧!
操作步驟 / Tutorial outline
整體來說本此操作有四大步驟:
- 文件資料集:下載練習用的資料來源。
- 資料前處理之斷詞:使用線上中文斷詞工具Jieba-JS來進行斷詞處理。
- Weka的LOF操作:使用Weka計算LOF分數。
- 解讀不同LOF分數的結果:將LOF分數放回原始資料集中,觀察LOF最高和最低的文件有何不同。
STEP 1. 文件資料集 / Dataset: Abstracts of medical papers collection
這份資料集是我從臺灣博碩士論文加值系統中取出30篇醫學相關論文的摘要彙集而成。這些摘要內容少則三百多字、多則一千七百多字。我們能從裡面找出跟別的論文最不同、最特別的摘要嗎?以下就讓我們用這份資料集作為例子,看看如何使用Weka的LOF吧。
1-1. 建立副本 / Make a copy
需要重新截圖,把token欄位刪掉
由於text-mining-lof這份資料是作為示範使用,我沒有開放編輯權限。如果你想要練習的話,直接點選上面「建立副本」的連結,Google雲端硬碟會直接將該檔案複製到你的雲端硬碟中,請用你複製的副本來練習吧。
STEP 2. 資料前處理之斷詞 / Preprocess: Tokenization
(圖片來源:非結構化資料分析:文本分類)
Weka在計算文件與文件的相似距離上,使用的是「字詞」為單位。如果兩份文件使用了相同的「字詞」,則兩份文件的距離比較近;反之,如果兩份文件使用的「字詞」大多都不相同,則兩份文件的距離比較遠。
我們必須要先把一連長串的中文摘要進行斷詞處理,在詞與詞之間加入空格,使得Weka能夠認得那些中文字才算是一個字詞。你可以手動加入空格來進行斷詞處理,也可以使用我開發的線上中文斷詞工具Jieba-JS,請結巴演算法自動進行斷詞。
2-1. 中文線上斷詞工具:Jieba-JS / Online Chinese Tokenization Tool: Jieba-JS
- 開啟新視窗: Jieba-JS
- 開啟彈跳視窗: Jieba-JS
- Jieba-JS的介紹:線上中文斷詞工具:Jieba-JS
- GitHub專案:jieba-js
接下來就讓我們來看看要怎麼用Jieba-JS做斷詞處理。
2-2. 斷詞處理 / Tokenization process
首先,我們要複製「abstract」(摘要)這一欄。請先選取「abstract」30篇摘要的文字,然後按「Ctrl+C」複製。
在Jieba-JS當中,將剛剛複製的文字貼到「Raw Text」裡面。
移除Word Remap、User Dictionary,然後在Stop Words下面按下「example」,載入常用的停用字。
- Word Remap表示對應詞典,例如我們要將「台灣」對應成「臺灣」,以確保Weka會將這兩個詞視為相同的詞彙。
- User Dictionary表示使用者詞典,例如我們不想要讓「台」跟「灣」被斷開成兩個字,希望確保「台灣」是一個詞。則我們可以設定「台灣,9999999,n」。
- Stop Words表示停用字詞典,Jieba-JS會移除停用字詞典裡面出現的字詞,確保斷詞處理後不會出現我們不想要看到的文字。
關於這三個選項的設定,請參考我在發掘文件中的主題:Weka分群應用於文本探勘中對於設定斷詞規則的說明。
設定完成後就按下「開始斷詞」。
右上角的「Processed Text」就會出現斷詞結果。我們可以按右上角的複製按鈕來複製斷詞結果。
我們回到剛剛的試算表裡面,按下面的名為「tokenization」的另一個工作表(sheet)來保存斷詞結果。
貼上斷詞結果。
接著我們要把這個工作表下載成CSV格式。請按「File」 > 「Download as」 > 「Comma-separated values (.csv, current sheet)」。
如果你不想做上面的步驟就看到這裡的話,你也可以下載我準備好的檔案:
記好你存放檔案的位置,待會我們就要用Weka來開啟它囉。
STEP 3. Weka的LOF操作 / Calculate LOF in Weka
開啓Weka之後,一開始會出現上圖的選單。我們要選擇其中的「Explorer」,開啓初學者專用的探索器。
3-1. 讀取CSV檔案 / Load CSV
開啟Weka Explorer之後,先按下左上角的「Open file...」(開啟檔案)按鈕。
因為我們要開啟CSV檔案,請在Files of Type (檔案類型)要選擇「CSV data files (*.csv)」(CSV資料檔案(*.csv))。
這樣就可以看到我們剛剛儲存的CSV檔案。選擇它並按下「Open」按鈕。
CSV檔案順利讀取。Weka會將CSV檔案每一個直欄視為一種屬性(attribute),而每個直欄的第一個橫列就是屬性的名稱。因為我們的工作表只有一個直欄,而直欄的第一個橫列就名為「tokenization」,所以這邊Weka載入CSV之後,就只有一個屬性,名為「tokenization」。
好的,讓我們進入下一步。
3-2. 類別轉換成字串 / Nominal to string
剛載入的CSV檔案會把文字資料的欄位視為「Nominal」(類別,或是名義變項)。我們需要把它轉換成「String」(字串)資料類型之後,才能進行後續的文本探勘。我們可以用Filter (過濾器)將「Nominal」轉換成「String」。
點選「Filter」(過濾器)底下的「Choose」(選擇)按鈕。
依序進入「weka」 >「filters」 > 「unsupervised」 > 「attribute」 > 「NominalToString」,這個過濾器就是將類別轉換成字串的工具。
然後按下「Apply」按鈕。
tokenization屬性的資料類型就成為「String」(字串)了。
3-3. 從字串建立文字向量模型 / String to word vector
再來我們要將字串轉換成「文字向量模型」(word vector model)中的「詞袋模型」(bag-of-words model)。此作法依然是用Filter (過濾器),不過是用StringToWordVector工具。
請按下「Filter」(過濾器)底下的「Choose」(選擇),然後依序選擇「weka」 >「filters」 > 「unsupervised」 > 「attribute」 > 「StringToWordVector」,這個過濾器就是將字串轉換成文字向量模型的工具。
接著我們還要設定「StringToWordVector」過濾器工具。請在粗體字的「StringToWordVector」上面按滑鼠左鍵。
這邊我們要設定的是最下面的「wordToKeep」選項,請將之設為「1000000」,讓Weka保留足夠多的字詞吧。關於StringToWordVector的設定,請參考我在發掘文件中的主題:Weka分群應用於文本探勘中對於不同的文字向量模型:詞袋、詞頻到TF-IDF的說明。
設定完成後就按下「OK」。
按下「Apply」按鈕,套用篩選器的設定。
我們可以看到屬性數量從原本只有一個tokenization,變成了2013個屬性。每個屬性代表著每份文件是否有包含屬性名稱的字詞。以「高風險」這個屬性名稱來說,如果該論文摘要有包含「高風險」這個詞,則在「高風險」屬性中的值就是「1」。如果該論文摘要沒有包含「高風險」這個詞,則在「高風險」屬性中的值就是「0」。
將字串轉換成文字向量模型之後,我們就可以來計算LOF了。
3-4. 計算局部異數因素 / Calculate Local Outlier Factor
在Weka中,LOF的計算也是透過Filter篩選器進行。
請按下「Filter」(過濾器)底下的「Choose」(選擇),然後依序選擇「weka」 >「filters」 > 「unsupervised」 > 「attribute」 > 「LOF」,這個過濾器就是計算局部異數因素LOF的工具。
如果你沒有在列表中發現LOF,那可能是你還沒安裝LOF套件。請參考前面的說明來安裝「localOutlierFactor」套件。
按下「Apply」套用LOF過濾器。
計算LOF需要花費一些時間,請稍候片刻。計算完成後,Weka會將LOF的計算結果記錄在最後一個屬性「LOF」中。我們可以看到該屬性最小值(Minimum)是「1」,最大值(Maximum)是「1.245」。
3-5. 取得LOF計算結果 / Save LOF result
再來我們要取得LOF的結果。但是在這之前,我們得要刪除LOF之外的其他欄位。
按下「Attributes」底下的「All」,此時所有屬性會被勾選起來。
將「LOF」屬性取消打勾。
按下「Remove」按鈕。
最後就會只剩下「LOF」一個欄位。
按右上角的「Save...」儲存檔案。
將「File of Type」(檔案類型)設為「CSV files: comma separated files (*.csv)」(CSV資料檔案(*.csv))。移動到你要儲存的位置,設定好「File Name」(檔案名稱),就可以按下「Save」儲存。
讓我們用試算表工具來開啟這個CSV檔案。個人推薦使用LibreOffice Calc。
開啟CSV,裡面就只有一個直欄,就是LOF。
讓我們選取並複製LOF欄位的資料。
回到Google試算表,切回「data」工作表,把LOF的結果貼在LOF的欄位。這樣我們就可以知道每個摘要對應的LOF分數。
再來我們要來將LOF由大到小排序。先把輸入位置放在LOF的欄位上,然後按下「Data」(資料)中的「Sort sheet by column C, Z → A」(依C欄排序工作表(Z → A))。
我們可以看到摘要已經按照LOF數值,由大到小排序了。
STEP 4. 分析結果:高LOF和低LOW的摘要之間的差異 / Result: The difference between abstracts with high LOF and low LOF
- 摘要的LOF分析結果:Google試算表、 CSV、 OpenDocument Spreadsheet、 Microsoft Excel
如果你直接跳到這個步驟,想要看看結果如何,你可以下載上面的摘要LO分析算結果連結來看看。
在分析結果中,每筆摘要都有一個局部異數因素(Local Outlier Factor, LOF)。LOF在不同範圍裡有不同意義:
- 如果LOF接近1,表示該摘要週遭的密度跟它的鄰居們週遭的密度接近。也就是該摘要所使用的字詞,類似於其他的摘要。
- 如果LOF小於1,則表示該摘要週遭的密度比它鄰居們週遭的密度還要高,也就是內圍值(inlier)。
- 如果LOF大於1,則表示該摘要的密度比它鄰居們週遭的密度還要低,也就是離群值(outlier)。換句話說,該摘要所使用的字詞,跟其他摘要使用的字詞有很大的不同。這就是我們要找的特別文本。
在本此分析中,LOF最高為1.245387,最低為1.000391。接下來就讓我們拿出LOF最高的前兩名摘要,以及LOF最低的前兩名摘要,看看他們之間的異同吧。
4-1. LOW最高的兩份摘要 / The abstracts with highest and second highest LOF
LOF第一高的摘要為1.245387分,這表示它使用的字詞明顯與其他摘要不同。該摘要共有1792個字,讓我們來看看該摘要寫了什麼:
本研究旨在以經驗學習理論的應用,探討台灣與香港長期照顧機構管理者增能歷程,以及比較兩地管理者增能歷程之異同,進而建構台港兩地機構管理者增能模式。茲就具體研究目的分別為:一、比較台港兩地管理者擔任管理職位的背景與動機;二、比較台港兩地管理者目前工作內容及其所需具備之核心能力;三、比較台港兩地管理者初任管理職、當前主要困境與未來困境,以及因應困境的策略、增能方式及增能結果;四、建構台港兩地長期照顧機構管理者增能模式;五、根據研究結論,提出未來對台港兩地長期照顧機構與政府培育人才,以及未來相關研究之參考。 本研究採用質性研究法,並以半結構式訪談法蒐集資料,進而採用比較研究法,以進行歸納和比較台灣與香港長期照顧機構管理者增能歷程之異同。本研究共訪談16 間台港兩地長期照顧機構管理者。其中,台灣機構管理者共十位,有五間是經政府評鑑為優等的機構,五間是甲等機構,包含四位男性、六位女性,其在目前機構的服務年資為2~18年,平均年資7.1 年。香港機構管理者共六位,有三間是香港老年學會公告獲選為香港安老院舍優質服務全面參與獎機構,三間是持有有效評審認證機構。包含一位男性、五位女性,其在目前機構的服務年資為2~24 年,平均年資9.5 年。本研究結果主要歸納為十項結論,分述如下:一、台港兩地管理者擔任管理者的動機主要受過去學習、職場經驗及個人信念與家庭等三大因素影響,且這些因素彼此之間可能相互影響,其中個因素中各以相似與相異的原因。二、台港兩地管理者在機構扮演角色與工作內容大致相同,其中較為不同之處在於台灣管理者重視人才培育和職涯發展,以及機構內外資源的連結;香港管理者注重市場開發與品牌建立。三、台港兩地管理者在核心職能中,長期照顧職能皆相同,但在高齡者健康老化共通職能、經營管理職能與共同態度方面有所不同,進而本研究依據兩地管理者核心職能結果建立兩地管理者核心職能模型。(一)兩地管理者核心職能在長期照顧專業職能方面的內涵相同,但在高齡者健康老化共通職能、經營管理職能與共同態度方面有些微差異。(二)兩地管理者核心職能模型是由七大共同態度、三大高齡者健康老化共通職能、四大長期照顧專業職能與八大經營管理職能所構成的M 型金字塔。四、台港兩地管理者過去初任管理職在遭遇相似困境中,所採取因應策略皆是透過學習以達個人增能;另兩地管理者在過去所遭遇困境有所差異,因而採取不同因應策略。(一)個人能力不足與工作中不適應為兩地管理者過去初任管理職的共同困境,且所採取因應策略與增能方式會是透過學習,以個人增能為優先。(二)兩地管理者在初任管理職所遭遇的困境有所差異,台灣管理者遭遇人事管理、家屬投訴、機構營運及建立制度與模式等困難;香港管理者則是遭遇第一次參與安老院舍評鑑的困難,因而採取不同的因應策略以克服困難。五、人事管理、機構品質及機構營運與發展為台港兩地管理者現在共同困境,其中在各困境中兩地各有相似與相異之處,但兩地管理者所採取的因應策略則以促進機構整體發展與提升服務品質為主要目標。六、政策變遷與發展被兩地管理者視為機構的未來困境與挑戰,台港兩地管理者對新政策推動所提出因應策略差異之處在於社區連結與否。七、台港兩地管理者過去增能方式皆以正規教育、非正規教育與非正式學習為主,藉以提升個人能力;現在增能方式以非正規教育與非正式學習為主,其中較特別之處是台灣管理者還有參與正規教育,藉以達到個人與機構增能。八、增能結果皆對於台港兩地管理者個人與機構增能產生正向影響,然而台灣管理者比香港管理者重視與社區的連結與社區增能。九、從過去到現在增能中,增能結果也可能影響台港兩地管理者持續擔任管理者與工作動力,甚至會影響個人未來持續學習與增能的方向。(一)在增能歷程中,有團隊支持與認同、住民的改變,以及從工作中找到成就感與自我價值是支持兩地管理者持續工作動力;其中較特別的是台灣管理者還將機構永續發展與傳承作為個人使命與持續工作動力。(二)機構管理與老人照顧相關課程是兩地管理者未來增能的目標,較不同的是台灣管理者想學習團隊增能與人才培育、老人政策與國外長照經驗,及活動帶領課程;香港管理者則是想學習心靈成長類的課程。十、台港兩地管理者增能模式是由六項要素所構成,且每個要素之間會彼此產生連結,並以經驗學習貫穿管理者增能歷程,同時隨著個人職務升遷或改變形成增能模式與循環歷程。
LOF第二高的摘要為1.214507,共有1415個字,摘要內容如下:
隨著醫療科技的進步、全球老化及慢性病人口增加,醫護人員面臨生命末期照護的機會升高(蔡、李,2002;胡、張,2015),非安寧單位醫護人員應具備臨終照護、協助病情調適、後續照護及出院規劃等能力,以提供病人及其家人適切之生理、心理、社會與靈性層面之照護。而各單位病人所遇之生命末期照護情境不同,各單位護理師對末期照護的認知、態度亦有所差異,包含症狀控制的概念、心理社會評估、相關倫理思辨等層面,目前於護理養成教育、醫院在職教育在生命末期照護之課程有限,專業學會所開設之課程完善但並非臨床護理人員皆能彈性排假,難使照護不同病人族群之護理師有系統、有效率的學習與其照護病人相關之末期照護技能。盼能以此研究了解照護不同病人族群之護理師於生命末期的教育需求,使不同單位的護理人員能依自己的需求,有效率的學習末期照護課程,提升整體末期照護品質。本研究以橫斷性研究方法,採立意取樣,以臺北某醫學中心內科系病房及腫瘤科病房護理人員為研究對象,共收案380位護理人員。研究工具為自擬半結構式問卷,內容包含護理人員基本資料、工作經驗、生命末期照護學習經驗,以及常見生命末期照護情境之遭遇頻率、執行困難程度、教育需求程度的相關資料,共四部分。研究發現護理人員於生命末期照護情境之教育需求平均得分為3.68 ± 0.56(Lickert scale 5分),介於「普通」至「有需求」之間,以「轉介評估與說明安寧緩和照護」最高(平均得分3.75 ± 0.65),得分高至低依序為「生理層面照護」(平均得分3.74± 0.67)及「心理、社會及靈性層面照護」(平均得分3.74± 0.61)、「倫理、法律、自我覺察」(平均得分3.61± 0.67)、「團隊合作與溝通」(平均得分3.42±0.71);依得分最高之題項排序前5者,為「評估及協助家屬的病情調適情形」、「評估及協助末期病人的病情調適情形」、「評估及協助家屬的情緒困擾」、「評估並處理末期病人的緊急狀況」、「評估及協助末期病人的情緒困擾」。而整體生命末期照護情境之「教育需求程度」與整體之「執行困難程度」呈中度正相關(r=0.60,p<0.01),與整體之「遭遇頻率」呈低度正相關(r=0.12,p=0.02)。生命末期學習經驗的不同,整體生命末期照護情境之「教育需求程度」有顯著差異,另外,於「學歷」、「重要親友往生經驗」、「參與專科學會與否」、「參與安寧緩和護理學會與否」、「參與急重症護理學會與否」、「工作單位」、「護理進階層級」、「曾參與院內其他專科課程」、「曾參與院內線上課程」於各層面之教育需求程度有所差異。「倫理、法律、自我覺察情境執行困難程度越高」、「轉介評估及說明安寧緩和照護之困難程度越高」、「心理、社會、靈性層面照護情境執行困難程度越高」、「年齡越低」、「有參加安寧緩和護理學會者」,為整體生命末期病人照護情境之教育需求中重要的預測因子,可解釋整體變異量達39.14%;其中,「倫理、法律、自我覺察情境執行困難程度」是各層面教育需求之共同預測因子。未來可依據各情境之遭遇頻率、執行困難、教育需求在各單位及各進階層級的分布情形規劃「共通課程」與「具單位特殊性之課程」,使臨床護理人員的學習狀況更貼近其需求;往後的研究建議可以針對「需求內容」及「困難來源」有更深入的討論,進一步針對不同護理角色、不同準備度的護理人員有更精準、細緻的課程規劃,以加強末期照護中護理角色的深度及廣度。
4-2. LOW最低的兩份摘要 / The abstracts with lowest and second lowest LOF
接著讓我們來看看LOF分數最低的摘要,該摘要的LOF為1.000391,共有668個字,內容如下:
背景:機構式服務不僅照護時間長,照護內容複雜,照護需求由「治療」轉為「治療與照護並重」,照護品質日益受到重視。台灣醫療照護品質指標系列THIS與台灣臨床成效指標系統TCPI對於醫療品質改善皆有顯著貢獻,並涵蓋長期照護指標,屬全國機構皆可參與的全國性品質指標監測系統。然而全國性的品質指標監測系統在一般護理之家之間尚未普及。目的:1.調查我國一般護理之家採用全國性的品質指標監測系統之現況。2.探討一般護理之家採用全國性的品質指標監測系統的知識障礙為何。3.探討知識障礙如何影響一般護理之家對全國性的品質指標監測系統的採用意願。方法:對全台514家一般護理之家進行問卷調查,共回收125份有效問卷,有效回收率為25%。透過迴歸模型分析各變數對機構採用全國性的品質指標監測系統意願之影響。結果:「財務知識障礙」、「組織知識障礙」及「行為知識障礙」對全國性的品質指標監測採用意願有顯著負向影響,影響依序為「組織知識障礙」、「行為知識障礙」、「財務知識障礙」。表示財務的籌劃、機構內部工作流程的調整與人力規劃,以及人員的心理調適是影響全國性的品質指標監測系統成功導入機構的關鍵因素。結論:本研究結果顯示一般護理之家採用全國性的品質指標監測系統僅為20%,採用現況尚未普及。首先財務知識障礙問題,機構方與醫策會或醫務管理學會需共同訂定符合一般護理之家的收費標準。組織知識障礙問題,由高階主管帶領,組成推動全國性的品質指標監測系統小組,定期開會將工作流程及人力配置整合到最佳。最後,行為知識障礙問題,讓人員認識到需要改變,並進行培訓提高人員的技能。
LOF分數第二低的摘要為1.001758,共有696個字,內容如下:
隨著社會變遷與價值觀改變,現代女性必須外出工作,在職場上面對競爭的壓力,同時也背負著傳統女性照顧家庭的職責。女性面對多重角色形成的壓力,對健康造成負面影響,而女性化性別角色特質較強者,壓力也較大,影響健康。本研究主要目的為:(1)探討多重角色女性護理學生角色壓力、身心症狀、性別角色的相關性;(2)探討多重角色女性護理學生性別角色於角色壓力與身心症狀關係的影響。本研究為一橫斷性研究,以方便取樣法收集具有護理師/士職照之在職進修女學生,並兼具職業角色、配偶或/和父母與學生的角色者,共收案219人,以結構式問卷收集參與者性別角色、角色壓力與身心症狀的狀況,研究工具為女性角色壓力量表、身心適應問題量表與性別角色信念量表;女性傳統特質的題平均值與標準差為3.32 ± 1.20,以題平均值作為女性傳統特質的分類,在±1 SD之間歸類為對女性傳統特質沒意見,得分≧ 4.53歸類為認同傳統女性角色,得分≦ 2.12歸為不認同女性傳統角色;運用描述性統計與t-test、變異數分析(ANOVA)、複迴歸分析等推論性統計方式進行資料分析。研究結果為:(1)角色壓力與身心症狀有顯著相關(p < .001);(2)與公婆同住者,身心症狀較少;(3)女性傳統角色的態度不同,角色壓力與身心症狀的關係也不同,對傳統女性角色態度沒意見者,角色壓力與身心症狀呈現顯著正相關,而對傳統女性角色態度不認同或認同者,角色壓力與身心症狀的關係,則未呈現顯著性。本研究結果傳統女性角色態度為沒意見者,角色壓力越大則身心症狀越多。本研究可供在職進修之護理工作場所及護理學校參考,協助在職進修女性護理學生調適多重角色的生活。
4-3. LOF高分與低分之間的區別 / The difference between abstracts with high LOF and low LOF
LOW較低的兩份摘要都採用了問卷調查的研究方法,摘要大多內容都在報告研究分析的結果,而大部分問卷調查報告結果的方式則都很相似,因此它們代表著大部分研究摘要的常見寫法,反映在LOF,就是LOF非常接近1。
LOW較高的兩份摘要中,LOW最高的摘要採用了訪談法,除了敘述受訪者的背景之外,該摘要佔一半以上的篇幅都在撰寫該研究的結果。LOW第二高的摘要則採用了問卷調查研究方法,但是該摘要用了三分之一的篇幅講述研究背景,使得他的用詞有更多與其他摘要不同的地方。
有讀者可能會問:「LOF的分數是不是跟字的長度有關係啊?」讓我們拿字數來做皮爾森積差相關分析,結果可以發現兩者的確有顯著中度正相關。以這個例子來說,摘要字數越長,越有可能跟其他摘要使用不同的字。
不過這邊有個例子特別不符合LOF跟字數之間的關係,那就是LOF倒數第9名的摘要。它的LOF為1.004207,可說是相當接近1,但是它的字數為1051,是排行第四多的摘要。讓我們來看看該摘要的內容:
目的:探討使用居家式長期照顧服務對主要照顧者健康之影響及影響因子。方法:本研究屬橫斷性設計,納入2011年1月至2012年4月期間,於臺北市長期照顧管理中心登記且通過審核使用長照十年計畫服務之被照顧者及其主要照顧者。以電話聯繫被照顧者,同意參加者寄發兩份問卷(被照顧者與主要照顧者填寫)及知情同意書,填寫後寄回。結果:研究對象共納入525對主要照顧者與被照顧者。65歲以下的主要照顧者自覺健康狀況影響因子為與被照顧者的關係及曾經使用居家式服務、65歲以上的主要照顧者自覺健康狀況之影響因子為每月花費在照顧長者的費用佔全家總收入比例、被照顧者自覺健康狀況及曾經使用居家式服務。男性主要照顧者自覺健康狀況之影響因子為被照顧者與家人的相處情形、照顧長者時間、被照顧者自覺健康狀況及曾經使用居家式服務;女性主要照顧者自覺健康狀況之影響因子為每月花費在照顧長者的費用佔全家總收入比例。輕度失能者其主要照顧者自覺健康狀況之影響因子為目前有工作,以及每月花費在照顧長者的費用佔全家總收入比例;中度失能者其主要照顧者自覺健康狀況之影響因子為被照顧者的媳婦、被照顧者自覺健康狀況及曾經使用居家式服務。主要照顧者為配偶者其自覺健康狀況之影響因子為被照顧者自覺健康狀況,以及每月花費在照顧長者的費用佔全家總收入比例;主要照顧者為女兒者其自覺健康狀況之影響因子為被照顧者獨居,以及與家中長者關係不太好;主要照顧者為媳婦者其自覺健康狀況之影響因子為家中每月花費在照顧長者的費用佔全家總收入比例及曾經使用居家式服務;主要照顧者為其他關係者其自覺健康狀況之影響因子為被照顧者年齡65-74歲以及曾經使用居家式服務。非獨居被照顧者其主要照顧者自覺健康狀況之影響因子為每月花費在照顧長者的費用佔全家總收入比例與被照顧者自覺健康狀況;獨居被照顧者其主要照顧者自覺健康狀況之影響因子為全家一個月總收入與家中每月花費在照顧長者的費用佔全家總收入比例。結論:根據結果可知1.使用居家式長照服務對主要照顧者年齡≥65歲、男性及主要照顧者為其他關係者其自覺健康狀況有正面影響;對主要照顧者年齡<65歲、被照顧者中度失能、主要照顧者為媳婦者其自覺健康狀況有負面影響。2.主要照顧者家中每月花費在照顧長者的費用佔全家總收入比例、被照顧者與家人相處情形、與家中長者關係、曾經使用居家服務與被照顧者年齡等為影響主要照顧者自覺健康狀況之重要因子。未來制定長期照顧政策及提供服務時可考量主要照顧者健康相關特質,針對不同需求提供相對應服務,以提升主要照顧者健康。
仔細看一看這篇摘要,你會發現它用到了大量重複的字詞:「主要照顧者」,而它也採用了常見的問卷調查法,並以常見的問卷調查結果報告的形式來撰寫摘要。這跟前面的LOF較低的兩篇摘要相比,雖然它的字數較多,但寫法是不是看起來很像呢?
由此可知,如果要找出最特別的文本,光看字數可能會不太準。使用LOF來計算文本的異常程度,以此找出LOF最高,也就是最特別、所用字詞與眾不同的文本,可能是更好的作法。
結語 / Wrap up
本篇利用資料探勘中異常偵測的演算法局部異數因素(Local Outlier Factor, LOF),為大量文本計算LOF分數,從中找出用詞最為特別的文本。在大部分統計分析和資料探勘的研究中,異常偵測或離群值偵測大多是用來調整模型、刪除過於怪異的結果。但在文本探勘中,用詞最特別的文本則有其特別的價值。
從本文使用的30篇摘要中,我們可以用較高的LOF來找出最特別的摘要寫法,因此可以藉此找出獨特、與眾不同、別有用心的研究者。另一個可能的應用案例則是學生的報告或是考試的申論題。在同樣的報告題目或申論題題目之下,大部分學生寫的內容應該都大同小異,更可能會有多位學生上網抄襲,還抄到了同一份網頁的內容。這時候使用LOF來找出最為特別的回答,可能也可作為老師在評分上的參考依據來源之一。
即使文本探勘可以採用與傳統資料探勘類似的作法,但它們探勘出來的結果與意義,可能會有很大的不同。這篇使用LOF來做文件的異常值偵測,偵測出來的不是傳統意義中,讓研究者看起來十分礙眼、恨不得趕快刪掉的異常值,而可能是研究者中獨特的瑰寶喔。就讓我們繼續探索文本探勘的無限可能吧。
如果想要更深入瞭解異常偵測的計算方式,我推薦大家可以去閱讀「資料智慧化:利用資料科學,將資訊化為創建」一書。書目如下:
Foreman, J.W.(2017)。資料智慧化 利用資料科學, 將資訊化為創見(胡為君譯)。臺北市:碁峰資訊。
閒聊 / Off-topic
又來到我們的閒聊時間啦!寫到這裡根本就是抒壓活動。
這次寫這篇花了三個半小時,再加上事前準備資料、模擬操作,大概花了六個小時左右。不過字數的部分,怎麼看都不可能只有三千字,畢竟前面的摘要字數就已經接近三千了。好吧,再加一條issue。
不過這次跟前幾次相比,這次的issue增加數量已經很少了。而且這一篇最大的改良,就是加入了記憶體使用量的限制。如果記憶體使用量超過6%,則將暫時停止OCR。一開始我設成50%,結果它在6.8%的時候當機。後來我將限制設為6%,之後寫下來一路順暢,再也沒有當機過了。看來這次確實克服了上一篇因為OCR記憶體耗掉過多的問題,真是可喜可賀。
此外,這篇也開始使用WebSQL來記錄事件,畢竟在Google分析上記錄的事件還要等幾天才能看到結果,實在是讓人心癢難耐啊。
打開之後的結果長這樣子...嗯...看來還有很多需要改進的問題...
我想想,用這個事件記錄可以做什麼東西呢?直覺想到的是字數跟圖片數量的變動,這樣我可以畫個折線圖,看到我從頭到尾的字數和圖片數量的增減。另一種圖是活動的強度,就是以我在同一個時間區段下操作事件的次數來判斷活動的強度。
不過目前這樣的資料,要靠LibreOffice Calc轉換,實在是太麻煩了。我還是加個issue,必須直接算出年、月、日、時、分、秒,這樣比較好分析。而且數值結果也還要重新呈現才行。
一個一個來吧。這篇就來把OCR做完,收個尾吧。
那麼這次使用LOF來找出最特別文本的教學就到這裡了。寫到最後,我有些問題想問問大家:
- 你有處理過含有離群值的資料嗎?
- 你怎麼定義離群值,或是怎麼做異常偵測的呢?
- 你是怎麼處理離群值呢?直接刪掉嗎?
歡迎在下面的留言處跟我們分享你的想法。大家的意見是我繼續分享的動力喔!如果你覺得我這篇教學實用的話,請幫我在AddThis分享工具按讚、將這篇分享到Facebook等社群媒體吧!
感謝你的耐心閱讀,我是布丁,讓我們下一篇見。