你的任務是撰寫一份程式碼,將 samesex_marriage/txt/
內的所有的 .txt
檔斷詞處理後,整理成一個 document data frame,並將結果儲存於變數 docs_df
。
斷詞請使用自訂辭典 (辭典位於 samesex_marriage/user_dict.txt
) (10 分)
docs_df
需有 4 個變項:
id
: 文章檔名 (15 分)
topic
: 文章來源 (詳見課程影片) (25 分)
每篇文章的 topic
資訊藏在文字檔的檔名中, 例如 samesex_marriage/txt/anti_7.txt
的 topic
為 anti
;samesex_marriage/txt/pro_108.txt
的 topic
為 pro
。你可以透過 basename()
與 strsplit()
取得檔名中的這項資訊。
title
: 文章標題 (25 分)
每篇文章的標題儲存於文字檔的第一行 (第二行為空行), 例如 samesex_marriage/txt/anti_7.txt
的第一行為 同性婚姻與多人婚姻
。
content
: 文章內文 (25 分)
需斷好詞且以 \u3000
作為詞彙分隔字元。 內文不包含文章標題 (i.e. 忽略文字檔第一行)
請在程式碼中加入適量註解 (沒有註解以致程式碼閱讀困難者,酌量扣分),例如:
# Read post from file
<- readLines(fps[i], encoding = "UTF-8")
post
# Extract title
<- ... title
# Your code goes here
# please save the results to `docs_df`
library(stringr)
library(jiebaR)
#文章檔名
<- list.files("./samesex_marriage/txt")
filelist
#匯入所有txt檔案
<- lapply(filelist, function(x)readLines(paste0("./samesex_marriage/txt/", x)))
datalist
# 擷取title
<- sapply(datalist, function(x)paste(x[1]))
title
#文章Topic
<- strsplit(filelist,"_")
topic<- sapply(topic, function(x)paste(x[1]))
Topic
#文章content
<- sapply(datalist, function(x)paste(x[3]))
content <- worker(user="./samesex_marriage/user_dict.txt",bylines = T)
seg <- segment(content, seg)
segged <- sapply(segged,function(x) paste(x, collapse="\u3000"))
segged_content
#Dataframe製作
<- tibble::tibble(
docs_df id=filelist,
topic=Topic,
title=title,
content=segged_content
)
###### 請勿更動下方程式碼 ######
# 輸出結果請參考 `samesex_marriage.rds`
::kable(docs_df[234,], align = "c") knitr
id | topic | title | content |
---|---|---|---|
pro_39.txt | pro | 特派專欄 MeToo到反娘 中國性別平權道阻且長 | 從 MeToo 事件 到 網路 仇視 男性 陰柔 氣質 都 顯示 中國 性別 平權 意識 不足 北京 NGO 人士 坦言 日趨 緊縮 的 言論 控制 將是 一大 阻礙 曾 任 人大代表 的 學者 則認 為 中國 至少 還需 10 年 時間 狀況 才能 慢慢 改善 今年初 開始 中國 校園 知識 圈 公益 界 乃至 宗教界 接連 有 女性 出面 揭露 曾 遭 性騷擾 或性 侵 涉事 者 不乏 形象 良好 的 公眾 人物 一時之間 中國 版 的 MeToo 運動 擴散 延燒 一起 起 事件 並未 促使 中國政府 做出 積極 回應 反性 侵 和 反性 騷的 MeToo 運動 更成 為 網路 禁詞 在 多元 性別 議題 上 中國 現況 同樣 不容樂觀 微博 今年 4 月 一度 查禁 同性戀 內容 近來 網路上 更 熱衷 討論 男性 陰柔 化 議題 譏諷 少年 娘則 國娘 反 娘 化 情緒 升溫 中共 黨媒 人民日報 雖然 出面 發聲 呼籲 尊重 包容 卻 也 強調 性 傾向 不 應該 成為 少數 人嘩眾 取寵 的 內容 過於 沉迷 陰柔之美 就 需要 矯正 顯見 官方 態度 仍然 保守 北京 同志 中心 計畫 主管 蔡瑤 先前 接受 中央社 記者 訪問 時分 析 中國 大陸 缺乏 類似 台灣 多元 性別 教育 的 政策 無法 在 校園 中 宣講 原本 非政府 組織 NGO 能 透過 自 媒體 傳播 普及 多元 性別 教育 但 當局 加強 管控 網路 言論 無非 不是 件 棘手 的 問題 她 表示 由於 NGO 缺乏 與 政府部門 對話 的 管道 推動 相關 性別 平權 多元性 別的 相關 立法 確實 有 很大 困難 我們 永遠 不 知道 底線 在 哪裡 不 只 我們 不 知道 政府部門 也 不 知道 底線 在哪 因而 延伸 許多 過度 自我 審查 問題 雖然 官方 態度曖昧 不清 但 仍 有 許多 案例 顯示 中國 推動 性別 平權 尚有 牛步 前進 的 跡象 例如 在 2016 年 的 兩會 期間 中國 中央 電視 台 英文 頻道 曾 播出 10 多分鐘 的 新聞節目 介紹 一名 全國 人大代表 提交 保護 多元 性別 族群 LGBT 權利 的 提案 這名 提案 的 人大代表 便是 中華 女子 學院 女性 學系 教授 孫曉梅 她 日前 在 北京 出席 聯合國 開發 計畫署 駐 中國 代表處 舉辦 的 座談會 時 坦言 性別 平權 的 問題 可能 還 需要 再過 10 年 才 會 慢慢 解決 她 表示 一些 官方 學者 研究 機構 目前 仍 持續 進行 中國 大陸 境內 的 多元 性別 及 跨 性別 調查 發覺 40 歲 以下 的 民眾 普遍 都 能 接受 認同 但 再 年長 一些 的 人 便 不是 特別 認同 讓 他們 接受 會 是 一個 過程 對此 孫曉梅 認為 當局 與 學界 現階段 必須 加強 培訓 立法 司法 機構 人員 並且 出版 更多 通識 宣傳 書籍 讓民眾 能 逐漸 建立 對 多元 性別 性別 平權 的 認識 新聞 連結 中央社 繆宗翰 今日 新聞 2018-08-22 |
請運用上方整理出來的 data frame (或直接讀取 samesex_marriage.rds
),將文章依據 topic 分成兩組,計算出這兩個 topic 的詞彙豐富度 (以 type-token ratio 衡量,定義見下)。
# Your code goes here
library(dplyr)
library(tidytext)
<-
tidytext_format %>%
docs_dfunnest_tokens(output="word", input="content",token="regex", pattern="\u3000")
%>%
tidytext_formatgroup_by(topic,word)%>%
summarise(N=n())%>%
ungroup()%>%
group_by(topic)%>%
summarize(TTR=n()/sum(N))
###### 請勿更動下方程式碼 ######
# Should print out:
#> # A tibble: 2 x 2
#> topic TTR
#> <chr> <dbl>
#> 1 anti 0.115
#> 2 pro 0.173
#> # A tibble: 2 x 2
#> topic TTR
#> <chr> <dbl>
#> 1 anti 0.115
#> 2 pro 0.173
type-token ratio (TTR) 是一種衡量文本詞彙豐富度的指標,其定義為:
A type-token ratio (TTR) is the total number of UNIQUE words (types) divided by the total number of words (tokens) in a given segment of language.
例如,每天 天剛亮 時 我 母親 便 把 我 喊醒
這句話含有 9 個 tokens。其中,我
這個 token 出現了兩次,其它的 token 皆只出現一次,因此總共有 8 種 types。這句話的 type-token ratio 因此為 0.8889 (8/9)。