
単語ごとに分割・品詞別に分類
前回のおさらい
看護記録システムのチェック式項目を選定していくために、過去の看護記録からよく使われるキーワードを見つける必要があります。
その頻出ワードをみつけるために「自然言語処理」という処理技術、その中でも「形態素解析」を行うことになりました。
前回は形態素解析を行うまでの下準備(データ収集、解析環境について)をお話しました。
形態素解析の流れのうち、今回は②③④をお話していきたいと思います。
①たくさんのテキストデータを集める
(1.5)用意したテキストデータを解析するその前の準備
→②たくさんのテキストデータすべてをそれぞれ単語に分割する
→③分割された単語の品詞を判別する
→④品詞ごとにカテゴリ分けする
⑤すべての列ごとの単語を結合する
⑥使わなそうな単語を削除する
⑦単語を品詞別にカウントする
⑧単語を品詞別に多い順並び替える
⑨品詞別に何に関連した単語かを判別する
⑩すべての品詞で関連ごとに単語を整理する
②たくさんのテキストデータをそれぞれ単語に分割する
過去の看護記録のテキストデータは文章なので、そのままでは頻出の単語をカウントすることができません。そのため、まずは文章となっているテキストを単語ごとに分割する「形態素解析」という処理をする必要がありました。
形態素解析を行うにためには、誰でも無料で使える「MeCab」というソフトウェアがあるため、今回はそれを使用しました。

詳しく書くと、
■データを読み込む
1. データ収集したExcelを読み込んでdfと名前をつけます。dfにはExcelのデータが入っていることになります。
2. df(データフレーム:読み込んだExcelデータ)に「単語」という名前の列を作成し、その列は空白とします。
■データを処理する(文章を単語に分割(形態素解析))
3. MeCabの機能であるparseToNode()で単語を取得することができ、node.surfaceにはその単語自体が入っています。そしてnode = node.nextで次の単語、その次の単語・・・というように取得していきます。
4. wordというリストを作成し、words.append(node.surface)でwordのリストに入れていきます。
5. wordsというリストに入った単語たちをそれぞれ間に空白を入れます(空白を結合する)。空白を間に入れることで、後ほど単語と単語の区切りを判別することができます。
6. それを収集したテキストデータすべてに行うようループさせます。
7. 最終的に得られた、単語リストをデータフレームの「単語」列に入れます。それを行うと下図のような結果が返ってきます↓
(単語単語の間に空白が入っている状態)

③分割された単語の品詞を判別する
④品詞ごとにカテゴリ分けする
②の過程で収集されたテキストデータを単語ごとに分割することができました。次は分割された単語を品詞ごとに分類していきます。今回は「名詞」「動詞」「形容詞」の品詞の単語を知りたいと考えました。なので、単語ごとに分割した「単語」列のそれぞれの行ごとに、品詞別で分類していきたいと思います。

詳しく書くと、
1. データフレームに「名詞」「動詞」「形容詞」という名前の列を作成し、それらの列を空白とします。
2. 何も入っていない空白のリストを作成し、meishiと名付けます。
3. node.featureでは単語の特徴が入っています。いくつかの特徴が入っているのですが、その最初に得られる特徴に「名詞」といった品詞の情報が入っているため抜き出します。(プログラムでいうとhinshi = node.feature.split(",")[0] のところ)
4. 3で得られた品詞の情報が名詞だったら、2で作成したmeishiという名の空白のリストに名詞の単語を入れ、それを繰り返すことで、名詞のみの単語リストを作成します。
5. 最終的に名詞のみのリストをデータフレームの「名詞」列に入れていきます。それを行うと下図のような結果が返ってきます↓
※これを「動詞」「形容詞」も行っていきます。


参考にしたURL↓
あとがき
テキストデータから単語ごとに分割、それを品詞ごとに分類することができました。次回は品詞ごとに分類したものをの中から不要な単語を除外したり、使われている単語の回数をカウントするところを書いていきたいと思います。
みなさんの「スキ」がとても励みになります。
本当にありがとうございます。
また良かったら次回もみてくれるとうれしいです。