/LINE_intern_task

Repository for LINE internship task

Primary LanguageJavaScript

LINE_intern_task

LINEインターンシップ課題プログラム

task2/

課題2回答用プログラム・データ

このプログラムはTwitter APIを利用してツイートをクロールし,NEologdに含まれる単語のセットを収集します. 収集したツイートは,そのツイートの発言者が男性か女性のどちらであるかを人力で入力することで, ツイートに関連したNEologdの各単語に対してその単語がどれだけ「男性らしい」「女性らしい」かのメタ情報を付与します.

収集したメタ情報のデータは task2/dump.tsv にあります.

実行方法

プログラムの実行にはjava,sbt(scala),redisが必要です.

環境構築後,プログラムがNEologdの単語を取り出すために mecab-user-dict-seed.csv ファイルを用意します. これは ./init.sh を実行することで自動的に neologd-seed/ ディレクトリに保存されます.

次にプログラムがTwitter APIにアクセスするために https://apps.twitter.com/ でアプリケーションを作成します. 作成が完了したら,各トークンを環境変数に設定します.

$ export twitter4j.oauth.consumerKey=*********************
$ export twitter4j.oauth.consumerSecret=******************************************
$ export twitter4j.oauth.accessToken=**************************************************
$ export twitter4j.oauth.accessTokenSecret=******************************************

その後 task2ディレクトリに行き sbt run を実行すると,コンパイル後プログラムが起動します. プログラムは,開始後入力するコマンドにより動作が変わります.

  • init : NEologdの単語情報をデータベースに保存する.
  • crawl : Twitterから標本となるツイート・単語を取得する.
  • supervise : データベースからツイートを取り出し,男性と女性どちらのツイートかを入力させる.
  • export : 各単語の情報を dump.tsv に出力する.

実際にデータを収集する際は,初回に init を行った後 crawl で標本ツイートを収集し, ツイートがたまった時点で supervise でデータを与えるという流れになります. ただし, supervise については課題3にてより簡単に行えるシステムを作成しました.

dump.tsv 詳細

dump.tsv には各行3カラムのデータがあり,それぞれ

  • 単語
  • 単語の男女メタ情報 (1に近いほど男性寄り,0に近いほど女性寄り)
  • 単語出現回数

の情報が書かれています.

task3/

課題3回答用プログラム

課題3では,課題2で収集したデータを用いて,あるTwitterユーザーのスクリーンネームを与えて そのユーザーが男性か女性かを判定するWebサービスを作成しました. また,課題2の supervise が行えるページも用意しました.

作成したWebサービスは,現在 http://line-intern.harusamex.com/ で稼働しています.

実行方法

サーバーの起動にはNode.js,redis(課題2で生成されたデータベース)が必要です.

環境構築後, task3 ディレクトリに行き ./node_modules/.bin/webpack を実行して クライアント用のJavaScriptファイルを生成します.

また,課題2と同様にTwitter API用のトークンを生成します. トークンは以下のように環境変数に設定します.

$ export TWITTER_CONSUMER_KEY=*********************
$ export TWITTER_CONSUMER_SECRET=******************************************

設定後 node main.js を実行することでサーバーが起動し, http://localhost:3000/ にてアクセスできるようになります.