Rulesと呼ばれるものがある。イメージとしては、銀行や携帯キャリアなどのwebサイトにアクセスした際に画面の下の方に出てくるようなChatbot(チャットボット)サービスのようなものがある。(バックに実際のオペレーターがいる場合は別。)事前に用意された質問文を投げかけ、利用者の回答に応じて、条件分岐し、回答を返す仕組み。例:携帯キャリアの場合お問い合わせ内容は、なんですか。料金について、ですね。料金についてどんなことが知りたいですか。その他みたいな感じで、選択肢を選ぶと次の選択肢が現れ、会話が続いていく、というイメージですね。これも言語処理の分野の一つ。音声認識の場合は、言語の音声を物理的な音の波として認識し、その波形のパターン・特徴を分析・解析することで言葉を認識していく方法。これも昔からある言語処理の分野の一つ。Learningの間のような内容。言語を定量的なデータとして解析し、その特徴量やパターンから、ある言葉が出たらある言葉を返す、といったモデルを作っていく。今回実装していくのはこの手法。言語の前処理の部分以外は基本的に機械学習の分類と同じなので、ロジスティック回帰やナイーブベイズなどの機械学習における分類のアルゴリズムの中から、一番もっともらしい結果を返すアルゴリズムを用いていくと良い。分類のアルゴリズムについても今回受講しているUdemyの講義の中で解説されているので、別途備忘録を作成する予定。Network、畳み込みニューラルネットワーク)を用いた手法。CNNについてもまた別途備忘録を作成予定だが、基本的に深層学習(ディープラーニング)の分野。ディープラーニングを用いた複雑な演算により、言語からパターンを抽出していく。Questionがあるとして、それに対してある人がどう答えるかを予測するモデルを作ることを考える。このとき、例えば英単語として20,000種類の単語があるとする。この20,000種類の単語に対してすべてを定量データであるベクトルに変換していく。そのベクトル化した20,000種類のデータに対して、課題となる文章がどんな値を含んでいるか、で文章を分類するモデルになる。他にも、レストランのレビューコメントとそのレストランを気に入ったかどうかの結果を用いて、どんな単語が入っていると好意的なレビューか、というようなレビューの感情分析などを行うことができるようになる。なんとなくまだわかりにくいような気がするので、Qiitaなどで補足するといいかもしれない...。-ライブラリのインポート-ここからPythonによるBags-Of-Wordsの実装を行っていく。いつもどおりライブラリのインポートから。今回は英語を対象言語としていく。日本語は、ひらがな、カタカナ、漢字と文字が3種類あったり、言葉どうしのつなぎが複雑だったりと、世界的に見ても複雑な言語とされており、処理が複雑化する。今回はアルゴリズムの大まかな理解を目的とし、英語を対象言語とする。-データセットのインポート-次に分析対象の文章が入っているデータセットをインポートしていく。今回はtsv形式のファイルを使用していく。tsvのtは、Tab(タブ)のt。csvファイルがコンマで区切られているのに対して、tsvはタブで区切られている形式のファイルを指す。csv形式だと、データの区切りとしてのコンマと、英文の中に出てくるコンマとの区別が付きづらく、処理が複雑になるため、今回はtsv形式としている。そのため、引数delimiterを’\t’としている。(ダブルクオーテーション)のようなPythonにおいて特殊な意味を持つ記号などが文章に含まれている場合、それをそういった特殊記号としてではなく、単純に文字列として認識させるために設定している。-文章のクリーニング-次に処理対象の文章のクリーニングを行っていく。先程importとしたモジュールやライブラリを使って、対象とする文章から処理結果に直接影響を与えないような不要な部分を削除していく。Likedのような意味的にほぼ同じな動詞の活用形などを統一し、なるべく演算を軽く、シンプルにしていく必要がある。データセットの行の数だけ処理を繰り返す内容。今回は1000行あると仮定。正規表現で文字情報の置き換えを行う。"^〇〇"の形で、〇〇以外、という意味になる。(スペース)に置き換えている。stopwordsが変数reviewの中に入っていなければ、変数wordに格納する。最後に、ps.stem(word)で不要な機能語が入っていない単語をPorterStemmer()に入れ、動詞の活用形の統一をしていく。処理が完了した単語どうしを一つの文章としてくっつける。Wordsモデルを作成していく。出てこない単語や重要度の低い単語が入っていることを考慮し、特徴量の最大値を制限し、分類精度向上を図るもの。1,500という数字は感覚的なもの。テスト用20%の割合で分割していく。-分類モデルを使った訓練用データの学習-分類のアルゴリズムを使って、訓練用データを学習していく。分類のアルゴリズムは、いくつかあり、対象となるデータや得たい結果などに応じてもっともらしいものを選択していく。個々の分類アルゴリズムについては別途備忘録を書こうかなあと思っているので詳細は割愛。-テストデータによる結果の予測-上記どれかの分類アルゴリズムを使って訓練用データの学習をした後、その精度や汎用性を確認するために、テスト用データで結果を予測していく。scoreを算出し、モデルの評価を行っていく。–Python機械学習アルゴリズム学習備忘録。み込みニューラルネットワークについて。畳み込みとは何か、から丁寧にまとめていきます。–Python機械学習アルゴリズム学習備忘録。畳み込みニューラルネットワークの実装編。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。ホームプログラミングProfileクラケンバイク、バスケ、お酒、そして、ぶりぶりざえもんを愛する独身アラサーサラリーマンです。関西の国立大学を卒業。商社にてトレーディング業務に従事。アメリカ駐在で年間100億円以上の取扱高を持つチームでマネジメントも経験。アメリカ・ブラジルなどの北米・南米のみならず、アジアも含めて、世界を飛び回る商社マン。中心に日々の生活の中で学んだ様々なことを発信し、皆さんと一緒に自由で豊かな人生を目指します。Policyお問い合わせフォームホーム検索トップサイドバーProfileクラケンバイク、バスケ、お酒、そして、ぶりぶりざえもんを愛する独身アラサーサラリーマンです。関西の国立大学を卒業。商社にてトレーディング業務に従事。アメリカ駐在で年間100億円以上の取扱高を持つチームでマネジメントも経験。アメリカ・ブラジルなどの北米・南米のみならず、アジアも含めて、世界を飛び回る商社マン。中心に日々の生活の中で学んだ様々なことを発信し、皆さんと一緒に自由で豊かな人生を目指します。タイトルとURLをコピーしました。