圧倒的成長

日々の備忘録

湘南乃風の歌詞解析をする Part3 -踊れ~8th-

そういえば湘南乃風のライブってどんな感じなんだろう?と思ってYoutubeで検索してみたけど全然見つからない。権利的な問題だと思うんだけど意外と厳しいんだな。公式チャンネルでもトレイラー的な動画がほぼない。

湘南乃風のライブ、観てみたい気はするんだけど、ライブに来る層がなぁ…Mayhemのライブに来るような層よりも怖いイメージがある。でもここまでアルバムを聴いてきているので、たぶんなんだかんだ楽しめるんだろうな…機会があればアリか…?

さて今回はミニアルバムの踊れと7thアルバム、そして現時点で最新作である8thアルバムについて。

踊れ

f:id:destroy_linux:20201019215908j:plain

続きを読む

湘南乃風の歌詞解析をする Part2 -4th~6th-

ここ最近は一日中湘南乃風を聴くのも苦にならなくなってきた。さらには彼らの過去のインタビュー記事なども楽しみながら読めるようになってきた。 そんな中、Twitter湘南乃風と調べてみたら、

f:id:destroy_linux:20201012224350p:plain

こういった意見を見つけてしまった。なんだろう。

なんかちょっとやるせない気持ちになる。湘南乃風の何がわかると言うんだ。

…あれっ?もしかして俺、湘南乃風のこと、好きになってる?

まずいぞ。とりあえず前回の続き!

湘南乃風〜JOKER〜

f:id:destroy_linux:20201007235906j:plain

続きを読む

湘南乃風の歌詞解析をする Part1 -1st~3rd-

先日、ようやく湘南乃風の5thアルバム「2023」とミニアルバム「踊れ」を見つけた。わざわざちょっと遠くのTSUTAYAまで行った甲斐があった。これで湘南乃風のアルバムがすべてそろったことになる(買えという声が聞こえてきそうだが、次は買います、きっと)。ミックスアルバムにしか収録されていない曲などもあるから、すべての音源を入手したわけではないんだけど、どうしようか・・・なんかここまで来たら全曲欲しいな。シングル限定とかもあるから道のりは遠いな…

さて、今回はPart0で書いた手順に従い、1stアルバムから3rdアルバムまでの歌詞をもとにワードクラウドを作成して、その結果を見てみる。

湘南乃風〜REAL RIDERS〜

f:id:destroy_linux:20201006220516j:plain

続きを読む

湘南乃風の歌詞解析をする Part0 -前準備-

湘南乃風、イイぞ。 なんでハマったかは後ほど書くとして(けっこう深い理由がある)、今回は湘南乃風の歌詞解析をしてみた。これはその記録。

5thとコンセプトアルバムである「踊れ」以外、つまり1stから8thまで聴いたわけなんだけど、なんとなく最近のアルバムは曲がマイルドになっている気がしていた。 初期のヤンキー感というか・・・不良感というか・・・ギャングスタ感?がほぼなくなっている印象があった。歌詞も同じように物騒な単語が減ってきて、万人受けする普遍的なJPopみたいになっている感じがした。 今回はそれを検証するため、各アルバムで使われている言葉を調べてみて、ワードクラウドを使って可視化してみようと思った(ワードクラウドを使ってみたかったというのもある)。Pythonにはワードクラウドを簡単に作れるword_cloudというパッケージがあるので、特に苦労せずできそう。

続きを読む

WSL2上UbuntuでMeCab導入

日本語の構文解析・・・とまではいかないけど、NLP的なことをしたいのでMeCabを導入することにした。 これはその備忘録。ついでにvirtualenvで仮想環境を作る部分も(普段はDockerでOS/マシンレベルで仮想環境を作っていたけど、virtualenvってめちゃくちゃ楽で便利だ。anyenvとかほかにもいろいろあるみたいだけど)。

基本的にはこれにならった。

qiita.com

apt関連のアップデート。

sudo apt update

virtualenvをインストールして、workspaceという名前で仮想環境を作り、その仮想環境を有効化。

sudo apt install python3-venv
python3 -m venv .venv/workspace
source .venv/workspace/bin/activate

いちいち source .venv/workspace/bin/activate と入力するのも面倒なので、 ~/.bashrc に便利関数でも作ると良いかも。たとえば

function vactivate () {
        source ~/.venv/$1/bin/activate
    } 

的な。これで vactivate workspace で仮想環境 workspace が有効化される。無効化するときは deactivate

そこまでやったらMeCabのインストール。

sudo apt install mecab
sudo apt install libmecab-dev
sudo apt install mecab-ipadic-utf8
mkdir public_repo
cd public_repo/
git clone https://github.com/neologd/mecab-ipadic-neologd.git
cd mecab-ipadic-neologd/

ビルドが必要なので、開発者用ツールをインストールした後、ビルドする。

sudo apt install build-essential
sudo bin/install-mecab-ipadic-neologd 

その後辞書を登録する。具体的には、 /etc/mecabrc にさきほどビルドした辞書のパスを教えてあげる。 sudo vim /etc/mecabrcdicdir = /var/lib/mecab/dic/debiandicdir = /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/ に書き換え。

次にPythonパッケージをインストール。

sudo pip install -U pip
sudo apt install swig
sudo pip install mecab-python3

このままだと、冒頭のリンク先の記事にあるようにPythonからMeCabが使えない( failed to initialize みたいなエラーが出る)。なので、

vim .bashrc~/.bashrc を改変。 export MECABRC=/etc/mecabrc の1行を追加。 その後 source ~/.bashrcで変更を反映させる。 その後 mecab を使うと辞書が最新のものに反映されているのがわかる。Pythonからも使えるはず。

最後にウェブで悪いこと(嘘ですよ)をするときに必須のパッケージをインストール。

sudo pip install jupyter
sudo pip install beautifulsoup4

Seleniumも入れたらもっといろいろできるけど、今回はやらない。

Win10でWSL2を使えるようにする

WSL2イケてるらしいじゃん?

使ってみたいじゃん?

ということで入れてみた。その備忘録。

基本的には

qiita.com

にならった。

まずは Windows Subsystem for Linux(以下WSL)の有効化。

WSLディストリビューションのインストール。Qiitaの記事とは異なりUbuntu20.04 LTSをインストール。(20.04なんて仕事でも使ってねぇよ。。。)

Windows10 Insider Preview に登録。登録したけど本当に必要があったかは謎。いらないんじゃね???

Windows10 Preview Build のインストール。Insiderの設定でファストを選択って書いてあったけどそんなのやった覚えがない。笑

ここから再起動+Windows Updateを繰り返す。しばらくUpdateしてなかったのでめちゃくちゃ時間がかかった。ちょいちょいやってないとダメだね。

仮想マシンの有効化。PowerShellを管理者権限で起動して下のコマンドを実行。そのあと再起動。

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

WSL1→WSL2への変換

wl --set-version Ubuntu-20.04 2

WSL 2 を実行するには、カーネル コンポーネントの更新が必要ですというエラーが出たので、調べてみたら、

qiita.com

という記事が出てきたので、それにならって https://aka.ms/wsl2kernel にアクセスしてwsl_update_x64.msiをダウンロードした。インストール後もう一度上記のコマンドを入力したら無事WSL2が使えるようになった。今までデュアルブートとかDockerとか使っていたのがバカバカしくなってしまった・・・。わざわざ社会人1年生のときにLinux用ノートPCまで買ったのなんだったんだ・・・。

でもターミナルの表示がダサい。

f:id:destroy_linux:20200929230943p:plain
WSL2のターミナル(初期状態)

どうにかなんないかな~~~と思いつつ、とりあえずログインシェルでも変えるか!と思い、zshにでもしようかなと思った(会社の同期などでは人気が高いから)。そこで小一時間くらいzshやらoh-my-zshのレポジトリをクローンして導入準備やらしていたが、ふと、『zshってMacだとデフォルトのシェルらしいじゃん』と思い、すべて消した。Macユーザーと同じ穴の貉になるくらいならbashで頑張ります。fishにでもしようかな~~~

この歳でnumpyで詰まった

numpy, 暗黙の型変換をいつもしてくれると思っていたが、そんなことなかった。

import numpy as np
x = np.ones((1,), dtype=np.uint8)
x *= 127
x = x - 128
print(x)

-1になってくれると思うじゃないですか。

[255]

オーバーフローするのね・・・

numpy演算のときも、普通のPythonの演算時と同様、演算に用いられるオペランドの型によって演算結果の型が決まるらしく、 uint8の変数xに対して下手に x - 128なんて演算をしてしまうと両方uint8として処理されてオーバーフローする。このしょーもないミスでずっと欲しい値が出なかった。 まぁいつもx - 128.みたいに明示的に浮動小数点で計算するように書けば済む話だった。楽しようと思ってはいけないということか・・・

でもまぁそこはさぁ、オーバーフローさせずに型変換してくれよ!?このご時世意図的にオーバーフローさせる人いる!?

しかも、

x = np.ones((1,), dtype=np.uint8)
x *= 127
x = x / 128
print(x)

当然0だと思いきや・・・

array([0.9921875])

そっちは変換するんかい!

追記 除算時に暗黙の型変換が起こったのはPython3だから。Python2.7ではちゃんと0になった。 これに限らず最近は型指定の重要さを強く感じる。あとメモリ管理。 それにしてもすごい初心者っぽい記事だ。何年numpyインポートしてるんだって話だ。