不務正業:R語言讀小說《近身兵王》

2021-02-25 數據科學家之在路上
 寫在前面的話

前段時間比較辛苦,連著幾周下來,終於該來的都來了,發燒、頭疼加嗜睡,一樣都不少,一天下來清醒的時候也不多,更新了個代碼,還有點時間突然好想看個小說。手機上隨便打開一個,半小時一下就沒了,賊啊,這書好看,網上搜索發現是《近身兵王》(秦淵),好評如潮,決定看完,但目錄顯示這是個連載,已經一千多章,這得猴年馬月才能看完呢,我可只有這感冒的幾天空擋…看來只能快速選著看了,但怎麼來定位自己想要的章節呢,記起之前R會議上一個美女尾巴AR介紹了用R讀小說,這次也來試試看.

 數據導入 小說網上下載

近身兵王.txt 

下載放於項目目錄下。

 語言環境設置

# 中文環境Sys.setlocale("LC_CTYPE", "Chinese")

#> [1] "Chinese (Simplified)_People's Republic of China.936"

 小說讀入

library(readr)library(stringr)library(dplyr, quietly = TRUE, warn.conflicts = FALSE)JSBW <- read_lines("近身兵王.txt")
head(JSBW, n = 10)

#>  [1] "<---->"#>  [2] "  溫馨提示:您所閱讀的小說來自【久久小說網】 www.99txt.cc"         #>  [3] " 本網站沒有彈窗可放心閱讀" #>  [4] "<---->"#>  [5] ""          #>  [6] "  《近身兵王》"#>  [7] "  連載閱讀地址:http://www.99txt.cc/7902/" #>  [8] ""           #>  [9] ""           #>   [10] " 第1章 來世再做兄弟!"

 小說章節目錄

查看章節目錄,並按目錄分割為小文件。

Content <- str_subset(JSBW, "第\\d*章") %>% str_trim(side = "both")
# 總章節數
ContentNum <- length(Content)ContentNum

#> [1] 1612

# 前10章目錄:

head(Content, n = 10)

#>  [1] "第1章 來世再做兄弟!"         "第2章 色狼,你的手對哪摸呢?"#>  [3] "第3章 英雄救美"             "第4章 一個打七個"           #>  [5] "第5章 魯雪晴的決定"          "第6章 你想包養老娘?"        #>  [7] "第7章 痛打惡少"             "第8章 跟我回家"            #>  [9] "第9章 撩人的小姨"            "第10章 裸睡的悲劇"

write_lines(Content, "Content.txt")# 按章節分割 目錄保存本地
if (!dir.exists("章節目錄")) {    dir.create("章節目錄")}ContentLocation <- which(str_detect(JSBW, "第\\d*章"))temp <- c(ContentLocation, length(JSBW))for (i in seq_len(ContentNum)) {    data <- JSBW[temp[i]:(temp[i + 1] - 1)]    
     write_lines(data, paste0("章節目錄/", str_pad(i, width = 4, side = "left",        pad = "0"), "-", Content[i], ".txt"))}
head(list.files("章節目錄"), n = 10)

#>  [1] "0001-第1章 來世再做兄弟!.txt"        #>  [2] "0002-第2章 色狼,你的手對哪摸呢?.txt"#>  [3] "0003-第3章 英雄救美.txt"              #>  [4] "0004-第4章 一個打七個.txt"            #>  [5] "0005-第5章 魯雪晴的決定.txt"          #>  [6] "0006-第6章 你想包養老娘?.txt"        #>  [7] "0007-第7章 痛打惡少.txt"              #>  [8] "0008-第8章 跟我回家.txt"              #>  [9] "0009-第9章 撩人的小姨.txt"            #>   [10] "0010-第10章 裸睡的悲劇.txt"

 人物段落

查看某個人物出現的所有段落,以冷豔美女「易紅月」為例:

Yhy <- str_subset(JSBW, "易紅月")  # 易紅月的段落

head(Yhy)         # 預覽易紅月的段落

#> [1] "    少女恍然,她能夠分辨得出秦淵的茫然是否在做作,旋即輕聲說道:「我叫易紅月。」"          #> [2] "    「易紅月,很好聽的名字。」秦淵毫不吝惜自己的讚美說道。" #> [3] "    「謝謝!」易紅月的聲音優雅平靜,說完再次轉身面對著初升的朝陽。"#> [4] "    秦淵發現,此刻的他居然不會說話了,就這麼默默地站在易紅月的背後,欣賞著這難得的畫面。"#> [5] "    秦淵不說話,易紅月也不說話。" #> [6] "    良久,易紅月突然出聲,又相似自言自語,「你喜歡看日出麼?」"

# 目錄保存本地if (!dir.exists("人物章節")) {    dir.create("人物章節")}write_lines(Yhy, "人物章節/易紅月.txt")

 人物互動

同一個段落裡面同時出現兩個人的姓名, 以「易紅月」和「秦淵」為例,

Yhy.Qy <- str_subset(JSBW, "(易紅月.*秦淵)|(秦淵.*易紅月)")
head(Yhy.Qy)

#> [1] "    少女恍然,她能夠分辨得出秦淵的茫然是否在做作,旋即輕聲說道:「我叫易紅月。」"          #> [2] "    「易紅月,很好聽的名字。」秦淵毫不吝惜自己的讚美說道。"#> [3] "    秦淵發現,此刻的他居然不會說話了,就這麼默默地站在易紅月的背後,欣賞著這難得的畫面。"#> [4] "    秦淵不說話,易紅月也不說話。"#> [5] "    秦淵回神,旋即將目光從易紅月身上轉移,看向那萬丈金光的太陽。"#> [6] "    「為什麼?」易紅月再次轉過身,看著秦淵時,眼神微微有些愕然。"

# 目錄保存本地if (!dir.exists("人物互動")) {    dir.create("人物互動")}write_lines(Yhy.Qy, "人物互動/易紅月-秦淵.txt")

 人物出場場次

人物眾多,我只關心美女呵呵

meiNv <- c("蘇傾月|曼陀羅", "葉雲曼|小姨", "雪晴", "可卿", "李欣", "易紅月", "安倚橋", "納蘭明珠|茗珠", "左瑤", "左璃", "柳夢心", "何伊人", "洛櫻")zhangJie.list <- list.files("章節目錄")zhangJie.path <- paste0("章節目錄/", zhangJie.list)zhangJie.all <- lapply(zhangJie.path, read_lines)zhangJie.sum <- list(章節 = zhangJie.list)for (i in seq_along(meiNv)) {    zhangJie.sum[[i + 1]] <- sapply(zhangJie.all, function(str) {        
           sum(str_count(str, meiNv[i]))    })}
names(zhangJie.sum)[-1] <- meiNv
library(DT)
# 生成人物-場次圖,篩選排序找出關鍵章節
datatable(as.data.frame(zhangJie.sum), options = list(paging = TRUE, pageLength = 5,searching = TRUE), rownames = FALSE)

Show 5102550100 entries

Search:

章節蘇傾月.曼陀羅葉雲曼.小姨雪晴可卿李欣易紅月安倚橋納蘭明珠.茗珠左瑤左璃柳夢心何伊人洛櫻

Showing 1 to 5 of 1,612 entries

Previous12345…323Next

# 本地保存write.csv(as.data.frame(zhangJie.sum), "meiNv.csv", fileEncoding = "GB2312",    row.names = FALSE)

 人物關係網

看看男豬腳與美女之間的互動關係強弱:

# 看看秦淵與各個美女之間的關係圖
nameAll <- c(meiNv, "秦淵|兇獸")
# 互動關係
num <- length(nameAll)relation <- matrix(data = rep(0, num^2), nrow = num)
colnames(relation) <- nameAll
rownames(relation) <- nameAllfor (i in 1:(num - 1)) {    for (j in (i + 1):num) {        relation[i, j] <- sum(str_detect(JSBW, paste0("((", nameAll[[i]], ").*(",            nameAll[[j]], "))|((", nameAll[[j]], ").*(", nameAll[[i]], "))")))        relation[j, i] <- relation[i, j]    }}
library(igraph, quietly = TRUE, warn.conflicts = FALSE)
library(ggthemes)g <- graph_from_adjacency_matrix(relation, mode = "upper", diag = FALSE, weighted = TRUE)
E(g)$width <- E(g)$weight/500
E(g)$color <- tableau_seq_gradient_pal("Red")(E(g)$weight/max(relation))
# E(g)$curved <- 0.2
temp <- rowSums(relation)node.weight <- temp/max(temp)
V(g)$size <- node.weight * 20
V(g)$label.dist <- 0.5
V(g)$label.cex <- 0.7
# V(g)$color <- tableau_seq_gradient_pal('Red')(node.weight)
plot(g, layout = layout.circle, vertex.shape = "none")

 寫在後面的話

搗鼓了半天時間,大概了解的人物角色、場次與互動關係,選看了感興趣章節,前面部分很不錯,後面的劇情超出了所能理解的層次,於是中止,半天時間,到此結束。

明天生龍活虎!

相關焦點

  • 爆款小說:龍都兵王 全本_獨家在線看_無彈窗
    【這裡有全集】龍都兵王 趙東 蘇菲免費在線看,>>點這裡:龍都兵王 趙東 蘇菲<完結/章節>,>>
  • 一世兵王 秦風[到達]
    一世兵王 秦風完整乙免價費伀 一世兵王 秦風完偮整版冋」 一世兵王 秦風繼佒續閱讀 一世兵王 秦風最新更新仧
  • 一世兵王(我本瘋狂)最新章節
    一世兵王最新章節由網友提供,《一世兵王》情節跌宕起伏、扣人心弦,是一本情節與文筆俱佳的小說。
  • 全能護花兵王劉芒(兵王歸來),假牙
    全能護花兵王 劉芒繼續閱讀 全能護花兵王 劉芒全篇
  • 最狂兵王楚雲[受人尊重]
    最狂兵王 楚雲在線閱讀 最狂兵王 楚雲連續閱讀
  • 讀新聞,學語言-盧森堡每周簡聞(08/01-12/01/2018)
    讀新聞,學語言,讓我們深入了解盧森堡當地生活,學好法語和盧森堡語。本公眾號與姚萍蘭老師,美娟Carlo夫婦等在盧森堡華人圈推廣法語盧森堡語的熱心人士合作,2017年8月底開始發布盧森堡每周簡聞。Bientôt   adv 不久connaître  v 知道la qualité de l'air   空氣品質respirer v  呼吸en effet   事實上   實際上des mesures  審查   測量les sites différents  不同地點
  • 一世兵王秦風最新更新
    一世兵王(秦風、秦風全本、秦風最新更新、做者我本瘋狂)、我本瘋狂(一世兵王)他是國之利刃,也是令各國地下勢力聞風喪膽的華夏龍王! 他有一個名動京城的未婚妻,一個個人間尤物,卻相繼出現在他的身邊,誘惑不斷,他是來者不拒,還是弱水三千,只取一瓢? 他離開軍營,歸隱花都,怎奈樹欲靜而風不止,各方勢力來勢洶洶,草莽全貴虎視眈眈,他該如何應對? 「動我親友者,勢必清算;犯我華夏者,雖遠必誅!」
  • 套環指間,拳拳到肉:近身搏鬥怎能少了指虎?
    強勢的近身格鬥利器指虎(Brass knuckles)是一種經典的,在肉搏戰鬥中使用的武器
  • 48個國際音標: 31 鼻音[r]
    點擊上方「日常英語口語8000句」1.幫助正確發音並準確記憶單詞;2.有助於英語說的能力鍛鍊;3.提高英語聽力;點擊播放發音要領:[r]技巧提示:在發[r]時,先做好發「瑞」的舌位準備,然後聲帶振動。注意發[r[時,舌尖捲起時不得接觸上齒齦。
  • 精彩回看 | 國際著名兒童文學家伊恩·威柏帶孩子們快樂讀英語
    威柏先生現場帶孩子們一起讀「劍橋彩虹少兒英語分級閱讀」系列叢書中的故事,讓孩子們體驗英語故事的無限樂趣!國際著名兒童文學作家。他出生在吉林漢姆(Gillingham),成長於香港。10 歲時他在當地報紙發表了一首關於貓咪的詩,此後為孩子們寫了許多書。自1989 年發表第一部兒童文學作品開始,迄今已創作了超 100 本兒童文學作品。
  • R語言實戰:基本統計分析
    本文內容來自《R 語言實戰》(R in Action, 2nd),有部分修改描述性統計分析mtcars 數據集中的三個連續變量
  • 推理小說女王阿加莎經典作:《東方快車謀殺案》kindle精裝版
    《東方快車謀殺案》(Murder on the Orient Express)是著名的英國推理小說作家阿加莎·克裡斯蒂的作品之一,主角為名偵探赫丘裡·波洛,英國柯林斯犯罪俱樂部於1934年1這本小說,似乎是人們潛意識中,對兇手另一種方式的,越出法律之外的非理性制裁。
  • 天醫歸來小說 主角:秦羽 方媛媛 全文完整在線讀
    天醫歸來 的讀者朋友大家好天醫歸來 官方正版小說平臺
  • 呂麗委:英文讀經教學實務
    第四步我們在這裡面就是有一個中英文的對照,因為每天有一個新課的學習,因為剛才他們英文已經學習了、已經非常熟悉了中英文的對照,同樣在這個階段因為小孩子他們積累了一定的這種(通過這樣子的學習)相當好的這種認字的能力,像我們在這個階段的小朋友他們就可以自己閱讀,像《霧都孤兒》這樣子的英文小說,他們自己可以還瞞輕鬆地閱讀。
  • 醫學統計與R語言:百分條圖與雷達圖
    微信公眾號:醫學統計與R語言如果你覺得對你有幫助,歡迎轉發百分條圖-輸入1: library(ggplot2)library(ggthemes)library(ggsci)library(rio)percentbar <- import("percentbar.xlsx
  • 南京遇害女生的男友不是普通人,精通CQC近身格鬥,心理素質極強
    精通CQC近身格鬥在交流的過程中發現,他對捕俘、擒拿、反擒拿這些東西講得頭頭是道,還跟我解釋了CQC近身格鬥的要點。對於這些我是一竅不通的,下意識地覺得他在吹牛。補充一點:CQC(Close Quarters Combat)軍方近身格鬥術,目標就是殺敵)
  • 2017新年讀經軟體參考
    在此推薦一些比較好用的讀經軟體,供弟兄姐妹參考,幫助大家在新的一年中,每天有真理的帶領。(以下軟體有一些中國大陸無法下載,如有需要安卓apk文件,請聯繫公眾號管理員。)一、微讀聖經應用地址:http://app.wedevote.com/排版簡明,擁有筆記、高亮和搜索功能,有中英文繁簡多種版本。
  • 全球一讀就錯的地名,念完覺得自己英語白學了
    倫敦部分地鐵站的發音也是不按套路出牌,下面圈哥就來幫大家掃掃雷,以免出門問路表述不清引起尷尬~大家往往喜歡把它拆分開來讀: south-wark,其實它的正確發音應該是: /ˈsʌðək/,注意,「w」和「r」都不發音
  • 統計&編程|用R語言做中介效應
    0.2875657 0.6397209 1.0000000R does not give significance information with its correlation matrices (annoying), but reference to a handy table will show that the critical value of Pearson's r
  • R語言:天氣數據抓取RNCEP簡介
    Christian Weichsel,他曾經在項目中給我推薦過一個R語言的包:RNCEP,可以很方便的根據經緯度和時間爬取歷史天氣數據。這裡就簡單介紹一下,就當薪火相傳了。天氣數據的抓取,在實際工作中還是比較常見的,常用於相關性分析,和給數據挖掘增加外部特徵。當然可以去noaa網站上手動下載,不過有了RNCEP也著實方便了R用戶。