単語のカウント・並び替え
前回のおさらい
看護記録システムのチェック式項目を選定していくために、過去の看護記録からよく使われるキーワードを見つける必要があります。前回は単語ごとに分割された単語をすべて統合することと、看護記録に使用しない単語を削除することをお話しました。
今回はその続き、単語を品詞別にカウントし、使用された回数が多い順に並び替えることについて書いてみたいと思います。
①たくさんのテキストデータを集める
(1.5)用意したテキストデータを解析するその前の準備
②たくさんのテキストデータすべてをそれぞれ単語に分割する
③分割された単語の品詞を判別する
④品詞ごとにカテゴリ分けする
⑤すべての列ごとの単語を結合する
⑥使わなそうな単語を削除する
→⑦単語を品詞別にカウントする
→⑧単語を品詞別に多い順並び替える
⑨品詞別に何に関連した単語かを判別する
⑩すべての品詞で関連ごとに単語を整理する
⑦単語を品詞別にカウントする(不要な単語の削除も行う)
前回ですべての単語を統合し、看護記録で使用しないであろう単語リストも作成したので、ここから単語を何回看護記録で使用されたかをカウントしていきます。
図2が各品詞ごとに単語をカウントするプログラムです。詳しく書くと
1. 最初にcollections と copyを使えるようにインポートします。後のコードで単語のカウントやリストのコピーを行う際に使用されます。
2. 次に前回すべての名詞の単語を統合した文章(full_m)を「full_m.split()」で分割し、単語のリスト(words_m)に変換します。
3. これから削除リストに基づいて単語リスト(words_m)から不要単語を削除していくのですが、単語リストは不要単語があるかどうかを参照する用と、実際に不要単語を削除していく用の2種類必要になってきます。そのため、sannshouyou_list_m = copy.copy(words_m) で、words_mのリストをコピーして、新しいリスト(sannshouyou_list_m)を作成しました。
4. sannshouyou_list_mに含まれる単語を1つずつ調べて、その単語が不要な単語リスト(remove_m)に含まれているかどうかを判断していきます。もし含まれていた場合、その単語をwords_mリストから削除します。
5. c_m = collections.Counter(words_m) で、不要単語が除外された単語のリスト(words_m)に含まれる各単語の出現回数をカウントします。collectionsモジュールのCounter関数を使って、カウント結果をc_mに入れます。
6. print(c_m) で、カウント結果(c_m)を画面に表示し確認します。
上記のコードにて、文章から名詞を抽出し、不要な単語を除外した上で、各名詞の出現回数をカウントすることを行いました。
⑧単語を品詞別に多い順並び替える
⑦で不要な単語を削除したうえで、使用された単語のカウントを行うことができました。このあとは、カウントされた単語を多い順に並び変え、それをExcelへ出力していきます。
詳しく書くと
1. まずdf_m=pd.DataFrame.from_dict(c_m, orient="index").reset_index() で、単語の出現回数をカウントしたデータ(c_m)を、表形式のデータフレームに変換します。
2. 次にdf_m=df_m.rename(columns{"index":"名詞", 0:"count"}) で、データフレームの列名を変更します。今回は単語の列名を「名詞」とし、カウント数の列名を「count」としています。
3. 次にdf_m = df_m.sort_values("count", ascending=False) で、データフレームを「count」列の値に基づいて降順(大きい値から小さい値へ)で並び替えています。これにより、出現回数が多い名詞が上位に来るようになります。
4. print(df_m) で、整理されたデータフレームを表示します。これにより、名詞とその出現回数を一覧で確認することができます。
5. df_m.to_excel("/content/drive/MyDrive/Colab Notebooks/名詞.xlsx") で、整理されたデータフレームをExcelファイルに出力しています。ファイルは「名詞.xlsx」という名前で、指定された保存場所に保存されます。
これで、名詞の出現回数をカウントしたデータを整理し、表形式で表示し結果をExcelに保存することができました。
あとがき
今回で膨大な量の看護記録を解析し、よく使用されている単語の抽出を行うことができました。pythonによる解析はこれで以上です。このあとはExcelに出力した仕様頻度順の単語リストをおおまかに看護業務内容別に分類していきます(次回このことについて書いてみようと思っています)。
みなさんの「スキ」がとても励みになります。
本当にありがとうございます。
また良かったら次回もみてくれるとうれしいです。