経緯
下記記事で勉強したjanomeをローカル環境にて実行。自分の書いた日記をテキストマイニングしてみます。
https://mocobeta.github.io/janome/
#環境
-PYthon 3.7.4
##使用モジュール
-Janome 0.30.10
-wordcloud 1.7.0
モジュールのインストールからです
pip install Janome
pip install wordcloud
モジュールのフォルダにcd で入って以下を実行するのを忘れずに(自分は忘れた)
Python setup.py install
処理の順番
1.テキストファイル(.txt)の用意
2.テキストの単語分割
3.ワードクラウドの作成
from janome.tokenizer import Tokenizer
from janome.analyzer import Analyzer
from janome.charfilter import *
from janome.tokenfilter import *
from wordcloud import WordCloud
#認識できない文字の置き換えやフィルタをかける品詞を指定する関数
def create_analyzer():
tokenizer=Tokenizer()
char_filters=[RegexReplaceCharFilter('《.*?》', '')] #文字列の置き換えを行うフィルタ
token_filters=[POSKeepFilter(['名詞','形容詞','形容動詞','感動詞']),POSStopFilter(['名詞,非自立','名詞,代名詞']),ExtractAttributeFilter('base_form')]
#Keepで対象詞、topで除くもの、Extractで基本形のみ対象にする
#今回は名詞、形容詞、形容動詞、感動詞を対象にしました
return Analyzer(char_filters,tokenizer,token_filters=token_filters)
#文章を単語分割してテキストファイルとして返す関数
def split_text(src, out): #ユーザー辞書の情報を適用し文章を単語分割して前処理する
#src で渡されたファイルを読み,単語分割して out に書き出します。
a=create_analyzer()
with open(src,encoding='utf-8') as f1:
with open(out, mode='w', encoding='utf-8') as f2:
for line in f1:
tokens=list(a.analyze(line))
f2.write('%s\n' % ' '.join(tokens))
split_text('data/diary.txt', 'words.txt')
with open("words.txt",encoding='utf-8')as f:
text=f.read()
wc = WordCloud(width=1920, height=1080,
font_path="fonts/ipagp.ttf", #フォントのダウンロード
max_words=100,#ワードクラウドに記載する単語の数
background_color="white",#背景色
stopwords={"自分","ない","いい","よい"}) #禁止ワードを設定
wc.generate(text)
wc.to_file('data/test_wordcloud.png')
一番最初の関数 create_analyzerで専門用語を記述する辞書のcsvファイルを追加したりできますが今回は省略しました。
繰り返しですが下記ページで勉強できます
https://mocobeta.github.io/janome/
下記のようなpngファイルができました。今後はwebスクレイピングで拾ってきた情報やAPIと組み合わせてJSONファイルからの読み込みなどをやっていきたいです。