🌿

R(quanteda)によるテキスト解析

27 min read

この記事について

quantedaRcppMeCabを用いたテキストマイニングの例です(googledriveを利用して自作の文章を分析していた過去記事についてはQiitaのログ(revision < 10)から参照してください)。

なお、以下のパッケージについては、ここではGitHubからインストールできるものを使っています。

データの準備

テキストデータとしてlivedoorニュースコーパスを使います。以下の9カテゴリです。

  • トピックニュース
  • Sports Watch
  • ITライフハック
  • 家電チャンネル
  • MOVIE ENTER
  • 独女通信
  • エスマックス
  • livedoor HOMME
  • Peachy

ldccrでデータフレームにします。

data <- ldccr::parse_ldcc(exdir = "cache")
#> Parsing dokujo-tsushin...
#> Parsing it-life-hack...
#> Parsing kaden-channel...
#> Parsing livedoor-homme...
#> Parsing movie-enter...
#> Parsing peachy...
#> Parsing smax...
#> Parsing sports-watch...
#> Parsing topic-news...
#> Done.

このうち一部だけをquantedaのコーパスオブジェクトとして格納し、いろいろ試していきます。

corp <- data %>%
  dplyr::sample_frac(size = .2)

corp <- corp %>%
  dplyr::pull("body") %>%
  stringr::str_remove_all("[[:punct:]]+") %>%
  zipangu::str_jnormalize() %>%
  RcppMeCab::posParallel(format = "data.frame") %>%
  RcppMeCab::pack() %>%
  dplyr::bind_cols(corp) %>%
  quanteda::corpus()

ワードクラウド

ストップワードとしてrtweet::stopwordslangsを利用しています。

stopwords <- rtweet::stopwordslangs %>%
  dplyr::filter(lang == "ja") %>%
  dplyr::filter(p >= .98) %>%
  dplyr::pull(word)

corp %>%
  quanteda::tokens(what = "word") %>%
  quanteda::tokens_remove(stopwords, valuetype = "fixed") %>%
  quanteda::dfm() %>%
  quanteda::dfm_group(groups = category) %>%
  quanteda::dfm_trim(min_termfreq = 10L) %>%
  quanteda.textplots::textplot_wordcloud(color = viridis::cividis(8L))

wordcloud-1

出現頻度の集計

corp %>%
  quanteda::tokens(what = "word") %>%
  quanteda::tokens_remove(stopwords, valuetype = "fixed") %>%
  quanteda::dfm() %>%
  quanteda::dfm_weight("prop") %>%
  quanteda.textstats::textstat_frequency(groups = category) %>%
  dplyr::top_n(-30L, rank) %>%
  ggpubr::ggdotchart(
    x = "feature",
    y = "frequency",
    group = "group",
    color = "group",
    rotate = TRUE
  ) +
  ggplot2::theme_bw()

stats-1

Keyness

ITライフハック(it-life-hack)グループの文書とその他の対照を見ています。

corp %>%
  quanteda::tokens(what = "word") %>%
  quanteda::tokens_remove(stopwords, valuetype = "fixed") %>%
  quanteda::dfm() %>%
  quanteda::dfm_group(groups = category) %>%
  quanteda.textstats::textstat_keyness(target = "it-life-hack") %>%
  quanteda.textplots::textplot_keyness()

keyness-1

対応分析

全部をプロットすると潰れて見えないので一部だけを抽出しています。

corp_sample <- quanteda::corpus_sample(corp, size = 32L)
corp_sample %>%
  quanteda::tokens(what = "word") %>%
  quanteda::tokens_remove(stopwords, valuetype = "fixed") %>%
  quanteda::dfm() %>%
  quanteda::dfm_weight(scheme = "prop") %>%
  quanteda.textmodels::textmodel_ca() %>%
  quanteda.textplots::textplot_scale1d(
    margin = "documents",
    groups = quanteda::docvars(corp_sample, "category")
  )

ca-1

共起ネットワーク

共起ネットワークもあまり大きな文書集合だと潰れて見えないので、対応分析と同じコーパスについて描画してみます。

corp_sample %>%
  quanteda::tokens(what = "word") %>%
  quanteda::tokens_remove(stopwords, valuetype = "fixed") %>%
  quanteda::dfm() %>%
  quanteda::dfm_group(groups = category) %>%
  quanteda::dfm_trim(min_termfreq = 20L) %>%
  quanteda::fcm() %>%
  quanteda.textplots::textplot_network()

network-1

クラスタリング

マンハッタン距離、ward法(ward.D2)です。ここでも一部だけを抽出しています。

d <- corp_sample %>%
  quanteda::tokens(what = "word") %>%
  quanteda::tokens_remove(stopwords, valuetype = "fixed") %>%
  quanteda::dfm() %>%
  quanteda::dfm_weight(scheme = "prop") %>%
  quanteda.textstats::textstat_dist(method = "manhattan") %>%
  as.dist() %>%
  hclust(method = "ward.D2") %>%
  ggdendro::dendro_data(type = "rectangle") %>%
  purrr::list_modify(
    labels = dplyr::bind_cols(
      .$labels,
      names = names(corp_sample),
      category = quanteda::docvars(corp_sample, "category")
    )
  )

ggplot2::ggplot(ggdendro::segment(d)) +
  ggplot2::geom_segment(aes(x = x, y = y, xend = xend, yend = yend)) +
  ggplot2::geom_text(ggdendro::label(d), mapping = aes(x, y, label = names, colour = category, hjust = 0), size = 3) +
  ggplot2::coord_flip() +
  ggplot2::scale_y_reverse(expand = c(.2, 0)) +
  ggdendro::theme_dendro()

clust-1

LDA(Latent Dirichlet Allocation)

LDAについてはquanteda::convertでdfmを変換してtopicmodels::LDAに直接渡すこともできます。公式のクイックスタートガイドも参考にしてください。weighted LDAなどの実装を含むkeyATMといった選択肢もあります。

なお、トピック数は9に決め打ちしています。トピック数含めパラメタの探索をしたい場合には、ldatuningstmなどを利用したほうがよいです。

dtm <- corp %>%
  quanteda::tokens(what = "word") %>%
  quanteda::tokens_remove(stopwords, valuetype = "fixed") %>%
  quanteda::dfm() %>%
  quanteda::dfm_tfidf()

features <- corp %>%
  quanteda::tokens(what = "word") %>%
  quanteda::tokens_remove(stopwords, valuetype = "fixed") %>%
  quanteda::dfm() %>%
  quanteda::ntoken()

m <- dtm %>%
  as("dgCMatrix") %>%
  textmineR::FitLdaModel(k = 9, iterations = 200, burnin = 175)

m$phi %>%
  textmineR::GetTopTerms(15L) %>%
  knitr::kable()
t_1 t_2 t_3 t_4 t_5 t_6 t_7 t_8 t_9
当選 小沢 コモ 男性 録画 韓国 ソフトウェア ゴルフ
選手 クリスマス sh ipv アップデート 転職
ケア 試合 吉田 フォン 占い ビデオ akb 画面
韓国 t カフェ スマート モテ ビューアー ダウンロード 年収
効果 野村 野菜 phone 子ども ノート 表示 入力
成分 なでしこ 料理 galaxy 充電 出演 利用 虎の巻
宇宙 ブランド htc 友人 usb 監督 書籍 表示
マスク 監督 ドバイ バッテリー まし 電力 演じる サービス iphone
クリーム 田中 ニック aquos 話題 48 ソフト
香り サッカー ファッション ひとり iphone 主演 機能 excel
コスメ ガール 搭載 メール ipad 劇場 携帯 タップ
河本 コス オー android 調査 ultrabook movie メール クリック
イーライ 母親 レビュー 試写 windows ビジネス
時計 栄子 ホテル 06 出会い キーボード アクション 端末 文字
トレーニング 代表 クルマ smax 年齢 salon アカデミー 電子 リスト

LDAvisで可視化してみます。ただ、LDAvisはもうしばらくメンテナンスされていないパッケージで、ちょっと挙動があやしいところがあります。たとえば、デフォルトロケールがCP932であるWindows環境の場合、LDAvis::createJSONで書き出されるラベル(vocab)のエンコーディングがそっちに引きずられてCP932になってしまうため、ブラウザで表示したときにラベルが文字化けします。書き出されたlda.jsonをUTF-8に変換すれば文字化けは解消されるので、とりあえずあとから変換して上書きするとよいです。

suppressWarnings({
  LDAvis::createJSON(
    phi = m$phi,
    theta = m$theta,
    doc.length = features,
    vocab = stringi::stri_enc_toutf8(dtm@Dimnames$features),
    term.frequency = quanteda::colSums(dtm)
  ) %>%
    LDAvis::serVis(open.browser = FALSE, out.dir = file.path(getwd(), "cache/ldavis"))
})

readr::read_lines_raw(file.path(getwd(), "cache/ldavis", "lda.json")) %>%
  iconv(from = "CP932", to = "UTF-8") %>%
  jsonlite::parse_json(simplifyVector = TRUE) %>%
  jsonlite::write_json(file.path(getwd(), "cache/ldavis", "lda.json"), dataframe = "columns", auto_unbox = TRUE)

LDAvis

GloVe

ここでは50次元の埋め込みを得ます。

toks <- corp %>%
  quanteda::tokens(what = "word") %>%
  as.list() %>%
  text2vec::itoken()

vocab <- toks %>%
  text2vec::create_vocabulary() %>%
  text2vec::prune_vocabulary(term_count_min = 10L)

vectorize <- text2vec::vocab_vectorizer(vocab)

tcm <- text2vec::create_tcm(
  it = toks,
  vectorizer = vectorize,
  skip_grams_window = 5L
)

glove <- text2vec::GlobalVectors$new(
  rank = 50,
  x_max = 15L
)

wv <- glove$fit_transform(
  x = tcm,
  n_iter = 10L
) %>%
  as.data.frame(stringsAsFactors = FALSE) %>%
  tibble::as_tibble(.name_repair = "minimal", rownames = NA)
#> INFO  [21:04:40.364] epoch 1, loss 0.1814 
#> INFO  [21:04:42.002] epoch 2, loss 0.1063 
#> INFO  [21:04:43.651] epoch 3, loss 0.0888 
#> INFO  [21:04:45.242] epoch 4, loss 0.0785 
#> INFO  [21:04:46.878] epoch 5, loss 0.0717 
#> INFO  [21:04:48.460] epoch 6, loss 0.0667 
#> INFO  [21:04:50.077] epoch 7, loss 0.0629 
#> INFO  [21:04:51.703] epoch 8, loss 0.0599 
#> INFO  [21:04:53.328] epoch 9, loss 0.0575 
#> INFO  [21:04:54.920] epoch 10, loss 0.0554

umapで次元を減らして可視化します。色はstats::kmeansでクラスタリング(コサイン類似度)して付けています。

pull_layout <- function(tbl) {
  umap <- umap::umap(as.matrix(tbl))
  layout <- umap$layout
  rownames(layout) <- rownames(tbl)
  return(as.data.frame(layout))
}

vec <- vocab %>%
  dplyr::anti_join(
    y = tibble::tibble(words = stopwords),
    by = c("term" = "words")
  ) %>%
  dplyr::arrange(desc(term_count)) %>%
  dplyr::slice_head(n = 100L) %>%
  dplyr::left_join(tibble::rownames_to_column(wv), by = c("term" = "rowname")) %>%
  tibble::column_to_rownames("term") %>%
  dplyr::select(starts_with("V"))

dist <- proxyC::simil(as(as.matrix(vec), "dgCMatrix"), method = "cosine")
clust <- kmeans(x = dist, centers = 9)
vec <- pull_layout(vec) %>%
  tibble::rownames_to_column() %>%
  dplyr::mutate(cluster = as.factor(clust$cluster))

vec %>%
  ggplot2::ggplot(aes(x = V1, y = V2, colour = cluster)) +
  ggplot2::geom_point() +
  ggrepel::geom_text_repel(aes(label = rowname)) +
  ggplot2::theme_light()

umap-1

セッション情報

sessioninfo::session_info()
#> - Session info -------------------------------------------------------------------------------
#>  setting  value                       
#>  version  R version 4.0.2 (2020-06-22)
#>  os       Windows 10 x64              
#>  system   x86_64, mingw32             
#>  ui       RStudio                     
#>  language (EN)                        
#>  collate  Japanese_Japan.932          
#>  ctype    Japanese_Japan.932          
#>  tz       Asia/Tokyo                  
#>  date     2021-09-05                  
#> 
#> - Packages -----------------------------------------------------------------------------------
#>  !  package             * version     date       lib source                                
#>  P  abind                 1.4-5       2016-07-21 [?] CRAN (R 4.0.3)                        
#>  P  askpass               1.1         2019-01-13 [?] CRAN (R 4.0.2)                        
#>  P  assertthat            0.2.1       2019-03-21 [?] CRAN (R 4.0.2)                        
#>  P  backports             1.2.1       2020-12-09 [?] CRAN (R 4.0.3)                        
#>  P  bit                   4.0.4       2020-08-04 [?] CRAN (R 4.0.5)                        
#>  P  bit64                 4.0.5       2020-08-30 [?] CRAN (R 4.0.5)                        
#>  P  broom                 0.7.9       2021-07-27 [?] CRAN (R 4.0.5)                        
#>  P  cachem                1.0.6       2021-08-19 [?] CRAN (R 4.0.5)                        
#>  P  car                   3.0-11      2021-06-27 [?] CRAN (R 4.0.5)                        
#>  P  carData               3.0-4       2020-05-22 [?] CRAN (R 4.0.3)                        
#>  P  cellranger            1.1.0       2016-07-27 [?] CRAN (R 4.0.2)                        
#>  P  cli                   3.0.1       2021-07-17 [?] CRAN (R 4.0.5)                        
#>  P  coda                  0.19-4      2020-09-30 [?] CRAN (R 4.0.5)                        
#>  P  codetools             0.2-18      2020-11-04 [?] CRAN (R 4.0.3)                        
#>  P  colorspace            2.0-2       2021-06-24 [?] CRAN (R 4.0.2)                        
#>  P  crayon                1.4.1       2021-02-08 [?] CRAN (R 4.0.2)                        
#>  P  curl                  4.3.2       2021-06-23 [?] CRAN (R 4.0.5)                        
#>  P  data.table            1.14.0      2021-02-21 [?] CRAN (R 4.0.2)                        
#>  P  DBI                   1.1.1       2021-01-15 [?] CRAN (R 4.0.5)                        
#>  P  dbplyr                2.1.1       2021-04-06 [?] CRAN (R 4.0.5)                        
#>  P  digest                0.6.27      2020-10-24 [?] CRAN (R 4.0.3)                        
#>  P  dplyr               * 1.0.7       2021-06-18 [?] CRAN (R 4.0.5)                        
#>  P  ellipsis              0.3.2       2021-04-29 [?] CRAN (R 4.0.2)                        
#>  P  evaluate              0.14        2019-05-28 [?] CRAN (R 4.0.2)                        
#>  P  fansi                 0.5.0       2021-05-25 [?] CRAN (R 4.0.5)                        
#>  P  farver                2.1.0       2021-02-28 [?] CRAN (R 4.0.2)                        
#>  P  fastmap               1.1.0       2021-01-25 [?] CRAN (R 4.0.3)                        
#>  P  fastmatch             1.1-3       2021-07-23 [?] CRAN (R 4.0.5)                        
#>  P  float                 0.2-4       2020-04-22 [?] CRAN (R 4.0.3)                        
#>  P  forcats             * 0.5.1       2021-01-27 [?] CRAN (R 4.0.5)                        
#>  P  foreach               1.5.1       2020-10-15 [?] CRAN (R 4.0.3)                        
#>  P  foreign               0.8-80      2020-05-24 [?] CRAN (R 4.0.2)                        
#>  P  fs                    1.5.0       2020-07-31 [?] CRAN (R 4.0.2)                        
#>  P  generics              0.1.0       2020-10-31 [?] CRAN (R 4.0.3)                        
#>  P  ggdendro              0.1.22      2020-09-13 [?] CRAN (R 4.0.5)                        
#>  P  ggplot2             * 3.3.5       2021-06-25 [?] CRAN (R 4.0.5)                        
#>  P  ggpubr                0.4.0       2020-06-27 [?] CRAN (R 4.0.5)                        
#>  P  ggrepel               0.9.1       2021-01-15 [?] CRAN (R 4.0.5)                        
#>  P  ggsignif              0.6.2       2021-06-14 [?] CRAN (R 4.0.5)                        
#>  P  glmnet                4.1-2       2021-06-24 [?] CRAN (R 4.0.5)                        
#>  P  glue                  1.4.2       2020-08-27 [?] CRAN (R 4.0.2)                        
#>  P  gridExtra             2.3         2017-09-09 [?] CRAN (R 4.0.5)                        
#>  P  gtable                0.3.0       2019-03-25 [?] CRAN (R 4.0.2)                        
#>  P  haven                 2.4.3       2021-08-04 [?] CRAN (R 4.0.5)                        
#>  P  highr                 0.9         2021-04-16 [?] CRAN (R 4.0.5)                        
#>  P  hms                   1.1.0       2021-05-17 [?] CRAN (R 4.0.5)                        
#>  P  htmltools             0.5.2       2021-08-25 [?] CRAN (R 4.0.5)                        
#>  P  httpuv                1.6.2       2021-08-18 [?] CRAN (R 4.0.5)                        
#>  P  httr                  1.4.2       2020-07-20 [?] CRAN (R 4.0.2)                        
#>  P  iterators             1.0.13      2020-10-15 [?] CRAN (R 4.0.3)                        
#>  P  jsonlite              1.7.2       2020-12-09 [?] CRAN (R 4.0.3)                        
#>  P  knitr                 1.33        2021-04-24 [?] CRAN (R 4.0.5)                        
#>  P  labeling              0.4.2       2020-10-20 [?] CRAN (R 4.0.3)                        
#>  P  later                 1.3.0       2021-08-18 [?] CRAN (R 4.0.5)                        
#>  P  lattice               0.20-44     2021-05-02 [?] CRAN (R 4.0.5)                        
#>  P  LDAvis                0.3.2       2015-10-24 [?] CRAN (R 4.0.5)                        
#>  P  ldccr                 0.0.6       2021-08-31 [?] Github (paithiov909/ldccr@5907848)    
#>  P  lgr                   0.4.2       2021-01-10 [?] CRAN (R 4.0.5)                        
#>  P  LiblineaR             2.10-12     2021-03-02 [?] CRAN (R 4.0.5)                        
#>  P  lifecycle             1.0.0       2021-02-15 [?] CRAN (R 4.0.2)                        
#>  P  lubridate             1.7.10      2021-02-26 [?] CRAN (R 4.0.5)                        
#>  P  magrittr              2.0.1       2020-11-17 [?] CRAN (R 4.0.3)                        
#>  P  MASS                  7.3-54      2021-05-03 [?] CRAN (R 4.0.5)                        
#>  P  Matrix                1.3-4       2021-06-01 [?] CRAN (R 4.0.5)                        
#>  P  memoise               2.0.0       2021-01-26 [?] CRAN (R 4.0.3)                        
#>  P  mlapi                 0.1.0       2017-12-17 [?] CRAN (R 4.0.5)                        
#>  P  modelr                0.1.8       2020-05-19 [?] CRAN (R 4.0.5)                        
#>  P  munsell               0.5.0       2018-06-12 [?] CRAN (R 4.0.2)                        
#>  P  network               1.17.1      2021-06-14 [?] CRAN (R 4.0.5)                        
#>  P  nsyllable             1.0         2020-11-30 [?] CRAN (R 4.0.5)                        
#>  P  openssl               1.4.5       2021-09-02 [?] CRAN (R 4.0.2)                        
#>  P  openxlsx              4.2.4       2021-06-16 [?] CRAN (R 4.0.5)                        
#>  P  pillar                1.6.2       2021-07-29 [?] CRAN (R 4.0.5)                        
#>  P  pkgconfig             2.0.3       2019-09-22 [?] CRAN (R 4.0.2)                        
#>  P  png                   0.1-7       2013-12-03 [?] CRAN (R 4.0.3)                        
#>  P  promises              1.2.0.1     2021-02-11 [?] CRAN (R 4.0.2)                        
#>  P  proxy                 0.4-26      2021-06-07 [?] CRAN (R 4.0.5)                        
#>  P  proxyC                0.2.1       2021-09-02 [?] CRAN (R 4.0.2)                        
#>  P  purrr               * 0.3.4       2020-04-17 [?] CRAN (R 4.0.2)                        
#>  P  quanteda            * 3.1.0       2021-08-17 [?] CRAN (R 4.0.5)                        
#>  P  quanteda.textmodels   0.9.4       2021-04-06 [?] CRAN (R 4.0.5)                        
#>  P  quanteda.textplots    0.94        2021-04-06 [?] CRAN (R 4.0.5)                        
#>  P  quanteda.textstats    0.94.1      2021-05-11 [?] CRAN (R 4.0.5)                        
#>  P  R.cache               0.15.0      2021-04-30 [?] CRAN (R 4.0.5)                        
#>  P  R.methodsS3           1.8.1       2020-08-26 [?] CRAN (R 4.0.2)                        
#>  P  R.oo                  1.24.0      2020-08-26 [?] CRAN (R 4.0.2)                        
#>  P  R.utils               2.10.1      2020-08-26 [?] CRAN (R 4.0.2)                        
#>  P  R6                    2.5.1       2021-08-19 [?] CRAN (R 4.0.5)                        
#>  P  Rcpp                  1.0.7       2021-07-07 [?] CRAN (R 4.0.5)                        
#>  P  RcppMeCab             0.0.1.3.900 2021-08-29 [?] Github (paithiov909/RcppMeCab@208f1de)
#>  PD RcppParallel          5.1.4       2021-05-04 [?] CRAN (R 4.0.5)                        
#>  P  RcppProgress          0.4.2       2020-02-06 [?] CRAN (R 4.0.5)                        
#>  P  readr               * 2.0.1       2021-08-10 [?] CRAN (R 4.0.5)                        
#>  P  readxl                1.3.1       2019-03-13 [?] CRAN (R 4.0.2)                        
#>     renv                  0.14.0      2021-07-21 [1] CRAN (R 4.0.5)                        
#>  P  reprex                2.0.1       2021-08-05 [?] CRAN (R 4.0.5)                        
#>  P  reticulate            1.20        2021-05-03 [?] CRAN (R 4.0.5)                        
#>  P  RhpcBLASctl           0.21-247    2021-09-04 [?] CRAN (R 4.0.2)                        
#>  P  rio                   0.5.27      2021-06-21 [?] CRAN (R 4.0.5)                        
#>  P  RJSONIO               1.3-1.5     2021-08-17 [?] CRAN (R 4.0.5)                        
#>  P  rlang                 0.4.11      2021-04-30 [?] CRAN (R 4.0.5)                        
#>  P  rmarkdown             2.10        2021-08-06 [?] CRAN (R 4.0.5)                        
#>  P  rsparse               0.4.0       2020-04-01 [?] CRAN (R 4.0.5)                        
#>  P  RSpectra              0.16-0      2019-12-01 [?] CRAN (R 4.0.5)                        
#>  P  rstatix               0.7.0       2021-02-13 [?] CRAN (R 4.0.5)                        
#>  P  rstudioapi            0.13        2020-11-12 [?] CRAN (R 4.0.3)                        
#>  P  rtweet                0.7.0       2020-01-08 [?] CRAN (R 4.0.5)                        
#>  P  rvest                 1.0.1       2021-07-26 [?] CRAN (R 4.0.5)                        
#>  P  scales                1.1.1       2020-05-11 [?] CRAN (R 4.0.2)                        
#>  P  servr               * 0.23        2021-08-11 [?] CRAN (R 4.0.5)                        
#>  P  sessioninfo           1.1.1       2018-11-05 [?] CRAN (R 4.0.2)                        
#>  P  shape                 1.4.6       2021-05-19 [?] CRAN (R 4.0.5)                        
#>  P  sna                   2.6         2020-10-06 [?] CRAN (R 4.0.5)                        
#>  P  SparseM               1.81        2021-02-18 [?] CRAN (R 4.0.4)                        
#>  P  statnet.common        4.5.0       2021-06-05 [?] CRAN (R 4.0.5)                        
#>  P  stopwords             2.2         2021-02-10 [?] CRAN (R 4.0.5)                        
#>  P  stringi               1.7.4       2021-08-25 [?] CRAN (R 4.0.5)                        
#>  P  stringr             * 1.4.0       2019-02-10 [?] CRAN (R 4.0.2)                        
#>  P  styler                1.5.1       2021-07-13 [?] CRAN (R 4.0.5)                        
#>  P  survival              3.2-13      2021-08-24 [?] CRAN (R 4.0.5)                        
#>  P  text2vec              0.6         2020-02-18 [?] CRAN (R 4.0.5)                        
#>  P  textmineR             3.0.5       2021-06-28 [?] CRAN (R 4.0.5)                        
#>  P  tibble              * 3.1.4       2021-08-25 [?] CRAN (R 4.0.5)                        
#>  P  tidyr               * 1.1.3       2021-03-03 [?] CRAN (R 4.0.5)                        
#>  P  tidyselect            1.1.1       2021-04-30 [?] CRAN (R 4.0.2)                        
#>  P  tidyverse           * 1.3.1       2021-04-15 [?] CRAN (R 4.0.5)                        
#>  P  tzdb                  0.1.2       2021-07-20 [?] CRAN (R 4.0.5)                        
#>  P  umap                  0.2.7.0     2020-11-04 [?] CRAN (R 4.0.5)                        
#>  P  utf8                  1.2.2       2021-07-24 [?] CRAN (R 4.0.5)                        
#>  P  vctrs                 0.3.8       2021-04-29 [?] CRAN (R 4.0.2)                        
#>  P  viridis               0.6.1       2021-05-11 [?] CRAN (R 4.0.5)                        
#>  P  viridisLite           0.4.0       2021-04-13 [?] CRAN (R 4.0.5)                        
#>  P  vroom                 1.5.4       2021-08-05 [?] CRAN (R 4.0.5)                        
#>  P  withr                 2.4.2       2021-04-18 [?] CRAN (R 4.0.5)                        
#>  P  xfun                  0.25        2021-08-06 [?] CRAN (R 4.0.5)                        
#>  P  xml2                  1.3.2       2020-04-23 [?] CRAN (R 4.0.2)                        
#>  P  yaml                  2.2.1       2020-02-01 [?] CRAN (R 4.0.0)                        
#>  P  zip                   2.2.0       2021-05-31 [?] CRAN (R 4.0.5)                        
#>  P  zipangu               0.2.3.9000  2021-08-31 [?] Github (uribo/zipangu@316afb3)        
#> 
#> [1] C:/Users/user/Documents/GitHub/nlp-using-r/renv/library/R-4.0/x86_64-w64-mingw32
#> [2] C:/Users/user/AppData/Local/Temp/RtmpS6Xtgn/renv-system-library
#> 
#>  P -- Loaded and on-disk path mismatch.
#>  D -- DLL MD5 mismatch, broken installation.
GitHubで編集を提案

Discussion

ログインするとコメントできます