Author

RSS
Advanced Analytics COE ソリューションズ・アーキテクト

医療機関および製薬企業勤務を経て、SAS Japanに入社。主に医療データ分析と自然言語処理を担当。

Analytics
SAS Hackathon 2023 / チームSunny Compass参加報告

本記事では、Sunny Compass - analysis and suggestion of life satisfactionについて、チームメンバーに直接お話を聞き、背後にある思いやチャレンジなどについて解き明かします。 ユニークなチーム結成 チームSunny Compassは経済産業省主催のDX人材育成プログラム「マナビDX Quest 2022」(以下、マナビDX Quest)で出会ったメンバーで構成されるシビックテック・チームだ。 勤務先や居住地もまったく異なる中、オンライン上で交流し、それぞれの強みや専門性を活かしてデータとテクノロジーを使った課題解決に取り組んでいる。   SAS Hackathon 2023 参加の背景 SAS Hackathonが開催されるという話を聞き、どのようなテーマで取り組むかメンバー全員で話し合った。彼らにとって今回が初めての「ハッカソン」参加となったが、「人生の明るい方向を示す羅針盤になる」という想いをチーム名に込めたチームSunny Compassにとって、人々のウェルビーイングの向上を助ける取り組みをすることはメンバー全員が一致するところだった。データは自前で用意する必要があったため、内閣府の生活満足度調査データを使うことにした。 生活満足度調査の分析結果を可視化するモバイルアプリの開発をゴールに設定しました。ユーザーがアプリ上で性別、年齢、そして生活満足度を入力すると、自分が生活満足度の観点でどのくらいの位置にあるのかが分かり、どのような項目・活動に気を配ると更に生活満足度を向上させ得るのか、という改善に向けたヒントを得られる、というものです。   生活満足度調査データを使用するためには、内閣府に書面申請をする必要があった。書類審査に1週間程度要したが、市民に有益なアプリ開発のために利用するという点が評価され、無事データの提供を受けることができた。   ハッカソンに取り組む上で直面した様々な課題   初めての経験 最大の課題は、メンバー全員がハッカソンと呼ばれるイベントに参加するのは初めてであり、ハッカソンではどのようなことをすれば良いのか全く想像がついていなかったという点だった。また、メンバー全員がSAS製品を使ったことがなかったこと、モバイルアプリの開発も初めてだったこと、などがその他の課題として挙げられた。 完全リモートでのコミュニケーション メンバー全員が対面での面識が全くないところからのスタートだった。そのためグループチャットツールで頻繁に集まり、会話ベースで進捗やタスクを確認し合った。プロジェクトマネジメントの観点でタスクの洗い出しをして割り振るなどということよりも、口頭・テキスト問わずコミュニケーションを密に行って、動ける人が動く、全員が各自今抱えている問題について理解し助け合う、励ます、ということを重視した。 マナビDX Questの経験から、メンバー同士助け合うことが何よりも重要ということを全員が理解していたのと、メンバーごとに関連技術の知見・経験が少しずつあって、それを随所随所でうまく活かしたり、メンターの人が付いてくれて質問などに対応してくれたので何とかなりました。 具体的な取り組み内容 オープンデータを活用 内閣府による生活満足度調査のデータには、個人からの回答に基づき、様々な変数とともに、生活満足度が数値で表現されている。満足度が高いほど値が大きくなる。全体的に欠損値が多数含まれていたため前処理が必要だった。 これとは別にe-Statから取得した「都道府県・市区町村のすがた(社会・人口統計体系)」というデータも使用した。こちらには都道府県ごとの人口、世帯数、ヘルスケア関連情報、などが入っている。   モバイルアプリ メインのモバイルアプリの開発では、「どのような項目・活動が生活満足度の向上に役立つのか」という問いに答えられるよう、生活満足度を目的変数とした機械学習モデルを作成した。この機械学習モデルには変数ごとに変数重要度を出力できるタイプのものを採用し、最終的に変数重要度が高い順に上位5つまでの変数(重要変数)を取り出した。これらの重要変数をREST API経由でモバイルアプリから読みに行くという仕組みを作った。 SAS ViyaはREST APIに標準対応しているのでこういった仕組みづくりも無理なく進められました。 モバイルアプリ自体はオープンソースライブラリを利用して開発した。アプリの想定利用ユーザーは個人ということにした。ユーザーがアプリ上で性別、年齢、そして生活満足度を入力すると、類似の属性を持つ人の中で自分が生活満足度の観点でどのくらいの位置にあるのか、ということが可視化され、加えてどのような項目・活動に気を配ると更に生活満足度を向上させ得るのか、という改善に向けたヒントを取得できるようにした。 可視化ダッシュボード 次に可視化ダッシュボードの作成では、想定利用ユーザーを国や自治体の政策立案担当者とし、個人単位ではなくマクロ的な視点でデータを深堀りするための分析ツールというコンセプトに基づいて開発を進めた。モバイルアプリと同じ生活満足度調査データを使っているが、こちらは都道府県ごとに集計し直し、更に都道府県別の統計情報を加味するため、e-Statのデータと結合させたうえで利用した。

Analytics
SAS Hackathon 2023 / チームZEAL参加報告

本記事では、ZEAL - Analysis and Projections of the Japanese Economyについて、チームメンバーに直接お話を聞き、背後にある思いやチャレンジなどについて解き明かします。 SAS Hackathon 2023 参加の背景 SIerであるZEALには、データアナリスト・データサイエンティストといったロールで働く社員は現状まだ多くはない。しかし今後はそういった人材を増やし、データ活用の世界に進出していくという目標を掲げている。 SAS Hackathon開催の知らせを受け取ったとき進むべき道が定まった。部内でプレゼンを行い、SASの取り扱い経験を問わず、興味を持った社員でチームZEALを結成した。 それがハッカソン開催の約1年前でした。そして半年前頃からテーマを何にするかチーム内で議論してきました。 SDGsをキーワードに、カーボンフットプリントを可視化することでCO2排出量を減らす事に貢献する、であったり、今後人類が必ず直面する喫緊の課題で身近な問題でもあり必ず解決する必要がある問題でもある食料問題に取り組む、など様々な案が出た。 最終的に定まったテーマは、「不確実性を消し去ることで、新型コロナのようなアウトブレイクに対して飲食業界が効果的な対策を立案できるよう支援すること」になった。当初は有価証券報告書による企業業績の変動をコロナ前とコロナ後で比べていく方針だったが、データ数が少なかったため断念せざるを得なかった。そこで、ある程度データ数が確保できる家計の支出データを使うことにした。 やはり当初から食料問題に取り組むという案が出ていたことと、コロナのようなパンデミックの影響が強く出た分野であったため、飲食業界を選択しました。家計の外食支出の変動から、間接的に飲食業界の隆盛を予測する、というものです。 コロナによる影響の強弱について念のため全産業分野を網羅的に確認した。ここでSAS Viyaの機能が役に立った。コロナの影響が特に大きかった産業分野は、飲食、交通(航空)、教育・娯楽だった。中でも交通(航空)は飲食業以上に影響が大きかった。しかし交通(航空)はテーマには選ばなかった。食糧問題に取り組むという基本方針があったからだ。 SAS Viyaは統計的知識がそこまで無くても十分に扱え、確実に結果を出すことができました。これはZEALが得意とする、「可視化によるインサイトの引き出し」というアプローチにもとてもフィットしていました。操作性も他のBIツールと比べて特段難しいというわけではなかったので問題はありませんでした。 ハッカソンに取り組む上で直面したチャレンジ 当初使用を想定していた有価証券報告書データのデータ数が時系列予測をするうえで足りないということが途中で判明したため、そこから別のデータを探し出す作業に急遽取り組む必要があった。3,4日で新しいデータが見つかった。 この部分はテーマ選定の際にも問題になりましたが、テーマはいろいろ考えられたとしても、それに必要なデータソースを集められなければ実際には分析を進めることができません。使えるデータの種類によって、取り組めるテーマが決まる、という側面がありました。 幸いZEALのサービスに、CO-ODEという日本の政府・自治体が出しているオープンデータを集積したデータベースがあり、そこに分野別家計支出データがあったので使うことにした。   具体的な取り組み内容 2つの時系列予測モデル 時系列予測モデルを2つ用意し、2つのモデルの予測値の差分をパンデミックの影響度合いとして可視化した。 つまりは、2019年12月末までをパンデミック前期間、2020年1月以降をパンデミック後期間とし、パンデミック前期間のデータで訓練したモデルをパンデミック前モデル、パンデミック後期間のデータで訓練したモデルをパンデミック後モデルとし、両者同じ将来期間のデータに対して予測をさせたうえで、その予測値の差分を取りました。 パンデミック前モデルとパンデミック後モデルの作成はいずれもSAS Viya Visual Forecastで複数のモデルを作成し、その中から精度が最も良いもの(=チャンピオンモデル)を選ぶという方法を採用した。いずれもチャンピオンモデルは、季節性モデルが選ばれた。 この辺り大変な作業のように聞こえますが、全てSAS Viya Visual Forecastによって自動処理されるのでとても簡単でした。 データの加工・整形で一工夫 必要なデータは全てCO-ODEから得ることができたが、データの加工・整形に多少の工数が必要だった。 CO-ODEの最大の売りは網羅性で、様々なソースからデータを手当たり次第かき集めてきています。使い方は使う人によって千差万別、逆に言うと使い方によってはひと手間かける必要があります。今回特に問題になったのは、時間粒度の違いでした。 データソースによって四半期粒度のもの、日次粒度のもの、と様々だったが、最終的に、月次粒度で統一した。四半期粒度のものは内挿によって月次粒度に変換した。 そこは少し試行錯誤が必要でした。一方データのETLに関しては、CO-ODEからはCSVがそのまま取り出せるので、それをそのままViyaにアップロードするだけで済みました。 成果 パンデミックによる影響を、予測値の差として可視化することに成功した。これは将来また別のパンデミックが起きたときにも参考値として利用できるものだ。 また、直接的な成果というわけではないのですが、ハッカソンを通して普段関わりのない社員同士が初めて関わりを持つようになり、社内のコミュニケーションが活性化しました。これは思わぬ収穫でした。 展望

Analytics
SAS Hackathon 2023 / チームCTC参加報告

本記事では、Critical Thinking Crew - Health Monitoring to Prevent Solitary Deathについて、チームメンバーに直接お話を聞き、背後にある思いやチャレンジなどについて解き明かします。 SAS Hackathon 2023 参加の背景 チームCTCのリーダー福永氏にとって今回のSAS Hackathon参加には特別な思いがあった。福永氏の個人的な活動として取り組んでいるプロボノを通して、孤独死にまつわる社会的課題があることを認識していたからだ。 日本では孤独死する人が年間25000人を超えていて、遺体が発見されるまでに平均2週間以上かかり、発見時に腐敗が進んでいることも多いそうです。これは高齢者の課題と捉えられがちですが、現役世代の孤独死も4割近くあるという報告があります。この社会的課題に取り組むという構想を2022年末頃から抱き始め、ソリューションの中身を漠然と考えていました。 それとは別にスマホカメラで脈拍を計測する手法があることを知った時、彼の頭の中で課題とソリューションが繋がり、構想が具体化し始めた。そこにタイミングよくSAS Hackathon開催の知らせが届いたためエントリーすることにした。 所属する部署においても企業のESG分析などに携わることもあり、ソーシャル・グッドのための活動としてハッカソン参加は会社も後押ししてくれました。 エントリー部門はヘルスケア&ライフサイエンス部門になった。福永氏にとって今回が3回目のSAS Hackathonの参加となった。1回目では数値データを、2回目ではテキストデータを扱ってきたが、3回目の今回では画像データを扱うことになった。 ハッカソンに取り組む上で直面した様々なチャレンジ 繁忙期と重なってしまった メンバー全員が非常に繁忙なタイミングと重なってしまったため、登録したあとにしばらく活動ができず、着手できたのは締め切りまで1か月を切ってからになってしまった。 結果的に最後の2週間でなんとか作り切ったという感じです。メンターさんが何度か相談会を設けてくれたこともあり、色々と困りごとを相談できましたし、良いペースメーカーになりました。 画像認識技術の習得と専用環境の準備 画像認識専門のエンジニアがメンバーにいなかったものの、画像認識に関するSASのブログとオープンソースの専用のライブラリを駆使して何とか乗り切った。まずは画像認識に関する知識を習得することろから始めた。 物体検知モデルのチュートリアルで骨格推定のやり方を学びました。遠回りのようで実はそれが一番手っ取り速かったと思います。 顔色から脈拍を推計する手法に関しては公開コードを探して利用することにした。姿勢推定のためのモデル訓練が短時間で収束するような工夫もした。また通常は必要になる環境構築のための工数を、Google Colaboratory(WEBブラウザ上で機械学習を実行できるサービス)を利用することで大幅に削減した。 また当初物体検知モデルをファインチューニングするうえで、与えられた環境とは別の環境を構築する必要がありました。そこはGoogle Colaboratoryを導入することで難なくクリア出来たのですが、GPUで事後訓練した後の物体検知モデルをCPU版に変更する部分でエラーが多発して大変でした。 その他、今回使用することにした物体検知モデルをSASとインテグレーションする部分の経験が無かったため新たな経験を得ることとなった。 具体的な取り組み内容 スマホで撮影した動画を利用 スマホで自身を撮影することで姿勢やバイタルを推定し、危険な状況になったら友人・家族に通知する自衛ツールを開発した。 一般的な見守りサービスですと、器材の設置や、知らない人に監視されている感じに抵抗感がある人が多く、特に比較的若い層にこの傾向があるとプロボノの活動を通して聞いたことがあります。そこでスマホを利用することにしたんです。 次に姿勢推定のための物体検知モデルをSAS Viya上に搭載した。スマホで撮影した動画から姿勢の状態を推定できるものだ。加えて、顔色の微妙な変化を波形から捉え、心拍数を推定した。最後に、姿勢と心拍数から、「倒れている」かつ「心拍数が極端に低い」等の閾値に該当する場合にアラートを発出する仕組みを構築した。 物体検知モデルの訓練とバイタル判定ルールの作成 使ったデータは2種類ある。まず物体検知モデルの事後訓練に必要な画像データについては、CTC社内にあった画像データを利用した。最終的に厳選した1500枚でモデルの事後訓練をした。 事後訓練には画像のアノテーションが必要だった。アノテーション作業の内容は、映っている人物を四角い枠線で囲い、囲われた人物がどのような姿勢でいるのか注釈を付ける、というものだ。姿勢の種類は全部で4種類、立っている、寄りかかっている、座っている、倒れている、の中からアノテーション作業者が手動で選択することになる。 そこは子会社のCTCひなり株式会社の障がい者スタッフさんの助けを借りることができ、大幅な工数削減を実現できました。1500枚のアノテーション作業を1週間で完了してもらえました。 脈拍の低下の推定に必要な心拍データについては、オープンデータを利用した。このデータは寝ている状態から運動して休息するという一連の流れを時系列で保持する波形データだ。 「こういう状況でこういう数値であれば生存を疑うレベルに該当すると言って良い」というルールを作るためにこのデータを用いました。心拍データのクレンジング作業には、Viyaのデータ準備機能を使いました。こちらはGUI上で簡単に実行できました。 成果 孤独死抑止ユースケースとして開発したが、事務作業員や建築現場の作業員のヘルスチェック、大規模災害時のトリアージ支援等、多くの応用例が考えられる。結果として技術部門賞を受賞することができた。 非常に名誉なことで会社のみんなや家族・友人もとても喜んでくれました。また、安定したViya環境を好きなだけ触れたことも大きな収穫でした。普段の業務では中々使うことのない機能を使うことができ、勉強になりました。 展望

Analytics
SAS Hackathon 2023 / ハッカソン紹介

Hack SAS! SAS HackathonはSAS社が毎年春に開催する完全オンライン開催のハッカソン・イベントです。参加チームは開催期間の1か月間を使って、自分たちで設定した社会課題やビジネス課題を、SAS Viya(および任意のツール)を使って解決に導きます。エントリーできる部門が複数用意されており、参加チームによって選べるようになっています。2023年は部門が計10個あり、部門ごとの賞に加え、技術賞、特別賞、地域賞の3つの部門横断賞が用意されました。各賞ごとに個別の審査基準が設けられているため、技術レベルを高めるのも良し、ビジネスインパクトを狙いに行くのも良し、等々様々な戦い方があり得ます。なお審査は部門ごとにSAS社員から選ばれたインダストリ・エキスパートが実施するため、常に適正な評価が期待できます。 今年は世界各国から130チーム以上がエントリーしました。受賞チームは9月開催のSAS Exploreに招待されました。その他ハッカソンについての詳しい内容については、EnterpriseZine編集部による日本語のSAS Hackathonについての紹介記事もありますのでご興味があればご覧ください。 ところでSAS Hackathonは他のハッカソン・イベントと比べてどんなところがユニークなのでしょうか?よくあるハッカソン・イベントでは、特定のツールの使い方を試行錯誤を通して学ぶ、であったり、新しいサービスやアプリケーションの開発、などが目的になっていますが、SAS Hackathonでは以下3点を主な目的にしています: ビジネス課題の解決 Data for Goodの観点から、データ分析の結果をより良い社会の実現のために使ってもらう(データ活用による人道支援や社会課題の解決) データリテラシーを備えた人材の育成・輩出・ネットワーキング そしてこれらの目的の先にあるもの、つまりはアプリケーションの開発およびサービス化といった段階における商業化の支援もSAS Hackathonで行います。もちろん、知的財産は参加者が保有します。 様々なオモテナシ 以上の3つの目的を達成するために重要な要素の一つが、組織の垣根を越えたコラボレーションの実現です。その実現を手助けするため、全世界のSAS社員が様々な工夫をして参加者をもてなします。オモテナシ駆動型ハッカソン・イベント、それがSAS Hackathon、と言っても過言ではありません。ではどのようにしてSAS社員はSAS Hackathonの参加者をもてなすのでしょうか? メンターによるオモテナシ イベントにエントリーしたチームにはそれぞれメンターが付きます。メンターはSAS製品やデータ分析に詳しいSAS社員から選ばれ、チームが成功裏にハッカソンを終えられるようサポートします。分からないことがあったら何でもメンターに質問できます。 学習コンテンツによるオモテナシ 普段は有償で提供されているSASのラーニング・コースやオンデマンド学習コンテンツが、ハッカソン期間中は参加者に無償で提供されるため、技術的なキャッチアップやデータリテラシーの習得がやり易くなっています。 分析環境によるオモテナシ 分析環境も無償で提供されます。既に構築済みですぐに使えるSAS Viya環境を使って直ちに分析を開始できます。そこにはJupyter Hubも入っていてPythonやRが使えます。環境構築の手間が要りません。その他、アプリケーション開発を簡便に行うためのツールなども提供されます。詳細はこちらのページをご覧ください。それ以外のツールを使いたい場合は、参加チーム自身で準備することになりますが、基本的にどんなツールを使ってもOKです。 フォーラムによるオモテナシ また、参加チームはSAS Hacker's Hubで他の参加チームと交流したりディスカッションすることができます。参加者同士のネットワーキングの場にもなっています。 自由闊達なムード醸成によるオモテナシ SASと聞くと少々お堅いイメージを持たれる方も多いかも知れません。しかし近頃のSAS社員はオレンジ色のSAS Hackathonフーディーを着て、課題解決のためのコラボレーションの重要性を表現したラップを歌います。   It's more than a competition It's your story told, the goals that

Analytics
自然言語処理とSAS (3)

こんにちは!SAS Institute Japanの堀内です。今回も自然言語処理について紹介いたします。 前回の投稿では、実際にSASを使って日本語の文章を扱う自然言語処理の例を解説しました。 最終回の本投稿ではその応用編として、自然言語処理の代表的なタスクとSASによる実装方法を紹介します。なお、ここでいうタスクとは「定式化され一般に共有された課題」といった意味になります。自然言語処理には複数のタスクがあり、タスクごとに、共通する部分はあるとはいえ、問題解決のアプローチ方法は基本的に大きく異なります。SASには各タスクごとに専用のアクションセット1が容易されています。 要約タスク その名の通り文章を要約するタスクです。SASではtextSummarizeアクションセットで対応可能です。 ここでは、NHKのニュース解説記事「気になる頭痛・めまい 天気が影響?対処法は?」(https://www.nhk.or.jp/kaisetsu-blog/700/471220.html) の本文を5センテンスで要約してみましょう。 import swat conn = swat.CAS('mycashost.com', 5570, 'username', 'password') conn.builtins.loadActionSet(actionSet='textSummarization') conn.textSummarization.textSummarize(addEllipses=False, corpusSummaries=dict(name='corpusSummaries', compress=False, replace=True), documentSummaries=dict(name='documentSummaries', compress=False, replace=True), id='Id', numberOfSentences=5, table={'name':CFG.in_cas_table_name}, text='text', useTerms=True, language='JAPANESE') conn.table.fetch(table={'name': 'corpusSummaries'}) numberOfSentencesで要約文のセンテンス数を指定しています。結果は以下の通りです。 'まず体調の変化や天気、気温・湿度・気圧などの日記をつけ、本当に天気が影響しているのか、どういうときに不調になるのかパターンを把握すると役立ちます。 気温・湿度以外にも、気圧が、体調の悪化や、ときに病気の引き金になることもあります。 私たちの体は、いつも耳の奥にある内耳にあると言われている気圧センサーで、気圧の変化を調整しています。 ただ、天気の体への影響を研究している愛知医科大学佐藤客員教授にお話ししを伺ったところ、「台風最接近の前、つまり、気圧が大きく低下する前に、頭が痛いなど体調が悪くなる人は多い」ということです。 内耳が敏感な人は、わずかな気圧の変化で過剰に反応し、脳にその情報を伝えるので、脳がストレスを感じ、体のバランスを整える自律神経が乱れ、血管が収縮したり、筋肉が緊張するなどして、その結果、頭痛・めまいなどの体に様々な不調につながっているのです。' 重要なセンテンスが抽出されていることが分かります。   テキスト分類タスク 文章をいくつかのカテゴリに分類するタスクです。その内、文章の印象がポジティブなのかネガティブなのか分類するものをセンチメント分析と呼びます。ここでは日本語の有価証券報告書の文章をポジティブかネガティブか判定してみます。使用するデータセットは以下になります。 https://github.com/chakki-works/chABSA-dataset (なお、こちらのデータセットには文章ごとにポジティブかネガティブかを示す教師ラベルは元々付与されておりませんが、文章内の特定のフレーズごとに付与されているスコアを合算することで教師ラベルを合成しております。その結果、ポジティブ文章は1670文章、ネガティブ文章は1143文章、合計2813文章になりました。教師ラベルの合成方法詳細はこちらのブログをご覧ください。) pandasデータフレームにデータを格納した状態を確認してみましょう。 df = pd.read_csv(CFG.local_input_file_path) display(df)

Analytics
自然言語処理とSAS (2)

こんにちは!SAS Institute Japanの堀内です。今回も自然言語処理について紹介いたします。 第1回目の投稿では、最近の自然言語処理の応用例とSAS社が携わった自然言語処理関連の実案件の概要を紹介しました。 第2回目の本投稿では実際にSASを使って日本語の文章を扱う自然言語処理の例を解説していきます。 テキストデータって何? 自然言語処理を語る前に、自然言語処理が処理対象とするデータのことを知る必要があります。自然言語処理で扱われるデータはテキストデータと呼ばれています。ここからはテキストデータがどういうものか探っていきます。 テキストとは以下のようなものです。 「自然言語処理で扱われるデータはテキストデータと呼ばれています。本投稿ではテキストデータがどういうものか探っていきます。」 何の変哲もない日本語の文章です。日本語以外の言語で書かれた文章ももちろんテキストと呼ばれます。 ではテキストデータとは何でしょう?データと言うからには何らかの構造を持っていると考えます。例えば行と列が与えられたテーブルデータがわかりやすい例です。 テキストデータと呼ぶとき、テキストに何らかの構造を与えられたものを想起すると良いかと思います。上で挙げたサンプルのテキストをテキストデータに変換してみましょう。 ["自然言語処理で扱われるデータはテキストデータと呼ばれています。",  "本投稿ではテキストデータがどういうものか探っていきます。"] これは句読点でテキストを区切り、リストに格納した例です。やりかたは他にもあります、 [["自然言語処理",  "で", "扱われる", "データ", "は", "テキストデータ", "と", "呼ばれて", "います", "。"],  ["本投稿", "では", "テキストデータ", "が", "どういうもの", "か", "探って", "いきます", "。"]] これは先ほどの例で2つのテキストに区切ったうえで、それぞれのテキストを更に単語ごとに区切って別々のリストに格納した例になります。これをテーブルデータのように整えると、 ID COL1 COL2 COL3 COL4 COL5 COL6 COL7 COL8 COL9 COL10 1 自然言語処理 で 扱われる

Analytics
自然言語処理とSAS (1)

こんにちは!SAS Institute Japanの堀内です。今回は自然言語処理について紹介いたします。 自然言語処理とは、人間が普段会話したりメールしたりする際に使う言語(日本語や英語など)を、一種の信号とみたてて、その信号を機械が理解し、機械によって意味のある出力を得られるように工夫して処理することを指します。”自然”と明記しているのは機械にとっての日常語であるプログラム言語や機械言語と区別するためです。近年のAIやディープラーニングの発展とともに、この自然言語処理の分野も驚異的な進歩が見られ、私たちの日常生活の様々な分野で実際に活用されるようになってきました。第1回目の本投稿では、その内のいくつかを紹介いたします。第2回目以降は、実際にSASを使った自然言語処理の例を解説していく予定です。最後まで読んでいただければ、自然言語処理のホットトピックの内のいくつかを実装レベルで把握することができるようになるかと思いますのでどうぞお付き合いください。 最近の自然言語処理の実務適用例 チャットボット フリーテキストを入力欄に書き込むと、それに応じてボット(プログラムされた自動応答マシン)が適切な返答をテキストで返してくれるものです。様々なウェブページやアプリケーションに内蔵されるようになってきました。 例えば、不動産検索アプリに内蔵されたチャットボットでは、希望の条件をフリーテキストで入力すると、条件に合う物件を瞬時にレコメンドしてくれます。これによりユーザーが不動産検索サイトで条件を指定したり、相談窓口に電話して担当者に希望を伝えたりする手間が省けるようになってきています。   文書検索 手元にある長文の文書(例えば小説や論文など)と類似する文書を探したいとき、皆さんはどうしていますか?検索キーワードをいくつかピックアップしてGoogleなどのサーチエンジンで検索する、というのが最もオーソドックスな方法かと思いますが、最近では文書をまるごとサーチエンジンに入力し、似ている文書を探してくる文書検索ができるようになってきました。似ている文書がどのくらい似ているのかという指標も併せて返してくれるので、大量の論文を検索しなければならないビジネスや研究分野においては、検索の手間が大幅に減り大変便利です。   自動採点 皆さんも学校の国語や英語の授業で、長文を読んで質問に対して答えを書くという長文読解問題を解いたことがあるかと思います。私はこの手の問題が大の苦手でした。なぜならまず長文を読まなければならないのと、答えも一定の長さの文章を書かなければならず、とても手間に感じていました。実はこれ、テストを受ける生徒が嫌がるだけでなく、採点をする先生も同じくらい嫌だったのではないかなと思います。生徒の書いた解答文を読み解き、模範解答とされる文章と意味的に合致しているかという判断を下さなければならないのは結構手間がかかるはずです。実は最近の自然言語処理の発展により、この採点の部分を自動化することができるようになってきています。生徒の書いた文章と模範解答文との意味的距離をモデルが計算し、意味が近ければ正解、遠ければ不正解とすることができます。 また、長文のどの部分が解答となる要素を含んでいるか、というところまで判断し、解答文を自動作成することもできるようになってきました。これはQAタスクと呼ばれる自然言語処理の代表的なタスクの直接的な応用例になります。   オートフィル機能・スペルチェック機能(ライティング支援機能) 文書をタイピングする際、先読みして候補の単語をレコメンドしてくれたり、タイプした文のスペルチェックをしてくれたりする機能を皆さんも使ったことがあるかと思いますが、最近のものは複数行のセンテンスをレコメンドしてくれるようになってきました。またプログラミングの支援機能として書きたい内容をフリーテキストで書くと、該当のコードを提案してくれる機能がGitHubに実装されるなど、世の中はますます便利になりつつあります。(今私はブログを書いているわけですが、書きたいことの概要だけを書くと実際のブログ記事が提案されるようになったらどんなに仕事が捗るかと思います。) このように、これまで人間が苦労をして行っていた言語処理を機械ができるようになってきました。上にあげた例は実務適用例のごく一部です。様々な分野で自然言語処理が適用されようとしています。では、実際にSASではどのような事例が扱われているのでしょうか?   SASによる事例紹介 ここではSASがこれまで手掛けてきた自然言語処理のプロジェクトの一部を紹介します。 MR活動最適化 フランスの製薬企業において、SNSデータを解析することでKOL (Key Opinion Leader: 製薬企業の販売促進に影響力を持つ医師などの専門家) のセグメンテーションを行い、MR活動の最適化を行いました。SNSデータの解析にVTA¹が用いられました。 紹介記事: https://www.linkedin.com/pulse/how-does-hcp-behavioral-segmentation-help-build-full-olivier-bouchard/   院内有害事象発生防止の取り組み ノルウェー北部の中規模病院にて院内有害事象発生の未然防止のため標準的なツールGTT(トリガーツール)を半自動化する改良を加えることで、同等の精度を保ちながら院内有害事象の発見に要する時間を94%削減させました。電子カルテにはフリーテキストで記載された様々な様式の文書がありますが、そこから院内有害事象のトリガーとなる事象を抽出する部分にSASの自然言語処理の技術が使われました。 紹介記事: https://www.sas.com/da_dk/customers/helse-nord-patient-safety.html   有害事象発生予測 市販後の医薬品安全性監視において、FDA(アメリカ食品医薬品局)に寄せられた患者テキストの内、対象とする有害事象の発生を真に報告しているものをディープラーニングにより自動抽出する試みがなされました。テキスト解析とそれに続くディープラーニングによる予測モデルの構築にSASの技術が使われました。 紹介記事: https://communities.sas.com/t5/SAS-Global-Forum-Proceedings/Developing-a-SAS-Deep-Learning-MedDRA-encoder-MedDRA-DeepCoder/ta-p/735360   院内感染発生状況モニタリングシステム デンマーク南部地域一体の病院における、院内感染発生状況をモニタリングするシステムの開発が行われましたが、フリーテキストで記載された電子カルテの文書の中から、院内感染が疑われる箇所を抽出するアルゴリズムにSASの自然言語処理の技術が使われました。 紹介記事: https://www.sas.com/da_dk/customers/the-region-of-southern-denmark.html   消費者安全に関する報告のテキスト解析 消費者安全を担当するアメリカの政府機関に寄せられた消費者による様々な商品の安全性に関する報告文書を、VTAで解析し, VA²で可視化することで、単なる検索では得られないインサイトを得られることが分かりました。