Aidemy 2020/10/30
はじめに
こんにちは、んがょぺです!バリバリの文系ですが、AIの可能性に興味を持ったのがきっかけで、AI特化型スクール「Aidemy」に通い、勉強しています。ここで得られた知識を皆さんと共有したいと思い、Qiitaでまとめています。以前のまとめ記事も多くの方に読んでいただけてとても嬉しいです。ありがとうございます!
今回は、ネガポジ分析の1つ目の投稿になります。どうぞよろしくお願いします。
*本記事は「Aidemy」での学習内容を「自分の言葉で」まとめたものになります。表現の間違いや勘違いを含む可能性があります。ご了承ください。
今回学ぶこと
・ネガポジ分析とは
・極性辞書を使ったネガポジ分析の実行
ネガポジ分析とは
・ネガポジ分析とは、人の発言や発想がポジティブかネガティブかを判断するものである。実際には、文章などに含まれる評価、感情に関する表現を抽出して、文章中の感情を解析するという手法が取られる。
極性辞書について
・「ネガ/ポジ」のことを「極性」とよび、極性辞書は単語ごとの極性をまとめたものである。単語には「-1~+1」までの値が与えられており、値が大きいほどポジティブ、値が小さいほどネガティブな意味であることを表す。
形態素解析
・(復習)形態素解析とは、文章を単語という最小単位に分割することである。単語にすることで、極性辞書を参照することが可能になる。MeCabなどを使って形態素解析を行うことができる。また、以下も復習の内容が多いが、全て今回行っていくものである。
・MeCabによる形態素解析はMeCab.Tagger('')でインスタンスを作成したあと、mecab.parse(ファイル)で行える。一行につき一単語なので、単語ずつに区切るために、split('\n')で改行ごとに「lines」に格納していく。また、後ろ二行は'EOS(EndOfSplit?)'という記述と空行なので削除する。また、作成したlinesについて、単語ごとに「タブと,」で分割し、{'BaseForm':word}となるようにそれぞれ「diclist」に格納する。
単語を極性辞書で参照し、PN値を取得
・前項で作成した形態素解析の関数「get_diclist()」から返される単語のリスト(wordlist)の単語を極性辞書でさがし、存在すればその極性値を抽出するという役割を持つ関数「add_pnvalue()」を作成する。
・関数作成にあたり、まずは極性辞書(pn_df)を「単語がキー、PN値が値」である辞書に変換する。pn_dfの['Word']と['PN']をそれぞれリスト化し、「pn_dict」として一つの辞書にまとめる。
・add_pnvalue()については、渡された単語リストの各要素の中の'BaseForm'がキーの各単語について、pn_dictにその単語があれば、単語リストにキー'PN'を追加してその単語のPN値を値とし、空のリスト「diclist_new」に格納して返すように作成する。ちなみに、pn_dictにある単語のPN値が知りたい時は「pn_dict[word]」とすれば良い。
まとめ
・ネガポジ分析とは、人の発言や発想がポジティブかネガティブかを判断するものである。ネガポジ分析は極性辞書を使って行う。
・極性辞書でネガポジ分析を行うためには、極性辞書を参照できるように、文章を形態素解析する必要がある。
今回は以上です。最後まで読んでいただき、ありがとうございました。