LoginSignup
2

More than 1 year has passed since last update.

posted at

updated at

Organization

自然言語処理で遊んでみた

技術書典で購入した書籍を基に自然言語処理を試してみました。

実行環境

Google Colaboratory

実行準備

準備として、MeCabとosetiをインストールします

# MeCabのインストール
!apt install mecab python-mecab mecab-ipadic-utf8
!apt install mecab-jumandic-utf8 libmecab-dev file curl
!pip install mecab-python3==0.7

色々検証してみた結果、MeCabのバージョンを0.7に指定しないと、後にインストールするosetiの実行でエラーになるようです

# osetiのインストール
!pip install oseti

形態素解析

MeCabで形態素解析を実行するとこのようになります。

import MeCab
text = "本日は晴天なり"

# MeCab.Taggerオブジェクトの作成
objMeCabTagger = MeCab.Tagger()

# 形態素解析された結果の出力
print(objMeCabTagger.parse(text))
本日  名詞,副詞可能,*,*,*,*,本日,ホンジツ,ホンジツ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
晴天  名詞,一般,*,*,*,*,晴天,セイテン,セイテン
なり  助動詞,*,*,*,文語・ナリ,基本形,なり,ナリ,ナリ
EOS

辞書変更

デフォルトの辞書では、固有名詞を判別していませんが、Neologdでは判別しています。

# Neologdのインストール
!git clone https://github.com/neologd/mecab-ipadic-neologd.git
!echo yes | mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -n

この例では志村動物園を固有名詞として判別しています。

text = "天才!志村動物園"

# MeCab標準辞書での形態素解析
objMeCabTagger = MeCab.Tagger()
print(objMeCabTagger.parse(text))

# Neologdを使った形態素解析
objMeCabTagger = MeCab.Tagger("-d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd")
print(objMeCabTagger.parse(text))
天才  名詞,一般,*,*,*,*,天才,テンサイ,テンサイ
! 記号,一般,*,*,*,*,!,!,!
志村  名詞,固有名詞,人名,姓,*,*,志村,シムラ,シムラ
動物  名詞,一般,*,*,*,*,動物,ドウブツ,ドーブツ
園 名詞,接尾,一般,*,*,*,園,エン,エン
EOS

天才  名詞,一般,*,*,*,*,天才,テンサイ,テンサイ
! 記号,一般,*,*,*,*,!,!,!
志村動物園 名詞,固有名詞,一般,*,*,*,志村動物園,シムラドウブツエン,シムラドウブツエン
EOS

jumanではカテゴリーもされるそうです。

text = "マイホームを買いに行く"

objMeCabTagger = MeCab.Tagger("-d /var/lib/mecab/dic/juman-utf8")
print(objMeCabTagger.parse(text))
マイホーム 名詞,普通名詞,*,*,マイホーム,まいほーむ,代表表記:マイホーム/まいほーむ カテゴリ:場所-施設 ドメイン:家庭・暮らし
を 助詞,格助詞,*,*,を,を,連語
買い  動詞,*,子音動詞ワ行,基本連用形,買う,かい,代表表記:買う/かう ドメイン:家庭・暮らし;ビジネス 反義:動詞:売る/うる
に 助詞,格助詞,*,*,に,に,連語
行く  動詞,*,子音動詞カ行促音便形,基本形,行く,いく,代表表記:行く/いく 付属動詞候補(タ系) ドメイン:交通 反義:動詞:帰る/かえる
EOS

ネガポジ判定

osetiでは単語のポジティブ/ネガティブを判定してくれます。
天国はポジティブ、地獄はネガティブで判定しています。

import oseti
analyzer= oseti.Analyzer()
print(analyzer.analyze('天国'))
print(analyzer.analyze('地獄'))
[1.0]
[-1.0]

文章のネガポジ判定

参考書籍を基に青空文庫から蜘蛛の糸(芥川龍之介)をネガポジ判定を行うとこのようになりました。
ネガティブな要素が多いようです。

image.png

参考書籍

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
What you can do with signing up
2