手順
事前準備
・Pythonを実行できる環境を用意する。
0からやる場合は、anacondaをインストールするのがオススメ。
・MeCabをインストールする。
pipコマンドというものを使ってインストールする。難しいことは無い。実行するのみ。
pip install mecab-python3
・辞書をインストールする。
こちらもpipコマンドを実行するのみ。(別途unidicをインストールしてると実行時にえらーするので削除した)
pip install unidic-lite
・pythonコードを書き、ちゃんと動くかテストしてみる。
import MeCab
wakati = MeCab.Tagger("-Owakati")
result = wakati.parse("ITって本当にすごいよね!").split()
print(result)
名詞の数だけ数えてみる。
・Chasenをインストールする。これが無いと品詞分析(形態素解析)ができない。
・開発環境をインストールした配下の「dicrcファイル」を編集する。
例えば以下のファイル。
"C:\ProgramData\Anaconda3\Lib\site-packages\unidic_lite\dicdir\dicrc"
・このファイルに以下の設定を追記する。これにより、chasenが使えるようになる。
; ChaSen
node-format-chasen = %m\t%f[7]\t%f[6]\t%F-[0,1,2,3]\t%f[4]\t%f[5]\n
unk-format-chasen = %m\t%m\t%m\t%F-[0,1,2,3]\t\t\n
eos-format-chasen = EOS\n
・pythonコードを書き、結果を確認してみる。
# src.txtファイル内に対象の文章を入れておく。
f = open('src.txt')
text = f.read() # ファイル終端まで全て読んだデータを返す
f.close()
#MeCabで分割
import MeCab
m = MeCab.Tagger('-Ochasen')
node = m.parseToNode(text)
words=[]
while node:
hinshi = node.feature.split(",")[0]
# if hinshi in ["名詞","動詞","形容詞"]:
if hinshi in ["名詞"]:
try:
# origin = node.feature.split(",")[6]
origin = node.feature.split(",")[8]
words.append(origin)
except Exception as e:
# print(e)
i = 1
node = node.next
#単語の数カウント
import collections
c = collections.Counter(words)
print(c.most_common(5000))
・さらに、csvファイルに書き出す場合は以下のコードを追記する。5000は出力単語の上限を指定している。
# csv出力
export_list = c.most_common(5000);
import csv
with open("word_list.csv", "w") as f:
writer = csv.writer(f, lineterminator='\n')
for a in export_list:
writer.writerow(a)
※補足:表記揺れについて
https://analysis-navi.com/?p=3093
制限あるが、フリーで使えるものもある
https://textmining1.userlocal.jp/home/result/5e9da4538300c5a603f5ce888f4d94d5
参考
・環境構築について
https://qiita.com/tamago_pinoko/items/6935565212a00823b3b0
・一通りのテキストマイニング手順
https://analysis-navi.com/?p=2167
・mecabについて
https://self-development.info/mecab%E3%81%AE%E3%83%A9%E3%83%83%E3%83%91%E3%83%BC%E3%81%A7%E3%81%82%E3%82%8Bmecab-python3%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/
・unidic-liteインストールについて
https://qiita.com/cress_cc/items/6b1db5865741b1c9fe6a
・分かち書きと形態素解析について
https://testpy.hatenablog.com/entry/2016/10/04/010000