joppot

コピペで絶対動く。説明を妥協しない

mac unix

mecabで文章を分かち書きする

投稿日:2014年1月31日 更新日:

Pocket

NA00001860

概要

みなさんこんにちはcandleです。今回は「分かち書き」をしてみましょう。

分かち書きというのは文章を品詞毎に分ける事です。品詞とは名詞や動詞などのことです。

ちょっとみてみましょうか。

「私はcandleという名前の技術者である。」というのを品詞毎にわけると、下の図の様になります。
candle_—_mecab

名詞とか助詞とかに分かれているでしょ。

これをスペース区切りにしたのか分かち書きです。

条件

mecabがインストールされている。

文章をダウンロードする

サンプル用の文章をダウンロードします。
http://www.aozora.gr.jp/cards/000148/card789.html
URLに飛び、
ページの一番下のzipファイルをダウンロードしましょう。

図書カード:吾輩は猫である_と_mecabで文章を分かち書きする_odt_-_OpenOffice_Writer-6

ダウンロードされたら、ダブルクリックで解凍しましょう。

ダウンロード-7

 

文字エンコーディングを変更する

このファイルはShift-JISの文字エンコーディングです。

mecabは初期設定でeucの文字エンコーディングを使用しています。

私の過去の記事を見るとわかる様に、私はUTF-8を使用しています。なので、このファイルをUTF-8に変換しましょう。

変換はnkfコマンドを使用しましょう。nkf の-wオプションでutf-8に変換してくれます。

nkf -w wagahaiwa_nekodearu.txt > nekodearu.txt

ダウンロード_—_bash

一応、別名のファイルに出力しました。

原文を編集する

正規表現ができるエディタを使用しましょう。
というのも、原文にはルビが入っていて、それを一括で削除するには正規表現をする必要があるからです。

私はCotEditorを使用します。フリーですし、便利なので、軽いエディタを持っていない人はこれを試してください。

まずは文章の一番上の説明文を削除しましょう。

nekodearu_txt-6

次に、文章の一番下に移動して、書籍のデータを削除しましょう。

nekodearu_txt-5

次に正規表現を使用して、ルビを消します。

CotEditorならコマンド+F で検索ボックスを表示します。

「正規表現」のチェックボックスにチェックを入れてください。

Find-3

この文章のルビは全部《》の中に書かれているので、それに対して正規表現を行いましょう。

検索の所に、

《.+?》

と入力しましょう。

置換の場所には何も書かなくてかまいません。

そしたら、「一括置換」を押して全て置換しましょう。
Find-5

保存して原文の編集は終わりです。

 

mecabで分かち書きする

ここまでくれば簡単です。先ほどの編集したファイルに対して次のコマンドを打ちましょう。

mecab -O wakati nekodearu.txt > wakati.txt

ダウンロード_—_bash 3

ところが、overflowが沢山出ます。

出ない人は成功だと思います。

でも、多分これぐらい長いファイルだとほとんどの人がこの問題に突き当たるでしょう。

試しにできたwakati.txtのファイルを開きます。

wakati_txt

文字化けし過ぎ。

ということで、警告にもあるように -bオプションで splitうんたらをしましょう。

実際問題これは詳しい事はわからないし、あくまで私の予想なのですが、mecabの処理できる容量よりも大きいデータがきたから分けて処理しろということじゃないでしょうか?

となれば、ひとまず原文ファイルの大きさを調べましょう。

wcコマンドで大きさを調べます。

wc nekodearu.txt

ダウンロード_—_bash 2

私の場合は「978121」バイトと出ました。

これをmecabの-bオプションの後につければ、問題なく動くと思います。
やってみましょう。

mecab -O wakati -b 978121 nekodearu.txt > wakati.txt

ダウンロード_—_bash 4

今度はとくに警告も無く、処理が完了しました。

ファイルを開いてみましょう。

wakati_txt 2

今度は奇麗に分かち書きできました。
成功です。ファイルのサイズが文字だけで、1.2Mバイトになっていますね。

 

まとめ

これだけだと、何がしたいんだかわからないと思います。確かにその通りです。
1つの可能性として、よく行われるのが、名詞だけを取り出して、データベースにおさめるというのもです。このデータも、今後何かに使えると思います。大切にしましょう。

スポンサードリンク

「為になったなぁ」と思ったら、シェアお願いします。

-mac, unix
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Snow leopardをmaveriksにアップデートする

概要 みなさんこんにちわcandleです。しばらく忙しい日が続いて、更新できなかったのですが、こま目に書いていこうと思います。 長らく、snow leopardを使っていましたが、無料でmaverik …

MacにMacPortsを使ってmecabを入れる

概要 みなさんこんにちはcandleです。形態素解析エンジンmecabをmacに入れてみましょう。 mecabは日本語を分析し、名刺や形容詞などの種類に分けたりできる便利なソフトです。 よく使われる例 …

mysqlのデータベース、テーブル、データをmysqldumpを使用してバックアップする

概要 みなさんこんにちはcandleです。今回はmysqlのデータベースのバックアップを様々試します。 データベースのバックアップと言っても、テーブルのみとか構造のみとか、様々なオプションがあります。 …

Mac OS MavericksにX11(Xquartz)をインストールする

概要 みなさんこんにちはcandleです。今回はX11のインストールを行います。MavericksからかMountain Lionからか忘れましたが、MacではX11が標準でインストールされなくなりま …

Aptana studio 3をmacにインストールする

概要 みなさんこんにちはcandleです。今回は統合開発環境のAptana studio 3の導入をやってみましょう。統合開発環境というのはプログラミングをする時様々な機能やサポートを盛り込んだエディ …

  • English
  • 日本語

プロフィール


ベンチャー企業のCTOをやってます。大学時代にプログラミングを始め、javaから入門し、C++へて、PHPへと進み、会社ではRailsを使用。自動化が大好きなプログラマー

スポンサードリンク

アーカイブ