2016年5月4日水曜日

Rでtwitterの検索結果から同表記異義語をフィルタする その3 集計とRStudio Projectファイル

この記事はRでtwitterの検索結果から同表記異義語をフィルタする その2 Wikipediaの記事抽出のつづきです。

対象となる文書が集められたら、あとは集計するのみ。

各クラスを特徴づける語彙のスコアを算出する

RMeCabパッケージの docMatrix 関数を使用した。想像以上に簡単。

tf_idf <- docMatrix(WIKIPEDIA_CONTENT_DIR, weight="tf*idf")

データフレームから関心のない列を取り除く

Rの intersect(arg1, arg2) 関数を使い、arg1arg2双方に存在する文字列を名前にもつ列だけを取り出す。

tf_idf <- tf_idf[,intersect(colnames(tf_idf),kTargetClasses)]

データフレームにおいて特定の行名を持つ列のデータを操作する

tf_idf[Term=target_word,] <- (tf_idf[Term=target_word,] * 0)

結果

そのクラスに所属する確度(全クラスのスコアの合計で正規化した値)に対しヒューリスティックに設定した値(0.27)でフィルタリングした結果。検索結果に含まれるツイートを一つ一つ人手で分類するよりかは生産性が高そう。

GitHubで公開したRStudio Projectファイルについて

今回作成したRファイルをGitHubで公開しました。
twitter-word-sense-disambiguation-w-tf-idf-of-wikipedia
constants.Rファイルを編集すると、お好きなキーワードで試すことができます。使い方についてはREADME.mdファイルとこの連載記事(初回)を参考にしてください。

課題

  • Wikipediaに記事がない地味に有名な固有名詞は識別することができない。
  • 抽出したい意味が、他の同表記語と比べて明らかに違う分類(例:抽出対象は地名で、他の同表記語は人名など)である場合、格フレームを活用した分類も有効に働くのではないか。

備忘

  • Rのapply関数便利。cbind等でテーブルを作ろうとすると、matrixができあがる。matrixだと複数のデータタイプを持たせるのに向いてない(numericだったmatrixに文字列から構成されるmatrixをcbindすると、numericだったデータがfactor型になって不等号を使用したフィルタリングができなくなる)
  • 1行のみのデータに対しapplyを掛けたいときはlapply関数(list-apply?)を使用する。applyを使おうとすると次元数が足りないというエラーが出力されて止まる。

0 件のコメント:

コメントを投稿