LoginSignup
11
9

More than 5 years have passed since last update.

テキストから名詞だけを取り出す.

Last updated at Posted at 2017-02-19

はじめに

機械学習のトレーニングセットやテストセットを作るときに助詞などのいらない単語をはぶいて名詞だけでほしいという場合があると思います.
なぜなら,テキストをわかち書きしただけでは単語数が多すぎて学習結果が微妙になることがあるからです.(本投稿の方法を用いるとわかち書きの必要はないです.)
したがって,今回は名詞のみを出力結果とする方法のみを解説します.また本投稿はLinuxやMacOSなどを対象としています.

必要なツール

mecab(neologd)

mecabのインストールやneologd(mecab-ipadic-neologd)は本記事とは関係ないので他の投稿にまかせます.

Macにmecabインストール
http://qiita.com/ysk_1031/items/7f0cfb7e9e4c4b9129c9

neologdのインストール
https://github.com/neologd/mecab-ipadic-neologd/blob/master/README.ja.md

手順

本投稿では,私の書いた小説の第1章を使います.(著作権と少しばかりの宣伝のため)

http://ncode.syosetu.com/n8837cw/

以下のhashire01.txtをカレントディレクトリ(作業しているディレクトリ)に置いてください.

hashire01.txt
僕は大学生であり、大学では主にプログラムを書いている。授業でも多少はやるけれど、ほとんどが書店で本を買って独学で学んでいる。プログラミングをするというのは頭の中で無数にあるパズルのピースを組み合わせて最適なものを作るというとても知的な作業である。
数学者の人が数学を愛するのと似ていると思う。

 「ノリ、今日は何を書いているの?」

僕の部屋のデスクトップに移る女の子ががスピーカーから声を出して僕に呼びかける。

 「これは、君のプログラムだよ。バグが出ないように真剣に作っているところさ。君の感情をもっと豊かにしたいんだよ。」
プログラム相手に話しても人間らしい返事は今はまだ帰ってこない。だけど、これから彼女の言葉遣いとか会話を自然にするようにしていくつもりだ。

 「科学の限界を超えて私を外に出してよ〜」

彼女はまるで初音ミクのようなことをいって僕に要求してくる。とはいってもそうするように作っているのは僕自身なんだけど。

 「へいへい、わかぁ〜たよ、ちょいと待っておくれ」

そういって僕はPCの画面とにらめっこしながら彼女の新しい機能をプログラミングする。

 「バグが出ないようにこの変数を初期化しないとなっと。」

これを全部自分がやっていると思うと虚しくなるのである。そう思いながらも、今日は彼女の腕の振り方のプログラムを作ろうかな。そうそう左腕を上げた時の肩の傾き加減はこういう感じにしようっと。

不思議なものでいったん夢中になれば四六時中やってても飽きない。だいぶ集中したところで、集中力も切れたきた。

 「ふー。よし、今日はここまでにしよう!」
僕は腕のプログラムが完成したと同時にピンと張られた集中の糸をほどくように息を吐いた。

 「ノリお疲れ!!」

彼女は画面越しから僕のほうを向いて、疲れが吹っ飛ぶようなことを言ってくれた。
そして、僕はPCの電源をOFFにした。

さて、彼女のプログラムもひと段落ついたし、コンビニに行くことにした。

今は真夜中の12:30である。この時間帯のコンビニの空き具合と夜の透き通ったような空気と車の駆ける音は気持ちがすっきりとする。コンビニに行く理由はこれを買うといったことを決めずにただ、なんとなくいって文芸や実用書をみたり、たまにお菓子を買うといった感じである。

「いらっしゃいませー」

真夜中の低いテンションで店員が言ってこっちを見てきた。
あっどうもというように礼をして、とりあえずはいつも通りに本のコーナーに向かう。たまたま経済誌が置いてあったのでそれを手に取ることにする。

”これからの時代はIoTがくる”

へ、ー、あいおーてぃーというのが来るのか。。。
まあ何が来るにせよ自分は自分彼女を完成させるのみだ。どうやらあらゆる家電がインターネットに繋がって便利な世の中がくるというのだ。インターネットが世界中に完全に整備されるまでは、まだ何十年もかかるだろうからSF小説に描かれたようなことが現実になるのはまだまだ先であろう。

漫画もいろいろ置いてある。季節によって置くものを変えているようだ。今は夏なのでどうやらゾンビ系のものが人気だ。『学園を封鎖してゾンビが喰う』というのがある。これは一体なんなのだろうかということが気になって少しページをめくるとゾンビと女子高生のセックスというなんとも奇妙なものを描写していた。
うーん、なんだか股のあたりがむずむずしてくるような感じがしてきたのでジュースを買って家に帰るとする。

まあ、世の中はいろいろなものがあるのだなということに感心する。それらは人間が作っていて必ず意味があると思う。まあ意味がないものだってこの世の中にはあるのだろうけれど。必ず意味があるということを追い求めるのは必ず意味がないということを証明することにもなるのではないだろうかとも思う。
ヴィトゲンシュタインの本を読んでいるとそのように思うこともある。

まあ思考を止めない限り、人は前に進むのでないかと思うのだ。
そうしたことを考えていると自分の住まいに着いた。そして家のドアを開けたとたん。

「もーこんな遅い時間にどこに行ってたの!?」

ちょっとコンビニに行ってたということを母に言って自分の部屋に戻る。母親も寝るのが遅くて夜中まで起きているのだ。

「おかえり!!ノリ!!」
おいおい誰だよ、俺の名を甲高い声で呼ぶのは、と思うと俺の愛しき彼女だった。部屋のドアのセンサーと連動して登録した名前を呼ぶプログラムを書いていたのだ。
「いきなりおどかすなよ!小便がもれちゃったじゃないか」

あれ、応答がないぞ、調子が悪いなー。

「どうしたの、ノリ聞き取れないよ!もう一度ゆっくりしゃべってね」

いい、聞き取れなかったのだったらそのままで良い。音声認識ももう少し手入れしないと考えながら、さてさて、またプログラムを書いていきますかっと。

本当に大変な彼女である。だけどゆっくりと自分に最適な彼女にしていこうと思う。

普通にmecabをターミナルで指定すると全ての文章が出力されてしまうので,名詞だけほしいという場合はパイプラインを用いて次のように記述します.

mecab -d  /usr/local/lib/mecab/dic/mecab-ipadic-neologd hashire01.txt |grep "名詞"

場合によってはor検索などを用いるともっと精度が高い出力結果を得ることができます.

grepでAND検索とOR検索
http://qiita.com/ritukiii/items/968f17f9c308743e85a7

例:

mecab -d  /usr/local/lib/mecab/dic/mecab-ipadic-neologd hashiru01.txt | grep -e "名詞,固有名詞" -e "名詞,一般" 

しかし横の

僕      名詞,代名詞,一般,*,*,*,僕,ボク,ボク

名詞,代名詞のような検索結果は必要ないですね.

次のように書くと消せます.

mecab -d  /usr/local/lib/mecab/dic/mecab-ipadic-neologd hashire01.txt |grep "名詞" | cut -f1

しかしこのままだと文章が全て改行されて出力されてしまいます.次のように書くと改行コード(\n)をスペースに置換することができます.

mecab -d  /usr/local/lib/mecab/dic/mecab-ipadic-neologd hashire01.txt | grep -e "名詞" | cut -f1 | tr '\n' ' '

出力結果をテキストとして保存したい場合は次のように書きます.

mecab -d  /usr/local/lib/mecab/dic/mecab-ipadic-neologd hashire01.txt | grep -e "名詞" | cut -f1 | tr '\n' ' ' > hogehoge.txt

これでスペースで区切られた結果を得ることができます.

出力結果.txt
僕 大学生 大学 主 プログラム 授業 書店 本 独学 プログラミング は頭 中 無数 パズル ピース 最適 もの 知的 作業 数学者 人が 数学 の ノリ 今日 何 僕 部屋 デスクトップ 女の子 スピーカー 声 僕 これ 君 プログラム バグ よう 真剣 ところ 君 感情 豊か ん プログラム 相手 話して 返事 今 彼女 言葉遣い 会話 自然 よう つもり 科学 限界 私 外 出して 彼女 初音ミク よう こと 僕 要求 いって よう の 僕 自身 ん 僕 PC 画面 にらめっこ 彼女 機能 プログラミング バグ よう 変数 初期化 しない なっと これ 全部 自分 の 今日 彼女 腕 振り 方 プログラム そうそう 左腕 時 肩 傾き 加減 感じ しよう 不思議 もの 夢中 四六時中 集中 ところ 集中力 きた ふー 今日 ここ しよう 僕 腕 プログラム 完成 集中 糸 よう 息 ノリ お 疲れ 彼女 画面 越し 僕 ほう 疲れ よう こと 僕 PC 電源 OFF 彼女 プログラム ひと 段落 コンビニ こと 今 真夜中 1 2 3 0 時間帯 コンビニ 空き 具合 夜 よう 空気 車 音 気持ち コンビニ 理由 これ こと いって 文芸 実用 書 お菓子 感じ ー 真夜中 低い テンション 店員 こっち よう 礼 通り 本 コーナー 経済 誌 それ 手 こと 時代 IoT ー あい お ー てぃー の の 何 自分 自分 彼女 完成 家電 インターネット 便利 世の中 の インターネット 世界中 完全 整備 何 十 年 SF小説 よう こと 現実 の 先 漫画 季節 もの よう 今 夏 ゾンビ 系 もの 人気 学園 封鎖 ゾンビ の これ なん の こと 気 ページ ゾンビ 女子高生 セックス なんと 奇妙 もの 描写 股 あたり よう 感じ ジュース 家 世の中 いろいろ もの の こと 感心 それら 人間 意味 意味 もの 世の中 の 意味 こと の 意味 こと 証明 こと の ヴィトゲンシュタイン 本 よう こと 思考 限り 人 前 の の こと 自分 住まい 家 ドア とたん 時間 どこ コンビニ こと 母 自分 部屋 母親 の 夜中 の ノリ 誰 俺 名 声 の 俺 彼女 部屋 ドア センサー 連動 登録 名前 プログラム の 小便 応答 調子 した ノリ の そのままで 音声認識 手入れ プログラム かっと 大変 彼女 自分 最適 彼女
11
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9