読者です 読者をやめる 読者になる 読者になる

MeCabで区切った単語を再びつなげる

MeCab R 自然言語処理

先週は形態素解析なアプローチじゃなくて、特長語抽出のような感じで専門用語が取り出せないかなーとやっていた。
www.yasuhisay.info
が、YamChaの使い方がよく分からない&使うツールの中身が今の自分にとってはブラックボックスすぎる、ということで形態素解析ベースでどうにかしようということにしました。

今だと「蛋白質」が「蛋白」と「質」に分解されてしまうような感じで、(MeCab|Chasen)によく形態素解析だと細かく区切られすぎています(一般語に対してはいいのかもだけど、専門的なのだと組み合わせたやつで単語になっていて欲しかったりする)。が、細かい分にはつなげなおしてあげればいいじゃん、ということで繋げることにしました。専門用語だと名詞+名詞な繋がりが多いかなーということで、名詞のsequenceを抽出するようにしました。「私」とかMeCabにそのままあるようなやつはfilterして除外しています。ということでやるためのスクリプト。ディレクトリ配下にある500個くらいのテキストに対して処理をしています。

library(RMeCab)
setwd("~/Desktop")
install.packages("RMeCab_0.79.tgz",destdir=".",repos=NULL)
library(RMeCab)

joined_words <- function(file,exclusive_list = c(".",",","(",")",":","^",").")){
  meisi <- c()
  word_sequence <- ""
  previous_word <- ""
  previous_part_of_speech <- "" # 前の品詞
  
  for(x in RMeCabText(file)){
    if(is.null(x)) next # NULLが入っていることがある
    if(x[2] == "名詞" && !any(exclusive_list == x[1])){ 
      if(previous_part_of_speech == "名詞"){ # 名詞のsequenceになっている場合
        previous_word <-  paste(previous_word,x[1],sep="")
      }
    }else{
      if(previous_word != ""){
        meisi <- c(meisi, previous_word) # 今の単語の品詞が名詞じゃなかったら前の名詞のやつを突っ込む
      }
      previous_word <- ""
    }
    previous_part_of_speech <- x[2]
  }
  return(meisi)
}

meisi <- c()
path <- "/Users/syou6162/dbcls/pne/2006/"

for(file in list.files(path)){
  print(paste(path,file,sep=""))
  meisi <- c(meisi,joined_words(paste(path,file,sep="")))
}

で、結果の名詞のsequenceで登場回数の多いのを出してみた結果がこれ。

> tail(sort(result),n=100)

                H3           質複合体             小胞体             組換え 
                27                 27                 27                 27 
        電子顕微鏡               膜孔         膜孔複合体         -codingRNA 
                27                 27                 27                 28 
          構造解析               軸索           生殖細胞             体分配 
                28                 28                 28                 28 
          制御機構           生命現象             内局在           膜蛋白質 
                29                 29                 29                 29 
    クロマチン構造             癌細胞             状突起               食胞 
                30                 30                 30                 30 
              線虫                M期               図1a           前駆細胞 
                30                 31                 31                 31 
          動物細胞             特異性                p53     外マトリックス 
                31                 31                 32                 32 
          減数分裂             次構造 ツーハイブリッド法             遺伝学 
                32                 32                 33                 33 
            後修飾       蛋白質合成系              Cdc42                 E2 
                33                 33                 34                 34 
              年前               量体             生体内           変性疾患 
                34                 34                 35                 35 
          メチル化             化酵素             根粒菌           相互作用 
                36                 36                 36                 36 
        遺伝子発現             末端側     IIユビキチン系        Sリボソーム 
                37                 37                 38                 38 
            一般的             的役割           生命科学           細胞分裂 
                38                 38                 39                 40 
            変異体  -プロテアソーム系           リン酸化           転写因子 
                40                 41                 41                 41 
            最終的                表1       ユビキチン化           分裂酵母 
                44                 44                 46                 46 
            質合成                 -2             質分解           神経細胞 
                47                 48                 48                 48 
            活性化             ES細胞               核膜           ヒストン 
                49                 50                 50                 514               番目             依存的             細胞核 
                51                 51                 52                 53 
            細胞膜                 -1    Sプロテアソーム                図3 
                53                 54                 57                 58 
          アクチン             特異的             研究室         結合蛋白質 
                59                 62                 63                 64 
                E3         質核酸酵素           細胞周期             生物学 
                65                 65                 70                 81 
            微小管             研究者             細胞質             受容体 
                81                 91                 98                 99 
            幹細胞               核内           出芽酵母                図2 
               105                106                109                112 
    オートファジー             染色体             複合体               残基 
               134                134                153                163 
            細胞内                図1             筆者ら             蛋白質 
               193                205                308                847 

割と生物系っぽい単語が抽出できてはいるんだけど、多少のゴミは混ざっている。あと「(数字)-hogehoge」みたいなやつの数字が落ちてしまったりしている(なんでだ。。。)ので、その辺をどうにかしないと。

pne20年分のテキストだとこんな感じになった。思ったよりは時間かからないなー。もうちょいテキスト食わせてもいいかもしれないと思ったけど、あんまり変わらないかも。

> tail(sort(result),n=100)

  間相互作用     制御機構         産生     培養細胞   http://www       依存性 
         271          273          277          279          280          281 
    細胞分裂        B細胞         小胞     哺乳動物         TGF-     伝達経路 
         281          283          286          286          290          290 
      癌細胞   研究テーマ   遺伝子産物       変異体       細胞死           -3 
         291          291          292          293          294          297 
      依存的       小胞体       細胞外       組換え      本鎖DNA       質合成 
         297          298          299          299          300          301 
         p53     転移酵素       的解析     結合部位     伝達物質 結合ドメイン 
         304          305          307          308          310          312 
    分裂酵母       分子量 アミノ酸配列     動物細胞         膜上     リンパ球 
         312          317          327          331          334          337 
        核内     膜蛋白質     電気泳動       的研究       葉緑体     相互作用 
         338          342          344          355          355          3565         年前         機序         カ所       研究室     リン酸化 
         358          358          367          368          368          375 
      一般的         体上   遺伝子発現        2量体       遺伝学     塩基配列 
         376          376          378          388          389          391 
        線虫       的役割       基本的     構造解析           _2         緑体 
         391          401          417          444          447          452 
      芽細胞 サブユニット       生体内       細胞質       細胞膜     転写因子 
         470          472          479          487          488          503 
      化合物     出芽酵母          図4   結合蛋白質       最終的         糖鎖 
         515          524          526          541          546          546 
    細胞周期        T細胞          表1       伝達系       末端側         番目 
         553          563          565          571          572          583 
      神経系         量体     神経細胞       幹細胞          図3           -2 
         622          632          647          660          689          741 
      特異性       次構造       特異的       活性化       生物学       複合体 
         771          784          793          809          861          8772       研究者           -11       細胞内       染色体 
         911          951         1462         1503         1590         1611 
      受容体         残基       筆者ら       蛋白質 
        1680         1780         3951        10424 

既存の研究

なんか探していたら同じようなアプローチのやつが東大のところでやられているらしい。Perlのモジュールとしてすでにあるっぽいけど、とりあえず自分で作ってやってみることにしようーっと。