形態素解析について学んだことをまとめてみた
こんにちは。コンサルに行く予定の大学生として記事を投稿しています。
記事の投稿の目的としては自身のアウトプットを作ることで学んだことを定着させるためです。また、同じくつまづく大学生や社会人の皆様の参考になれば幸いです。
今回の目次
・このセクションの目的
・全体の流れ
・学んだこと
・細かい関数など
このセクションの目的
今回のセクションでは主に形態素解析を実行してみるということが目的になっているのではないでしょうか。実際に触れた後形態素解析とは何かについて深掘りしていきたいと考えています。
全体の流れ
このセクションの大まかな流れについて箇条書きで説明いたします。
・janomeのインストール
・形態素解析の実行
・単語の出現頻度を数える
上記の流れについて大まかなコードを記載します。
pip install janome ##janomeのインストール
##形態素解析
from janome.tokenizer import Tokenizer
t = Tokenizer()
xxx = t.tokennize("すもももももももものうち")
for n in malist:
print(n)
すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
次に単語の出現頻度です。
worddic = {}
for line in lines: ##linesは文書のテキストデータです。
malist = t.tokenize(line)
for w in malist:
word = w.surface
part = w.part_of_speech
if part.find("名詞") < 0:
continue
if not word in worddic:
worddic[word] = 0
worddic[word] += 1
keys = sorted(worddic.items(), key = lambda x:x[1], reverse=True)
for word, cnt in keys[:50]:
print("{0}({1})\n".format(word,cnt), end="")
みんな(334)
三郎(270)
の(268)
よう(228)
このようなコードで名詞のみですがworddicにどんどんワードごとが出てくるたびにカウントを増やしていきます。また、初めての単語の場合は要素を追加しています。細かい部分の解説は後の細かい関数などで紹介します。
細かい関数など
今回の内容で自分自身まだまだ理解しきれていない、または説明がすぐにできないと感じた関数やpythonの書き方についてアウトプットをしていきたいと考えています。もちろん間違えていることもあると思うので、ぜひ教えてくださると幸いです。
・.suface:こちらは形態素解析で出てきた分割後の単語を出力するもの
すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ の太字すももだと考えています。
・.part_of_speech:こちらは上記の
すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ の太字だと考えています。
・.find:xxx.find("yyy")の場合、xxx内にyyyが含まれているかどうかです。
また、返り値はyyyのxxx内におけるインデックスとなっています。含まれてい
ないい場合は-1を返します。今回では<0として除いています。
・sorted(worddic.items(), key = lambda x:x[1], reverse=True):
こちらはworddic.items()をkeyでソートするというものです。
・lambda: lambda x:x[1]これはworddic.items()[1]を指定しています。
上記でまとめたつもりですがより一般的で合ったり、まとまっているものは検索すれば必ず出てくるため、こちらが正しいとは思い込まずに一初心者の解釈として、参考にしていただければ幸いです。
以上で今回のまとめです。
今回学んだ内容は以下になっております。
とても勉強になりました。ありがとうございます。
この記事が気に入ったらサポートをしてみませんか?