日本語テキスト処理基礎講座2023
コマンドラインの基礎†
- Ubuntu (Linux)をWindows(WSL)上で動かす
WSLとUbuntuのインストール†
Macでは†
- スタートメニューからUbuntuを起動
- またはWindows TerminalでUbuntuのタブを開く
- またはVSCodeのターミナルでUbuntuを開く
- Macの人は代わりにターミナルを起動
最低限知っておきたいコマンド†
はじめに†
- コマンドの使い方を確認するには
- コマンド --helpで使い方
- man コマンドでマニュアル
- やりたいことを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 removeruby.sed kokoro.txt >kokoro2.txt
ターミナル上のテキストエディタ†
- vi :昔からのエディタで癖が強い
- nano :割と普通(だけどショートカットキーが〃)
標準入出力とパイプ†
- > :ファイルなどに処理結果を出力
- >> :追加出力
- < :ファイルなどから入力
- | :出力を次のコマンドにつなぐ
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 :以前の茶まめの出力形式*2
- -Ounidic :以前のUniDicの出力形式*3
- 指定しないと全部の列が出力される
- 新茶まめ風フォーマットの指定
- 辞書フォルダの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