#author("2024-10-31T08:50:41+09:00","default:ogiwiki","ogiwiki") #author("2024-11-08T16:25:06+09:00","default:ogiwiki","ogiwiki") **コマンドラインで形態素解析 [#g7e8d689] ***MeCabとUniDicの準備 [#cba3f0e9] -MeCabのインストール sudo apt install mecab --Mac brew install mecab -UniDicのダウンロード(ファイルが大きいので時間がかかる) --[[現代書き言葉UniDic>https://clrd.ninjal.ac.jp/unidic/download.html#unidic_bccwj]] wget https://clrd.ninjal.ac.jp/unidic_archive/2302/unidic-cwj-202302.zip unzip unidic-cwj-202302.zip -d unidic-cwj --[[旧仮名口語UniDic>https://clrd.ninjal.ac.jp/unidic/download_all.html#unidic_qkana]] wget https://clrd.ninjal.ac.jp/unidic_archive/2308/unidic-qkana-v202308.zip unzip unidic-qkana-v202308.zip 動作確認 mecab -v 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 ***短単位解析 [#v8785a83] ***ファイルを短単位解析 [#v8785a83] wget "https://www.dropbox.com/scl/fi/ahwe6wd78u3rusqy6j4yl/JPConstitution.txt?rlkey=cwnsj0vtj7e6nnl5je40qmd0m&dl=1" -O JPConstitution.txt mecab -d unidic-cwj JPConstitution.txt mecab -d unidic-cwj -Ochamame JPConstitution.txt mecab -d unidic-qkana -Ochamame JPConstitution.txt -d 辞書を置いたディレクトリの指定 -O 出力フォーマットの指定(dicrcに書式指定あり) -- -Ochamame :以前の茶まめの出力形式((現バージョンでは問題あり)) -- -Ounidic :以前のUniDicの出力形式((現バージョンでは問題あり)) -- -Ochamame :以前の茶まめの出力形式 -- -Ounidic :以前のUniDicの出力形式 --指定しないと全部の列が出力される -出力フォーマットの指定例 --辞書フォルダのdicrcに書いておくとOオプションで楽に指定できる(旧仮名口語UniDicには最初から指定あり) |語彙素|語彙素読み|語形|品詞|活用型|活用形|書字形|発音形|語種|語彙素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 = -新茶まめ風フォーマットを直接指定して解析 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 --またはdicrcにchamame2の書式を指定後にOオプションで指定して解析 mecab -d unidic-cwj -Ochamame2 JPConstitution.txt > JPConstitution_morph.txt -できているか確認 less JPConstitution_morph.txt less JPConstitution_morph2.txt ***解析結果の処理 [#hbf30625] -辞書による違いの確認 diff JPConstitution_morph.txt JPConstitution_morph2.txt -接続詞だけ grep 接続詞 JPConstitution_morph.txt -固有名詞だけ(旧仮名UniDicでないと解析エラー多) grep 固有名詞 JPConstitution_morph.txt grep 固有名詞 JPConstitution_morph2.txt -検索して集計 grep 接続詞 JPConstitution_morph2.txt |sort |uniq -c grep $'\t副詞' JPConstitution_morph2.txt |sort |uniq -c -発音形出現形だけ((cutはタブ区切りの場合は区切り記号(デリミタ)指定が不要)) cut -f 10 JPConstitution_morph.txt -品詞列だけ取り出して集計 cut -f 6 JPConstitution_morph.txt|sort|uniq -c --さらに数が多い順に並べる cut -f 6 JPConstitution_morph.txt|sort|uniq -c|sort -nr ***シェルスクリプトでの利用例 [#y28deed5] -サンプル [[chiisaki.sh>https://www.dropbox.com/scl/fi/0wjfs7s5tlktfdx5pk6zj/chiisaki.sh?rlkey=ovlu4raw6mnusxhnf345b39av&dl=1]] (有島武郎「小さき者へ」のテキストをダウンロードしてきてUTF-8に変換後、MeCab+UniDic-cwjで解析して、副詞の一覧を出力するスクリプト) サンプルのダウンロード wget "https://www.dropbox.com/scl/fi/0wjfs7s5tlktfdx5pk6zj/chiisaki.sh?rlkey=ovlu4raw6mnusxhnf345b39av&dl=1" -O chiisaki.sh 実行 bash chiisaki.sh スクリプトの中身 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