2018年9月1日土曜日

エネルギー基本計画の特徴を見てみる。その4 複合語を考慮してwordcloud(python,janome,自然言語処理)

前回までに、エネルギー基本計画から複数回出現する単語の組み合わせをgensim Phrasesで取り出し名詞とみなせるか判定した上で複合語・新語をjanomeのユーザー辞書に登録しました。

今回は、作成したユーザー辞書を使って複合語を考慮した上でwordcloudを作ってみます。

ちなみに、複合語を考慮しない場合はこのようになりました。



エネルギー基本計画(案)の特徴を見てみる。その2 名詞でwordcloudより。 名詞(代名詞、非自立名詞を除く)のみ、連語を考慮せず。

「エネルギー」が大きく表示されていますが、「必要」「利用」「活用」などの普通に使われそうな言葉が目立ち、エネルギー基本計画としての特徴があまり出ていません専門用語として複合語・新語を登録したユーザー辞書を使うことで、どう変化するでしょうか。

・インポートとデータ読み込み
from janome.tokenizer import Tokenizer

from wordcloud import WordCloud
import matplotlib.pyplot as plt 

text_file = open("enegy_plan.txt")
full_text = text_file.read()
full_text= full_text.replace("\n","")
出力(一部)
はじめに2011年3月の東日本大震災及び東京電力福島第一原子力発電所事故を受けて、政府は、2014年4月、2030年を念頭に、第4次エネルギー基本計画を策定し、原発依存度の低減、化石資源依存度の低減、再生可能エネルギーの拡大を打ち出した。第4次エネルギー基本計画の策定から4年、2030年の計画の見直しのみならず、パリ協定の発効を受けた2050年を見据えた対応、より長期には化石資源枯渇に備えた超長期の対応、変化するエネルギー情勢への対応など、今一度、我が国がそのエネルギー選択を構想すべき時期に来ている。

・ユーザー辞書を指定
tokenizer = Tokenizer('energywords_dic.csv', udic_enc='cp932')
tokens = tokenizer.tokenize(full_text) 

前回作成したユーザー辞書を指定します。

・形態素解析を行い、指定した品詞のみを取り出す。
word_list=[]
for token in tokens:
    word = token.surface
    partOfSpeech = token.part_of_speech.split(',')[0]
    partOfSpeech2 = token.part_of_speech.split(',')[1]
    
    if partOfSpeech == "名詞":
        if (partOfSpeech2 != "非自立") and (partOfSpeech2 != "代名詞") and (partOfSpeech2 != "数"):
            word_list.append(word)

words_wakati=" ".join(word_list)
words_wakati

出力(一部)
はじめ 年 3月 東日本大震災 東京電力 福島 原子力発電所 事故 政府 年 4月 年 念頭 次 エネルギー 基本 計画 策定 原発依存度 低減 化石資源 依存度 低減 再生可能エネルギー 拡大 次 エネルギー 基本 計画 策定 年 年 計画 見直し パリ協定 発効 年 対応 長期 化石資源 枯渇 長期 対応 変化 エネルギー情勢 対応 今 度 我が国 エネルギー 選択 構想 時期

形態素情報から名詞(非自立、代名詞、数を除く)のみを取り出しています。janomeを使った品詞での単語抽出についてはこちらをご覧ください。

・wordcloudの設定・表示
stop_words = []
fpath = "C:\Windows\Fonts\msgothic.ttc"

wordcloud = WordCloud(
    font_path=fpath,
    width=900, height=500, #default width=400, height=200
    background_color="white", #default=”black”
    stopwords=set(stop_words),
    max_words=500, #default=200
#    max_font_size=150, #default=None,height of the image
    min_font_size=4, #default=4
    collocations = False #default = True
).generate(words_wakati)

plt.figure(figsize=(15,12))
plt.imshow(wordcloud)
plt.axis("off")
plt.show()

最大フォントを指定せず、連語を考慮せずで作成しています。wordcloudの設定についてはこちらをご覧ください。

出力

(クリックで少し大きく見られます)

「エネルギー」「技術」「開発」「事業」「取組」が大きく表示され、「再生可能エネルギー」「脱炭素化」「水素」「地域」も大きめです。よく見ると「エネルギー需給」「LPガス」「温室効果ガス」などもあります。

作成したユーザー辞書を使うことで、専門用語を考慮することができるようになり、前よりは特徴が見えてきました。

次回以降、「技術」「開発」「取組」などのこういう文書によく使われる単語を除いて、特定の文書での特徴を現す言葉のみの抽出をやってみようと思います。

参考:
資源エネルギー庁:第5次エネルギー基本計画
http://www.enecho.meti.go.jp/category/others/basic_plan/pdf/180703.pdf
Janomeドキュメント:ユーザー定義辞書を使う
http://mocobeta.github.io/janome/#id7
MeCab 単語の追加方法
http://taku910.github.io/mecab/dic.html
コード7区:gensim の Phrases の使い方。頻出する単語ペアを検出-python
http://ailaby.com/phrases/
コード7区:ツイートからユーザ辞書(MeCab や Janome 用)をpython で作ってみる http://ailaby.com/tweet_dict/
Janomeで形態素解析をやってみる。
http://eneprog.blogspot.com/2018/06/janomepython.html
エネルギー基本計画(案)の特徴を見てみる。その1 wordcloud
https://eneprog.blogspot.com/2018/06/wordcloudpythonjanome.html
エネルギー基本計画(案)の特徴を見てみる。その2 名詞でwordcloud
https://eneprog.blogspot.com/2018/06/2-pythonjanomewordcloud.html

gensim Phrasesで新語・複合語を探す(python、自然言語処理、機械学習)
https://eneprog.blogspot.com/2018/07/gensim-phrasespython.html
エネルギー基本計画から新語・複合語を探す。その1
https://eneprog.blogspot.com/2018/07/1-pythongensimphrasesjanome.html
エネルギー基本計画から新語・複合語を探す。その2 複合語を判定する
https://eneprog.blogspot.com/2018/08/2-pythonjanome.html
Janomeでユーザー辞書を使う
https://eneprog.blogspot.com/2018/08/janomepython.html

0 件のコメント:

コメントを投稿

//SyntaxHighlighter CDNより https://cdnjs.com/libraries/SyntaxHighlighter // 対応言語