京橋のバイオインフォマティシャンの日常

南国のビーチパラソルの下で、Rプログラムを打ってる日常を求めて、、Daily Life of Bioinformatician in Kyobashi of Osaka

テキスト解析ワークフローをまとめてみた件

テキスト解析で考慮すべき13のポイント【随時更新予定】

No 大項目 小項目 DB / Tools 備考
1 タスク選定 テキストマイニング / 固有表現認識 (NER) / その他
2 言語 英語 / 日本語 / (機械)翻訳された文章 / その他 機械翻訳: Python/Googletrans, DeepL 英: アクセス可能なWebソースが多い
日: 全体の2%程度
3 対象条件 期間 / 地域
4 情報ソース 論文 / 特許 / SNS / Web / 書籍 / その他 Google / Google Scholar / PubMed / Twitter / Yahoo
5 データ取得方法 キーワード検索 / LOD・RDFダンプ / Webスクレイピング / PDFファイル / OCR / 書籍 / その他 PubMed: R/RISmed
Webスクレイピング: R/Rselenium, R/rvest
DB: Wikipedia, Wikidata
6 データ形式 テキスト / キーワード / 画像 / 図表 テキスト: 一次情報
キーワード: 要約情報、キュレーション有り(二次情報)
7 取得データサイズ バイトサイズ / ファイル数 / ページ数
8 データの質 動的データ(データ取得の再現性) / 静的データ / クオリティ(誤字・脱字)
9 前処理 フィルタリング(除外要件) / リサンプリング (再抽出) / データクレンジング
10 NLP (自然言語処理) エンティティリンキング / 形態素解析 / 文字列距離 / 文節係受け解析 / 複合語解析 / 意味解釈 / 機械学習 (形態素解析)
英語: TreeTagger, nltk, R/koRpus, R/nltk4r
日本語: MeCab/RMeCab, Suadachi/Suadachipy, JUMAN, ChaSen
中国語: NLPIR
多言語: MTMineR, TreeTagger
11 後処理 (post-NLP)
12 二次的データ解析 テキストマイニング / 機械学習 ワードクラウド: R/wordcloud2
共起解析: R/cooccur, R/RMeCab
ネットワーク作図: R/igraph, R/visNetwork
特徴量解析: Python/word2vec, R/wordVectors
DL: Keras/Tensorflow, PyTorch
テキストマイニング: テキストデータから有益な情報・知識を取り出す技術の総称
13 評価・解釈

Rプログラム

今回、上記のテーブルを作成するにあたり、 gistファイルを読み込んで、knitr::kableのpipをCSV出力してみた。

次に、file.csvをエクセルで開いて、はてなブログにコピペした。

以下、Rプログラムを示す。

#パッケージのインストール
install.packages(c("knitr", "magrittr", "readr"))

#パッケージのロード
library(knitr)
library(magrittr)
library(readr)

#データロード
Dat <- readr::read_csv("https://gist.githubusercontent.com/kumeS/d714a366f869be19afa321382f863c95/raw/71c375551403a912dbe189b5e2385c83b0eb91d3/textAnalysisWorkflow.csv")
Dat[is.na(Dat)] <- ""
CaptionText <- "テキスト解析で考慮すべき13のポイント【随時更新予定】"

#pipテーブルの表示
Dat %>%
  head() %>%
  knitr::kable(format = "pipe", booktabs = T,
    caption = CaptionText, 
    align = c("c", "l", "l", "l", "l"))
Dat0 <- as.data.frame(Dat)

#フォントサイズを小さく
Size <- 40
for(n in 1:nrow(Dat)){
for(m in 2:ncol(Dat)){
if(Dat0[n, m] != ""){
 Dat0[n, m]  <- paste0('<span style="font-size: ', Size, '%">', Dat[n, m], '</span>')    
}}}

#pipテーブルの作成
Dat0 %>%
  knitr::kable(format = "pipe", booktabs = T,
    caption = CaptionText, 
    align = c("c", "l", "l", "l", "l")) %>%
  as.character() %>%
  as.data.frame() %>%
  readr::write_excel_csv(file="file.csv")