荷物持ちでも構わない

文系大学4年生からデータサイエンティストを目指して頑張りつつ、書きたいことを書きたいときに書きたいだけ書く、ルール無用雑記ブログ。

MENU

Excelで正規表現検索・置換ができるアドインでデータ加工を効率化

昨日の記事(KHCoderを使って文章の形態素解析とクラスタリングをやってみた)では、KHCoderというフリーソフトを使って、各新聞社の社説を形態素解析してクラスタリングするという、テキストマイニングの一連の流れをやってみた。

僕はテキストマイニングについては完全に全く誰からも教わったことのないド素人なので、ここまでできただけでも自分としては上出来なのだが、実は目標はさらに先にある。

というのも、そもそもテキストマイニングの勉強を始めたのが卒論の研究のためで、最終的にはツイッターからAPIを叩いてツイートを取得し、それを元に形態素解析とクラスタリングをしなければいけないのだ。

昨日の記事で練習に使った文章は、新聞の社説なので、プロの記者が書いた綺麗な日本語を元にしている。

が、ツイッターから取ってきたツイートでテキストマイニングをしようとすると、ユーザーID(@〇〇〇〇)が入っていたり、リンクURLが入っていたりと、テキストマイニングをするにあたって邪魔になるゴミが大量についてくる。

今回は、エクセルのアドインを使って、ツイート本文についてくるゴミを綺麗に取り除き、テキストマイニングがしやすいように加工してみようという記事。

SHARPのツイートを使ってテキストマイニングしたい

今回使うのは、最近台湾資本の鴻海に買収されたことでもおなじみ、SHARPの公式ツイッターアカウントのツイート。

Rを使ってツイッターのAPIを叩いて取得した、最新2000ツイートを材料としてテキストマイニングを行う。

RでツイッターのAPIを叩く方法については、また別の機会に解説記事を書こうと思うが、調べればその辺に情報がたくさん転がっていると思うので調べてみてほしい。

一応2ヶ月ほど前にツイッターのAPIの仕様変更について触れた記事を書いているが、ツイッターのAPI使用は日に日に厳しくなっているようなので、今どうなっているかはわからない。

www.messyer813.com

 

で、話を戻して、SHARP公式アカウントのツイートだが、取得した2000ツイートの一部をお見せすると、こんな感じになっている。

f:id:messyer813:20180831184250p:plain

SHARP公式ツイッターと言えば、大企業の公式アカウントとは思えないような自由すぎるツイートと、一般ユーザーとの盛んなやり取りが特徴だ。

そのため、画像を見てもらえばわかるように、「@〇〇〇〇」で始まるリプライが非常に多い。

また、その他にも、ツイートに画像を貼っていると画像へのリンクURLが入ってしまうし、画像ではなく普通に他のページへ飛ばすためのリンクURLも入っている。

さらには、恐らく絵文字が変換されていると思われる、謎の英数字(<U+009F>など)まで入ってしまっている。

これが全部で2000ツイートもあるので、手作業で全部取り除こうと思ったら何日かかるかわからない。

しかも、卒論のための研究本番では、SHARPだけでなくいろいろな企業のアカウントで同じことをやらなければいけない。

そこで登場するのが、今回紹介する、エクセルで正規表現を使った検索ができるようになるアドインである。

エクセルで正規表現を使った検索・置換ができるアドイン

今回紹介するのは、Excel用正規表現検索ダイアログアドインというエクセルのアドイン。

これをインストールすることで、エクセルで正規表現を使った検索・置換ができるようになるのだ。

正規表現って何?」という人向けに、上記サイトに記載されている正規表現についての説明を引用する。

正規表現とは
文字列をパターンとして表現する方法で、これを駆使すると複雑な条件で検索、置換を行うことができます。*1

というわけで、正規表現を使うことで、従来のエクセルで可能な検索・置換よりも柔軟に検索・置換が行えるようになり、文字列データの加工が簡単になるのだ。

Excel用正規表現検索ダイアログアドインのインストール

Excel用正規表現検索ダイアログアドインのインストール方法については、基本的には配布元のサイトに全て丁寧に書いてあるので、これに従って操作するだけで導入できる。

正規表現検索のインストールとアンインストール

ただし情報が古く、解説に使われているのがExcel2003なので、最新のExcel2016と食い違う部分が多少あるので、そこだけ補足しておく。

具体的には、マクロに対するセキュリティ設定の部分。

配布元サイトでは、「セキュリティレベルを中にする」という説明がされているが、Excel2016ではセキュリティレベルという項目がそもそもない。

ではどうするかというと、ツールバーの「ファイル」→「オプション」から、「セキュリティセンター」という項目を選ぶ。

f:id:messyer813:20180831190344p:plain

 

そして、セキュリティセンターを開いたら、「マクロの設定」から、「デジタル署名されたマクロを除き、全てのマクロを無効にする」を選択する。

f:id:messyer813:20180831191008p:plain

 

僕はこの設定で問題なく導入できたので、たぶんこれで大丈夫だと思う。

もしこれでダメだった場合は、他で調べるか、開発者に直接問い合わせてみてほしい。

エクセルで正規表現を使って置換して邪魔なIDを消してみる

導入ができたら、さっそくこのアドインを使って正規表現で検索・置換をしてみよう。

まずは、「Ctrl」+「Shift」+「R」のショートカットキーでアドインを起動する。

今回は一例として、正規表現を使って、「@〇〇〇〇」で構成される、ツイッターのユーザーIDを全部まとめて消してみようと思う。

正規表現では、「.*」という表記をすることで、任意の文字列を指定できる。

例えば、「荷.*い」という表記で検索をすると、「荷物持ちでも構わない」がヒットする。

「荷」から始まって「い」で終わる文字列は全てヒットするので、「荷が重い」とか「荷物が多い」みたいな文字列も同様に対象になる。

これを利用して、「@.*_(半角スペース)」で検索することで、@から始まるユーザーIDを全て対象にすることができる。

実際にやってみる。

 

まず、加工前のデータがこれ。

ツイートの多くに、@から始まるユーザーIDが含まれており、非常に邪魔になっている。

これを、「@.* 」で検索し、全て空白に置換してみる。

f:id:messyer813:20180831192537p:plain

 

するとこうなる。

@から始まるユーザーIDだけがすべて綺麗に消えたのがわかるだろうか。

f:id:messyer813:20180831192801p:plain

ユーザーID以外にも、URLや謎の英数字も、同様に正規表現で消すことができる。

今回はテキストマイニングのための前処理としてこのアドインを使ってみたが、他にも役立つ場面はかなり多いはずだ。

今まで手作業でやっていたデータの加工が、正規表現を使うだけで一瞬で終わるようになる。

正規表現、恐るべし。

まとめ

ツイッターからツイート本文を取得するまではいいものの、どうやってユーザーIDを取り除いてやろうか、と考えていたときに、この正規表現検索ができるアドインに出会って、簡単にユーザーIDを取り除くことができたので、記事としてまとめてみた。

これで、ツイートを取得する→テキストマイニング用に加工する→形態素解析をする→クラスタリングをするというところまでできるようになった。

あとは、クラスタリングを自分の想定通りの形に分けられるようにして、最後にクラスタリングの結果と他の変数を使って重回帰モデルが作れるようになれば、卒論の研究は完璧。

今後も少しずつテキストマイニングに必要な知識を身に着けていって、こうして記事に残していこうと思う。

Text Mining Maniax: フリーソフトで始める日本語計量テキスト分析

Text Mining Maniax: フリーソフトで始める日本語計量テキスト分析

 
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング