新人エンジニアがjanomeで形態素解析してみた!

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【5/21開催】Azure OpenAI ServiceによるRAG実装ガイドを公開しました
生成AIを活用したユースケースで最も一番熱いと言われているRAGの実装ガイドを公開しました。そのガイドの紹介をおこなうイベントです!!
https://tech-lab.connpass.com/event/315703/

初めまして。新卒です。

本日はjanomeを使い、「形態素解析を行い、文章中に使われている名詞の数を名詞ごとに数える」というプログラムの処理の流れを簡単に説明します。

janomeとはpythonのライブラリの1つで、文章を形態素ごとに分割し、品詞の判定を行うことができます(形態素解析)。

使用したpythonとjanomeのバージョンは以下の通りです。

python3.7.8
janome0.3.10

 

ライブラリのインストール

$ pip install janome

これでjanomeがインストールできます。

 

形態素解析


from janome.tokenizer import Tokenizer

path = './test.txt' #同じディレクトリにtext.txtを配置
file = open(path, encoding="utf-8")  #ファイルをオープン Windows or Mac
#file = open(path)  #ファイルをオープン Mac
bindata = file.read()#開いたファイルの読み込み
#textdata = bindata.decode('shift_jis')

t = Tokenizer() #形態素解析
dic = {} #辞書
#---------------------------------------------------------------------------------------------
lines = bindata.split("\r\n") #改行で分割                              手順1
#---------------------------------------------------------------------------------------------
for line in lines:  #分割された文章毎に繰り返す
#-----------------------------------------------------------------------------
    malist = t.tokenize(line)  #形態素のリスト
    for w in malist:  # リストの各要素を取り出してカウント
        word = w.surface  #                                          手順2         手順4
        part = w.part_of_speech  #品詞
        if part.find('名詞') < 0: continue
#-----------------------------------------------------------------------------
        if not word in dic:
            dic[word] = 0  #数を格納するカウンター用の変数を生成  #        手順3
            dic[word] += 1  # カウンターを増やす
#---------------------------------------------------------------------------------------------
dic = sorted(dic.items(),key = lambda x:x[1], reverse=True)  #       手順5
#---------------------------------------------------------------------------------------------
for word, cnt in keys[:20]:
    print("{0}({1})\n".format(word,cnt), end="")

 

処理の流れのイメージ

今回はtest.txtの中に書かれた文章の形態素解析をします。

処理の流れは以下の通りです。

test.txt

1. 改行で分割する。

  

2. 上の行から順に辞書(janomeに内包)を元に形態素ごとに分割する(赤字は名詞)。

3. 出てきた名詞をdicに入れ、それぞれの名詞の数を数える(赤字は名詞)。

dic

 

4. 最後の行が終わるまで2, 3を繰り返す。

dic

5. 名詞の出てきた回数でソート(降順)する。

dic

まとめ

本日はjanomeを使用し、「形態素解析を行い、文章中に使われている名詞の数を名詞ごとに数える」というプログラムの処理の流れを簡単に説明しました。

janomeを使うことで、形態素解析を非常に簡単に行うことができ、自然言語処理の様々な場面に活躍することになると思います!

ただし注意点が1つあります。WindowsとMacでは文字コードの扱いに差異があるため、ソースコードの5,6行目をお使いのOSに合わせて変えてください。Macであればどちらでも問題ありません。

アバター画像
プロフェッショナルサービスチームの中の人。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

1 Comment

  1. janomeは「くだ」が名詞になっちゃうあたり、ちょっと解析精度が低いんじゃないか、と思うのです。fugashiやsudachipyも、よければ試してみて下さいね。

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる