Open archielu opened 3 years ago
感謝提醒~ 第一題的數值輸出 sample 確實是錯誤的,正確的數值如下:
#> 2 x 15 Matrix of class "dgeMatrix"
#> [,1] [,2] [,3] [,4] [,5] [,6]
#> text1 0.01082797 -0.005043434 0.01906469 0.02116770 -0.01264663 0.01741631
#> text2 0.04291259 -0.008224614 0.04674972 0.05099859 -0.02992219 0.03286311
#> [,7] [,8] [,9] [,10] [,11] [,12]
#> text1 0.03035976 0.02448952 -0.01062937 -0.005384180 -0.033654985 0.005100957
#> text2 0.06443163 0.03061845 0.01812084 0.002242561 -0.008611309 0.036203892
#> [,13] [,14] [,15]
#> text1 -0.015062376 -0.007130964 0.001976622
#> text2 -0.009293649 0.026068611 0.002363140
至於 rowname 為何皆為 text1
需要看到程式碼才知道
好 那我先push再請老師幫忙看一下 感謝
是因為你是用 sapply()
為每一篇文本獨立製作一個的 document-term matrix,最後才將它們 rbind 起來,
所以每次建立新的 document-term matrix 時,因為只有一個 row,dfm()
這個函數就會自動將唯一的 row 的名稱設為 text1
如果想要避免這種情況,就要一次製作出包含所有文件的 document-term matrix。
方法是去調整 worker()
的設定,讓 segment()
的結果可以符合 tokens()
所要求的資料結構:
library(dplyr)
library(quanteda)
segged_docs <- list(
c("這是", "第一篇", "文章" ),
c("那", "是", "第二篇", "文章")
)
segged_docs
#> [[1]]
#> [1] "這是" "第一篇" "文章"
#>
#> [[2]]
#> [1] "那" "是" "第二篇" "文章"
segged_docs %>% tokens()
#> Tokens consisting of 2 documents.
#> text1 :
#> [1] "這是" "第一篇" "文章"
#>
#> text2 :
#> [1] "那" "是" "第二篇" "文章"
segged_docs %>% tokens() %>% dfm()
#> Document-feature matrix of: 2 documents, 6 features (41.67% sparse) and 0 docvars.
#> features
#> docs 這是 第一篇 文章 那 是 第二篇
#> text1 1 1 1 0 0 0
#> text2 0 0 1 1 1 1
老師助教同學好, 第一題輸出的數值與sample output 有差異,另外有什麼辦法可以印出text2 , 我兩個標籤都是印出text1 感謝!