日本語テキスト処理基礎講座2023
コマンドラインの基礎†
- Ubuntu(Linux)をWindows(WSL)上で動かす
WSLとUbuntuのインストール†
Macでは†
- スタートメニューからUbuntuを起動
- またはWindows TerminalでUbuntuのタブを開く
- またはVSCodeのターミナルでUbuntuを開く
- Macの人は代わりにターミナルを起動
最低限知っておきたいコマンド†
はじめに†
- コマンドの使い方を確認するには
- コマンド --help で使い方
less --help
- man コマンド でマニュアル
man less
- やりたいことをChatGPTに聞いてみるのもよい。ググるより効率がいい。
サンプルテキストのダウンロード†
- wget :webからファイルをダウンロードするツール
- インストール
sudo apt install wget
- インストール(Mac)
brew install wget
ファイル操作関連のコマンド†
- pwd :今いるディレクトリ(フォルダ)
- ls :ファイルリストの表示
- cd :今いるディレクトリから移動
- mkdir :ディレクトリの作成
- mv :ファイルの移動・リネーム
- cp :ファイルのコピー
- rm :ファイルの削除
- unzip :zipファイルの展開(解凍)
- インストール
sudo apt install unzip
- インストール(Mac)
brew install unzip
テキスト処理関連のコマンド†
- nkf :文字コード変換
- インストール
sudo apt install nkf
- インストール(Mac)
brew install nkf
ファイルの確認†
- 中身を表示(qを押して終了)
less JPConstitution.txt
sed -E -f removeruby.sed kokoro.txt >kokoro2.txt
ターミナル上のテキストエディタ†
- vi :昔からのエディタで癖が強い
- nano :割と普通(だけどショートカットキーが〃)
- code :VSCodeで開く*2
ls|code -
標準入出力とパイプ†
- > :ファイルなどに処理結果を出力
- >> :追加出力
- < :ファイルなどから入力
- | :出力を次のコマンドにつなぐ
WSL関連(Windows)†
- Explorerのアドレスバーにwslと打つと、今いるフォルダをカレントディレクトリにしてUbuntuのターミナルが開く
- Explorerのアドレスバーに\\wsl$と打つとUbuntuのファイル(ルート)が開ける
- UbuntuのターミナルからWindowsのコマンドが呼べる
MeCabとUniDic†
- MeCabのインストール
sudo apt install mecab
wget https://clrd.ninjal.ac.jp/unidic_archive/2302/unidic-cwj-202302.zip
unzip unidic-cwj-202302.zip -d unidic-cwj
wget https://clrd.ninjal.ac.jp/unidic_archive/2203/UniDic-202203_60b_qkana.zip
unzip UniDic-202203_60b_qkana.zip
mv 60b_qkana unidic-qkana
mv unidic-qkana/.dicrc unidic-qkana/dicrc
echo "ゼレンスキー大統領" | mecab -d unidic-cwj
echo "井ノ上たきな" | mecab -d unidic-cwj
echo "政府の行為によつて再び戦争の惨禍が起ることのないやうにする" | mecab -d unidic-cwj
echo "政府の行為によつて再び戦争の惨禍が起ることのないやうにする" | mecab -d unidic-qkana
mecab -d unidic-cwj JPConstitution.txt | less
短単位解析†
mecab -d unidic-cwj -Ochamame JPConstitution.txt
mecab -d unidic-qkana -Ochamame JPConstitution.txt
- d 辞書を置いたディレクトリの指定
- O 出力フォーマットの指定(dicrcに書式指定あり)
- -Ochamame :以前の茶まめの出力形式*3
- -Ounidic :以前のUniDicの出力形式*4
- 指定しないと全部の列が出力される
- 新茶まめ風フォーマットの指定
- 辞書フォルダのdicrcに書いておくとOオプションで楽に指定できる
語彙素 | 語彙素読み | 語形 | 品詞 | 活用型 | 活用形 | 書字形 | 発音形 | 語種 | 語彙素ID |
;語彙素\t語彙素読み\t語形\t品詞\t活用型\t活用形\t書字形\t発音形\t語種\t語彙素ID
node-format-chamame2 = \t%m\t%f[7]\t%f[6]\t%f[23]\t%F-[0,1,2,3]\t%f[4]\t%f[5]\t%f[8]\t%f[9]\t%f[12]\t%f[28]\n
unk-format-chamame2 = \t%m\t\t\t%m\t未知語\t\t\t\t\t\t\n
bos-format-chamame2 = B
eos-format-chamame2 =
- #現代語unidic-cwj
- node-format= \t%m\t%f[7]\t%f[6]\t%f[23]\t%F-[0,1,2,3]\t%f[4]\t%f[5]\t%f[8]\t%f[9]\t%f[12]\t%f[28]\n
- #旧仮名unidic-qkana(現代語用と違うので注意。まもなく出す新バージョンで同じになります)
- node-format= \t%m\t%f[7]\t%f[6]\t%f[15]\t%F-[0,1,2,3]\t%f[4]\t%f[5]\t%f[8]\t%f[9]\t%f[11]\t%f[26]\n
- 新茶まめ風フォーマットを直接指定して解析
mecab -d unidic-cwj --node-format="\t%m\t%f[7]\t%f[6]\t%f[23]\t%F-[0,1,2,3]\t%f[4]\t%f[5]\t%f[8]\t%f[9]\t%f[12]\t%f[28]\n" --unk-format="\t%m\t\t\t%m\t未知語\t\t\t\t\t\t\n" --bos-format="B" JPConstitution.txt > JPConstitution_morph.txt
mecab -d unidic-qkana --node-format="\t%m\t%f[7]\t%f[6]\t%f[15]\t%F-[0,1,2,3]\t%f[4]\t%f[5]\t%f[8]\t%f[9]\t%f[11]\t%f[26]\n" --unk-format="\t%m\t\t\t%m\t未知語\t\t\t\t\t\t\n" --bos-format="B" JPConstitution.txt > JPConstitution_morph2.txt
解析結果の処理†
シェルスクリプト†
- コマンドを並べたテキストファイルを .shファイルにまとめる(バッチファイル)
- shファイルに実行可能フラグを付ける
chmod +x *.sh
- サンプルchiisakimonoe.sh
(有島武郎「小さき者へ」のテキストをダウンロードしてきてUTF-8に変換後、MeCab+UniDic-cwjで解析して、副詞の一覧を出力する)
wget "https://www.dropbox.com/scl/fi/vsphond396zcoxaqlhlp3/chiisakimonoe.txt?rlkey=89a63g0ni4hdxaqzlb02h5cbu&dl=1" -O chiisakimonoe.txt
nkf -S -w8 --overwrite chiisakimonoe.txt
mecab -d unidic-cwj --node-format="\t%m\t%f[7]\t%f[6]\t%f[23]\t%F-[0,1,2,3]\t%f[4]\t%f[5]\t%f[8]\t%f[9]\t%f[12]\t%f[28]\n" --unk-format="\t%m\t\t\t%m\t未知語\t\t\t\t\t\t\n" --bos-format="B" chiisakimonoe.txt > chiisakimonoe_morph.txt
grep $'\t副詞' chiisakimonoe_morph.txt |sort |uniq -c
- シェルスクリプトは変数や制御構文も使えてもっと本格的なことができるが以下略