More

    自然言語処理と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²で可視化することで、単なる検索では得られないインサイトを得られることが分かりました。

    紙媒体電子文書化

    アメリカのパブリック・セクターの某団体において、紙媒体の書類をOCR技術を使ってテキストデータに変換し、その内必要な情報を抽出し電子ドキュメントにアノテーションを付けて整理するというプロジェクトにVTAのLITI³構文およびDLPy4による画像認識技術が用いられました。紙媒体の書類には様々な様式のものがあり、同一項目でも書類によっては記載位置が異なっている場合があり、単純な方法では情報抽出ができなかったため、画像認識技術を応用することで異なる様式の書類でも必要な項目を抽出できるように工夫がなされました。このように、自然言語処理技術だけでは対応できない場合であっても、SASであればその他の技術と上手く組み合わせることで問題を解決することが可能です。

    類似論文/特許文書検索

    最後に私が直接携わった事例になりますが、日本のメーカーの研究部門において、手元の論文に類似する論文を論文データベースから検索する際、論文をBERT5によるベクトル分散表現に変換し、論文同士の意味的近さをコサイン類似度で計算し、更にVTAで論文のトピックをを抽出し、手元の論文と意味的近さが近く、かつトピックが同じ論文を抽出することで、論文検索の手間を大幅に削減させました。これらは医薬系の論文と特許文書の両方でそれぞれ行いました。

    以上、自然言語処理の代表的なタスクと事例の紹介でした。SASによる自然言語処理に興味を持っていただけたら幸いです。
    次回は、これら事例を実現する為の技術的な内容をお伝えしていきます。


    1. VTA: Visual Text Analyticsの略で、SAS Viya製品群の内テキスト・マイニングを担当する製品。

    2. VA: Visual Analyticsの略で、SAS Viya製品群の内可視化や簡易モデリングを担当する製品。

    3. LITI: Language Interpretation and Text Interpretaionの略で、テキスト情報をルールベースの論理式で表現するSAS独自のテキスト・マイニング機能を提供。

    4. DLPy: SAS ViyaのPython向けDeep Learning API。シンプルな記法でディープラーニングモデルのアーキテクチャを記述することが可能。

    5. BERT: Bidirectional Encoder Representation from Transformersの略で、自然言語処理に特化したディープラーニングモデル。

    自然言語処理とSAS (1) Republished from Source https://blogs.sas.com/content/sasjapan/2022/09/06/nlpandsas-1/ via https://blogs.sas.com/content/feed/

    Recent Articles

    spot_img

    Related Stories

    Stay on op - Ge the daily news in your inbox