tossy diary

日常の記録を残す

2022年4月の振り返り

4月の振り返り。 今月は移動する機会が多かった月であった。

日々のインプット

読みかけの本も合わせて、全部で5冊。今月はあまりインプットが進まなかった月だった。

読書

Google Cloudについて必要な知識を学ぶために読んだ。これ一冊でGoogle Cloudに関するキーワードをかなり抑えられると思う。

労務管理の本。図書館に置いてあったので読んでみた。漫画でわかりやすく各セクションの導入をしてくれる。文章自体は結構難しいところもある。労務管理の業務をする人はカバーしておかないといけないだろうが、雇用される従業員としてはある程度のことを知っておけばよさそう。FPで勉強した項目も多くあったので、全く知らない事項はなかったかな。

図書館に置いてあったので読んでみた。著者が親ならどう子育てするかを書いた本。才能がない人ほど大学に行くべき、子供にどう見られるかを意識しつつ生活するなど、共感できるところが多かった。

読みかけ。機械学習API、AutoML、BigQueryML、AI Platformのフローの図がわかりやすかった。高度なことがやりたい場合は、AI Platform、最近だとVertex AIで、簡易なことであれば機械学習APIやAutoMLを使うのが良さそう。それぞれについて具体的な利用手順も載っていて参考になった。

読みかけ。自身のこれからのキャリアについて少しでもヒントになれば、ということで読んでいる。まだ読み始めだが、参考になることが書かれていて、面白い。

資格

目標:TOEIC730点

スタディサプリの月額支払っている金額に対して、学習比率が低くなってきてしまったので、休会した。 新しい対策を考えないとなぁというところ。

生活

新聞を読む

実践できている。

健康面

体重

きちんと計測してグラフ化することで、計測するクセが定着した。測るだけでもかなりの効果があると思うので、継続していこう。

毎日8,000歩、歩く

今月は、217,391/30=7,246歩。今月は移動も多かったので、その分目標の8,000歩に近づいてきた。いい感じである。

運動習慣をつける

5月から毎週日曜日はプールに付き添いで行くことになったので、その機会を生かして自分も運動するようにしようかなと思っている。

その他

  • Apple Watch SEのレンタルを始めた。使ってみるといろいろ便利なことがわかる。電話の通知に気づきやすくなったことが一番大きいかな。あと、ワークアウトの管理が簡単(自転車に乗ったり、歩いたりすると自動で知らせてくれる)。心拍数も管理できる。

2022年3月の振り返り

3月の振り返り。3月もいつの間にか過ぎ去った気がする。毎月言っている。

研究

博士号取得に向けた取り組み

3月初旬に国際会議へ投稿した。

日々のインプット

全部で10冊。今月は多めにインプットができたと思う。どんどんやっていこう。

読書

Elasticsearchについて体系的に学習できる本。ノード、クラスタ、シャード、レプリカ、ドキュメント、インデックスなどの用語等の説明から、実際にどう検索エンジンを作れば良いかがわかった。Webアプリケーションフレームワークと組み合わせることで簡易なWeb検索アプリをすぐに作ることができる。例えば、FlaskとElasticsearchで簡易なWeb検索アプリを作ることができる。この本は一つ前の版らしく、最新版「Elastic Stack実践ガイド[Elasticsearch/Kibana編]」が出ている。

機械学習を行う上での知識を身に付けることができる。実用の場面で進めていく上で事前知識はこの本で習得可能だと思う。各場面で利用すべきツールや流れを本書で参照しながら進めることで効率的にできる。

flaskでWebアプリを作るときに参考にしようと思って読んだ本。具体的な機能を実装する際のコードが載っている。例えば、ログイン機能やクッキーなど。また、具体的なWebアプリの例として、ファイル転送サービス、掲示板、SNSなども載っているので参考になる。

huggingface transformersの各タスクでの学習、評価のコードが載っており参考になる。

Ruby on Railsの入門本。これまでRuby on Railsという言葉は知っていたが、というレベルなので読んだ。一回読んだだけではコードの動作や流れは理解できなかったが、実際に動かしたり試行錯誤する中で理解していくためのインデックス作りになった。

中級者もしくは上級者向けの本だと感じた。この本の内容を実践できれば、コンテナ開発・運用は十分な実力があると考えられる。実際にdockerやkubernetesの運用をする際のテクニックもふんだんに載っていて、大変参考になった。

クラウドを構成する機能についてAzure, AWS, GCPでの違いを説明している本。複数のマネージドサービスを比較しながら、使う必要がある人は参考になる部分が多いと思う。

仕事でBigQuery上でSQLを使うため、ぴったりのタイトルの本があったので買って読んだ。 基礎から応用まで幅広く載っている本。学習用のデータセットがあり、演習ドリルで学習に取り組むことができる。BigQueryの使い方も載っているので、BigQueryは全く触ったことがない人でも取り組める内容になっている。このドリルを一通り解けば体系的にクエリの書き方を把握できると思う。

2014年出版と古い本だが、ElasticSearchについて学習するため購入した。おそらく今は変更されている内容もあり、公式ドキュメントを確認する必要があるが、コアな部分は同じだと思う。網羅的な内容になっているので、辞書的な利用方法もできる。

二地域居住する話を書いた本。毎週末千葉の南房総に通い、田舎の生活をする。土地探しから草刈りの大変さ、野菜作りなどの話が書かれており著者の方のパワーを感じた。面白そうだが、かなりの労力がかかりそうだなぁ。ライターの人が書いた本なので、文体もうまくスラスラ読めて情景も浮かんできやすい文章だったと思う。

資格

目標:TOEIC730点

ちょっとした空き時間にスタディサプリを開く程度。

生活

新聞を読む

実践できている。

健康面

体重

81kgくらいをうろうろしている。計測するクセはできてきたので、継続する。暖かくなってきたから継続しやすくなった。

毎日8,000歩、歩く

今月は、191,204/30=6,373歩。8,000歩はなかなか難しい目標である。歩きながら、できることとセットでする仕組み作りをすることが良いかもしれない。

運動習慣をつける

運動習慣ではないが、立って仕事をすることを取り入れてみた。頭が冴えて良いが、ディスプレイを都度調整しないといけないのが面倒。

その他

  • 飛行機を利用した際に空港ラウンジを複数回利用した。
  • 眼科に行ってコンタクトレンズを作成した
  • ホワイトデーにアイスクリームメーカを購入した

自前で抽出した固有表現タグをSpaCyで可視化する

自前で抽出した固有表現タグをSpaCyで可視化する方法。

以下のstackoverflowを参考にすればできる。 stackoverflow.com

具体的なコードは、GitHub Gistに置いた。 gist.github.com

参考

https://spacy.io/api/top-level#spacy.blank

https://spacy.io/api/language#attributes

https://spacy.io/api/span#char_span

https://spacy.io/api/top-level#displacy.render

2022年2月の振り返り

2月の振り返り。2月もいつの間にか過ぎ去った気がする。

研究

博士号取得に向けた取り組み

今月は主に国際会議投稿に向けた部分を進めていたり、新しい施策を考えたり。来月頭に投稿予定。英語のライティングスキル...

日々のインプット

読書

研究を行う際に必要な世界観の作り方や実際にどういう風に研究を進めていけば良いかがわかりやすく書かれている本。研究フィールドマップや問題深掘図、課題要因図などを埋めていく過程で多角的な観点から研究を捉えることができる。研究を進める中でいつの間にか、手段が目的化し、手法ありきで問題解決をしていることがある。そういう場合は、俯瞰した視点から今やっていることを捉え直すことが必要で、そういう視点で考える場合に役に立つ本だと思う。

Pythonの文法や機能に関する知識が書かれた本。体系的に学べる本だと思う。python特有の機能として、デコレータやコンテキストマネージャなどの説明もある。中級者向けの本。ちなみに著者は同郷の知人であり、自分も頑張らねばと思わせてくれる本だった。

放送大学教材の教科書で自然言語処理について書かれた本。各章がコンパクトにまとめられており、ざっと体系的に学びたい時に読める本。各章の最後に学習課題も載っており、理解を深めることができる。

2022年2月出版。3章の途中まで読んだのと、9章の「Eコマースと小売」のところを読んだ。NLPのベストプラクティスを学べる本。内容がとても豊富。今後も残りの章を読もうと思う。表紙の鳥はオオハナインコらしい。

3章まで読了。きちんと実験管理をしないといけないと思ったことと、推論はデータだけ用意したら動かして結果を確認するだけくらいの仕組みにしておかないと、動かし方とか忘れちゃうし、ドキュメントもどこだっけとなるので、うまく仕組み化したい。

資格

目標:TOEIC730点

TOEICを1/30AMに受験した結果が返ってきた。

f:id:sktshk:20220227102513p:plain

感触通り、リスニングは良くなっていて前回受験時より50点UPしていた。一方、リーディングは前回と一緒の点数だった。少しづつ伸びているので良しとしよう。引き続き、学習は継続する。

前回の受験以降、スタディサプリで学習して、スキマ時間などで100時間学習した。前回よりは点数が上がっているような気がするが、結果はどうだろう。 やはり、後半のリーディングセクションは時間管理が重要となってくる。

sktshk.hatenablog.com

生活

新聞を読む

ここは朝起床したあとに読む習慣がついている。このまま継続していこう。

健康面

体重

今月もあまり計測できていない。対策として、リビングに持ってくることにしたが、果たしてどうだろう。

毎日8,000歩、歩く

今月の歩数は27日時点で152,786歩だったので、1日平均で5,658歩。先月より減っているので、こちらも日々活動量を増やしていく。

運動習慣をつける

今月はジムに行けなかった。土日は子守をすることが多かったので、仕方ないかな。

その他

  • 仕事部屋に加湿器を導入した。ちょうど1時間に1回くらいの頻度で水の補充が必要なので、座りっぱなしにならず良い
  • 歯医者に2回行った

2022年1月の振り返り

2022年も早1ヶ月が過ぎましたね。1月の振り返りをしたいと思います。

研究

博士号取得に向けた取り組み

今月は国際会議投稿に向けた部分を進めていた。年間目標を設定した。

日々のアウトプット

ブログ

今年の目標の記事を書いた。

sktshk.hatenablog.com

sktshk.hatenablog.com

sktshk.hatenablog.com

年初に書いたとおり、試行錯誤した結果を書いていこう。

日々のインプット

読書

今月は5冊。意識したおかげで読書のインプットの習慣化はできてきている。

著者の生い立ちから、現在に至るまでにどのような生き方をしてきたか書かれた本。努力しないための努力をするというのは、どうすれば楽にできるか、を考えること。ムダなことをせずに楽をしようとする考え方は、何事も効率化するという意味で改善の方向性を検討できるので、大事な考え方だと思う。

ディープラーニングを体系的に学べる本。ディープラーニングに使われる技術、メカニズムについて、基本的な考え方から、最新の発展までまとめられている。ディープラーニングのすごいところは、表現学習を大量のデータで実現でき、高い性能と柔軟性を兼ね備えて、汎化させていることにあると思う。

Gitのコマンドや仕組み、動作のイメージ図などが書かれており、体系的に学べる本だった。複数人での開発や大規模開発での利用を想定した、Gitの使い方が書かれており、非常に実践的である。最後の章ではGitのオブジェクトの中身に言及されており、中身まで理解できる。体系的に学べる良本。

コンピュータビジョンに関する最新の研究動向を網羅的にサーベイした内容の本。とてつもない情報量であり、分野を盛り上げていこうという雰囲気が読むだけで伝わってくる。特に自身にとっては、「ニュウモンVision and Language」の章が自然言語処理に関する内容が載っており、とても参考になった。

資格

TOEIC730点

TOEICを1/30AMに受験した。 前回の受験以降、スタディサプリで学習して、スキマ時間などで100時間学習した。前回よりは点数が上がっているような気がするが、結果はどうだろう。 やはり、後半のリーディングセクションは時間管理が重要となってくる。

f:id:sktshk:20220130222515p:plain:w300

生活

新聞を読む

ここは朝起床したあとに読む習慣がついている。このまま継続していこう。

健康面

体重

そもそも、計測していなかったので、毎日計測するところからやっていく。寒いと服を脱いで量るということをしなくなるから、何か工夫できないかな、とは思っているところ。

毎日8,000歩、歩く

今月の歩数は30日時点で182,730歩だったので、1日平均で6,091歩。毎日、朝と昼は歩いているので、改善の余地があるなぁ。もう少し早めに起きて、行動するしかないか。

運動習慣をつける

ジムに2回行った。あと1回くらいいけたら良かったけど、初月にしては良かったと思う。

今月、初めて行ったのだが、やはり最初の行くまでのハードルが高い気がした。2回目以降は、施設の設備内容とか要領がわかるので、行きやすくなった。 何事もやってみることが大事だなぁ。

その他

  • プライベートでの作業の自動化について、seleniumを使ったブラウザの自動操作などを試していた
  • 今月前半は移動が多く、空港のラウンジサービスを利用するためにプラチナカードを作った
  • 日記を書く習慣がなくなったので、また書き始める

doccano出力のjsonlファイルを形態素解析し、CoNLL形式に変換する

doccanoは、アノテーションツールであり、文章分類や固有表現抽出、感情分析などの教師データの作成ができる。

github.com

doccanoでは、固有表現抽出(Named Entity Recongnition)のアノテーションをした後に教師データとしてjsonlファイルが作成される。 固有表現抽出のモデルを作る場合、CoNLL形式へ変換したい場合がある。

変換する際には、doccano-transformerという便利なライブラリがあるのだが、日本語の文章を形態素解析しつつ、CoNLLファイルに変換する方法がわからなかった。 (もしかしたら、以下で簡単にできるかもしれない)

github.com

英語であれば、元々単語区切りがされているが、日本語の文章の場合、形態素解析によるわかち書きが必要になる。 そこで、日本語の文章に対してMeCab形態素解析しつつ、jsonl形式からCoNLL形式に変換するツールを作成した。

github.com

以下で任意の日本語の文章に対して、アノテーションしたjsonlファイルをCoNLL形式へ変換できる

python3 jsontoconll.py admin.jsonl > dataset.conll

Huggingfaceのtransformersライブラリで固有表現抽出(CoNLL2003編)

固有表現抽出のタスクでは、CoNLL2003というShared Taskのデータセットがある。 今回はCoNLL2003のデータセットを用いて、BERT-baseのモデルをfine-tuningする。

paperswithcode.com

CoNLL2003のデータセットを取得

wget https://data.deepai.org/conll2003.zip
unzip conll2003.zip
ls -l
train.txt valid.txt test.txt

使用する事前学習済みモデル

今回は、事前学習済みモデルとして、BERT-baseのuncasedモデルを利用する。 uncasedは、大文字と小文字を区別せずに学習されたモデルである。 例えば、englishとEnglishを区別しない。 一方、casedは、大文字と小文字を区別して学習されたモデルである。 例えば、englishとEnglishを区別する。

BERT-base-uncasedは、BookCorpusとEnglish Wikipediaコーパスを用いて、自己教師あり学習で事前学習されたモデルである。

huggingface.co

transformersライブラリのv3.4.0をclone

手順については、前回の記事を参考に、Huggingfaceのtransformersライブラリのv3.4.0を用いる。 sktshk.hatenablog.com

なお、https://github.com/huggingface/transformers/tree/v3.4.0/examples/token-classificationの手順を参考にしている。

v3.4.0のタグのファイル一式をcloneしてくる。

git clone git@github.com:huggingface/transformers.git -b v3.4.0
cd transformers/examples/token-classification

実行前の準備

実行前の準備を行う。

export MAX_LENGTH=128
export BERT_MODEL=bert-base-uncased

python3 scripts/preprocess.py train.txt $BERT_MODEL $MAX_LENGTH > train.txt_new
python3 scripts/preprocess.py valid.txt $BERT_MODEL $MAX_LENGTH > dev.txt_new
python3 scripts/preprocess.py test.txt $BERT_MODEL $MAX_LENGTH > test.txt_new
mv train.txt_new train.txt
mv dev.txt_new dev.txt
mv test.txt_new test.txt

cat train.txt dev.txt test.txt | cut -d " " -f 4 | grep -v "^$"| sort | uniq > labels.txt

jsonファイルの作成

configファイルとしてjson形式のファイルを作成。 ちなみに、fine-tuningで学習させたモデルを使って予測のみをする場合は、do_train, do_evalをfalseにすればよい。

{
    "data_dir": ".",
    "labels": "./labels.txt",
    "model_name_or_path": "bert-base-uncased",
    "output_dir": "outputmodel",
    "max_seq_length": 128,
    "num_train_epochs": 3,
    "per_device_train_batch_size": 32,
    "save_steps": 750,
    "seed": 1,
    "do_train": true,
    "do_eval": true,
    "do_predict": true
}

学習させる前には、run_ner.pyのis_world_masterをis_world_process_zeroに変更しておく。

fine-tuningを行う

bert-base-uncasedモデルのfine-tuningを実行する。 GPU環境であれば、10分程度で完了する。

python run_ner.py config.json

***** Running training *****
  Num examples = 14042
  Num Epochs = 3
  Instantaneous batch size per device = 32
  Total train batch size (w. parallel, distributed & accumulation) = 32
  Gradient Accumulation steps = 1
  Total optimization steps = 1317

実行結果を確認する

実行が終わると、結果が出力される。

***** Running Prediction *****
  Num examples = 3454
  Batch size = 8
01/09/2022 13:16:05 - INFO - __main__ -     test_accuracy_score = 0.9805534618283622
01/09/2022 13:16:05 - INFO - __main__ -     test_precision = 0.8953206239168111
01/09/2022 13:16:05 - INFO - __main__ -     test_recall = 0.9146600566572238
01/09/2022 13:16:05 - INFO - __main__ -     test_f1 = 0.904887020493957
01/09/2022 13:16:05 - INFO - __main__ -     test_runtime = 20.6979
01/09/2022 13:16:05 - INFO - __main__ -     test_samples_per_second = 166.877
01/09/2022 13:16:05 - INFO - __main__ -     test_steps_per_second = 20.872

タグ付け結果の確認

実際のタグ付け結果は、結果のディレクトリのtest_predictions.txtに記載されている。

 more test_predictions.txt 
-DOCSTART- -X- -X- O

SOCCER O
- O
JAPAN B-LOC
GET O
LUCKY O
WIN O
, O
CHINA B-LOC
IN O
SURPRISE O
DEFEAT O
. O