【轉(zhuǎn)載】基于共現(xiàn)分析的Sangkm 13th研究
原文標(biāo)題:Sangkm13thで遊ぶ共起ネットワーク
原作者:Ayano
原文地址:http://ayanopensp.blog.fc2.com/blog-entry-22.html
翻譯及術(shù)語(yǔ)轉(zhuǎn)化不當(dāng)之處歡迎指正。
(這種活原來(lái)真的能整出來(lái)?。?span id="s0sssss00s" class="font-size-16">

<前言>
R(統(tǒng)計(jì)應(yīng)用軟件)只在長(zhǎng)假期間變得有趣。
盡管我是初學(xué)者,但值得慶幸的是油管上有大量的相關(guān)教學(xué)。
我在一月有很多空閑時(shí)間,所以我將學(xué)習(xí)共現(xiàn)分析作為我的假期作業(yè)。
簡(jiǎn)單來(lái)說(shuō),這就是一種可以較好地表達(dá)A與B之間關(guān)聯(lián)的東西。
<結(jié)論>
暫時(shí)先拋開(kāi)研究過(guò)程,下圖展示了研究的結(jié)論。
圖中連線的粗細(xì)和不透明度表示trick A→trick B的出現(xiàn)頻率,不透明度越高、連線越粗說(shuō)明出現(xiàn)頻率越高,詳細(xì)情況見(jiàn)圖例部分說(shuō)明。

下圖使用箭頭替換了連線(譯者注:上圖并不能體現(xiàn)trick A與trick B之間的方向性)。

<意義與展望>
綜上所述,您可以直觀并定量理解部分trick之間的聯(lián)系。
至于展望……
(1)收集并研究不同年代的系列合片。
(2)在影片數(shù)量足夠的前提下分析個(gè)體風(fēng)格。
(3)定量表達(dá)一段時(shí)期內(nèi)的流行趨勢(shì)以及不同轉(zhuǎn)筆者的個(gè)性等。
<方法>
?R
很長(zhǎng)一段時(shí)間以來(lái)我一直在以練習(xí)為目的去嘗試很多東西,這一次也是。但是限于我的水平,研究的不足之處請(qǐng)大家諒解。
①Sangkm系列招式變化研究

②運(yùn)用ROC curve分析WT17評(píng)分模型

?術(shù)語(yǔ)解析
我花費(fèi)了五小時(shí),把24個(gè)人的combo用術(shù)語(yǔ)表示。
所有trick采用了公認(rèn)的簡(jiǎn)略寫(xiě)法(twist = twisted sonic、sympass =symmetrical pass*等)
*symmetrical是日本術(shù)語(yǔ),解釋如下:

保留了Palm down、plam up的表示,但在上圖結(jié)論中省略了(即便不省略也會(huì)是很有趣的結(jié)論)
無(wú)論如何,罕見(jiàn)招式都不會(huì)影響結(jié)果,因此對(duì)其進(jìn)行了適當(dāng)注釋。
手指標(biāo)記采用常用的12345(譯者:日本是12345,我們是T1234)。
由于在稍后的研究中沒(méi)有保留記號(hào),連字符以及cont、fluent等修飾詞都沒(méi)有標(biāo)出(譯者:自行閱讀PSbook第127頁(yè),第六章Japanese notation部分)。
(例)
ソニックひねり34-23?→ ガンマン23-23?
寫(xiě)成
twist3423 gunman2323
(例 KTH)
Palmdown Twist3423 Sympass2312 Sp1212 Palmup Passre2334 Twistre3445 Palmdown Pass4534 Twist3423 Palmdown Sp22 Palmup Passre2334 Halfgunmanre3423 Sympassre2334 Twist3423 Pass2312 Sympassre1223 ZCC Symsonic3424 Sympss2445 Sonic4535 Twist3523 Air2334 Sonic3423 Sympass2334 Palmdown Devilsspin3434 Twist3423 Backre2323 Sp11 Air
?n-gram(這一段是R軟件相關(guān)的統(tǒng)計(jì)應(yīng)用問(wèn)題,和轉(zhuǎn)筆沒(méi)有關(guān)系)
這次實(shí)操我大概理解了1%。
→ABCDE?比如這一串字符:
AB BC CD ?分割為2-gram、ABC BCD CDE?分割為3-gram
以上舉例可應(yīng)用于轉(zhuǎn)筆招式的排列組合中。
這次制圖使用2-gram
使用3-gram也很繪制不錯(cuò)的圖表,但缺乏n會(huì)是一個(gè)問(wèn)題(譯者:此處應(yīng)該是表達(dá)使用3-gram繪圖會(huì)面臨n的組距設(shè)置不足夠小的問(wèn)題)。
使用2-gram來(lái)計(jì)算頻率,結(jié)果如下。繪制可得到前文的圖表。
word1 ?word2 ? ?? ?n
1 sympassre2334 ? ? twist3423 ? ? ? ? ??25
2 twist3423 ? ? ? ? ? ? ? pass2312 ? ? ? ? ? 12
3 chargere1212 ? ? ? ?flre ? ? ? ? ? ? ? ? ? ? ? 11
4 pass4534 ? ? ? ? ? ? ? twist3423 ? ? ? ? ? ?11
5 pass2312 ? ? ? ? ? ? ? chargere1212 ? ? 10
6 halfgunmanre3423 sympassre2334 8
<難點(diǎn)與感想>
最大的難點(diǎn)做到是對(duì)BD分析的統(tǒng)一化。例如五個(gè)人合作分析,一字之差便會(huì)讓一切毫無(wú)意義。不知道開(kāi)發(fā)一個(gè)只能通過(guò)點(diǎn)擊來(lái)確定BD,以此避免術(shù)語(yǔ)偏差的APP效果會(huì)怎么樣?
其次,隨著時(shí)代的進(jìn)步,大量難以描述的招式正在出現(xiàn)。這是我們選擇Sangkm系列作為研究對(duì)象的主要原因——主要由“舊”招式組成。
如果存在一個(gè)不能用現(xiàn)有術(shù)語(yǔ)直接表示的招式,那么它將被拆分成多個(gè)具有現(xiàn)有術(shù)語(yǔ)的招式來(lái)表達(dá),但是這樣做整體的表達(dá)就會(huì)含糊不清。因此,一些習(xí)慣命名(譯者:例如Haitua)顯得簡(jiǎn)便而完美。
aimo術(shù)語(yǔ)非常重視對(duì)個(gè)別情況的描述,非常有趣且實(shí)用。
(接下來(lái)一段講述配置日語(yǔ)版軟件的方法,目的是邀請(qǐng)大家和Ayano一同研究,故此處省略)
<參考文獻(xiàn)>
https://www.youtube.com/watch?v=tQfPK8Ay5YU
https://www.youtube.com/watch?v=ae_XVhjHd_o&t=715s
https://www.slideshare.net/kashitan/tidygraphggraph-ver-152368322
https://www.data-imaginist.com/2017/ggraph-introduction-edges/
https://rdrr.io/cran/ggraph/man/scale_edge_colour.html
<實(shí)際使用的代碼>
library(tm)
library(tidytext)
library(tidyverse)
library(igraph)
library(ggraph)
text<-readLines("Sangkm.txt")
corpus <- Corpus(VectorSource(text))
corpus <- tm_map(corpus, tolower)
corpus <- tm_map(corpus, removePunctuation)
#corpus <- tm_map(corpus, removeNumbers)
corpus <- tm_map(corpus, stripWhitespace)
stopwords <- c("palmdown","palmup")
corpus <- tm_map(corpus, removeWords, stopwords)
corpus2<-data.frame(text = sapply(corpus, as.character), stringsAsFactors = FALSE)
# create bigrams (n = 2 or 3)
New_bigrams <- corpus2 %>%
unnest_tokens(bigram, text, token = "ngrams", n=2)
# count bigram frequency
New_bigrams %>%
count(bigram, sort = TRUE)
# separate bigrams and remove stop words
bigrams_separated <- New_bigrams %>%
separate(bigram, c("word1","word2"),sep=" ")
# bigram counts
bigram_counts <- bigrams_separated %>%
count(word1, word2, sort = TRUE)
bigram_graph <- bigram_counts %>%
filter(n>3) %>%
graph_from_data_frame()
set.seed(2020)
#無(wú)交グラフ
graph <- ggraph(bigram_graph, layout = "fr")+
geom_edge_link(aes(alpha = n, width = n),
color = "gray")+
scale_edge_width(range = c(2, 3))+
geom_node_point()+
geom_node_text(aes(label = name),
vjust = 1, hjust = 1, repel = TRUE)+
theme_graph()
#有交グラフ(矢印あり)
graph <- ggraph(bigram_graph, layout = "fr")+
geom_edge_link(aes(alpha = n,
start_cap = label_rect(node1.name),
end_cap = label_rect(node2.name)),
arrow = arrow(length = unit(2, 'mm')),
end_cap = circle(2, 'mm')) +
scale_edge_width(range = c(2, 3))+
geom_node_text(aes(label = name),
vjust = 1, hjust = 1, repel = TRUE)+
theme_graph()