2022-05-30
前回のコラムで紹介した自然言語処理について、今回は技術的な概要を分かりやすく解説します。自然言語処理をより身近に感じてもらい、今後のビジネスで活用する際の一助としていただければ幸いです。
「自然言語」とは、日本語や英語など私たち人間が日常的に使用する言葉のことで、「自然言語処理」はそのような自然言語を処理・分析する技術です。膨大なテキスト・音声データを機械が処理可能な形に変換して学習させることで、機械が自然言語の特徴を理解し、翻訳や文章生成などさまざまなタスクを行うことができるようになります。
自然言語処理の技術は驚異的なスピードで進化しており、PwCでもリスク分析やAI-OCRによるデータ抽出など、さまざまなソリューションで活用している大注目の技術領域です。
ここからはSMSメッセージがスパムか否かを判定するAIモデル作成の事例をもとに、自然言語処理がどのように活用されているかについて簡潔に紹介します。
データの内容:
label列: メッセージがスパムか否か(ham=スパムではない)
message列: SMSメッセージの内容
label | message | |
0 | ham | Go until jurong point, crazy..Available only... |
1 | ham | Ok lar... Joking wif u oni... |
2 | spam | Free entry in 2 a wkly comp to win FA Cup say... |
3 | ham | U dun say so early hor... U c already then say... |
4 | ham | Nah I don't think he goes to usf, he lives aro... |
自然言語処理を行う前準備として、機械可読目録とコーパス(corpus)が必要になります。
耳慣れない用語ですが、「私たち人間が英単語帳、英語例文集を使って英語を勉強するように、機械が辞書を使いながら人間の書いた文章を学習する」というイメージを持っていただけると分かりやすいでしょう。
機械可読目録は「人間の言葉を機械が理解するための辞書」、コーパスは「言葉の使用方法を大量に蓄積・記録したデータベース」の役割を果たします。
今回の事例ではSMSメッセージが全て英語のため、膨大な英文データを収集し機械に学習させるイメージです。
実務に役立つTips
初めに行われるのが、形態素解析と呼ばれる作業です。これは「文章を単語レベルに分割し、品詞等の判別をする作業」のことです。以降で少し掘り下げていきましょう。
「単語レベル」で分割した要素は「形態素」と呼ばれており、これは言語学の用語で「意味を持つ表現要素の最小単位」を意味します。例えば、「私は日本人です」という文章に対して形態素解析を行った場合、「私 / は / 日本人 / です」となりますが、これをさらに「日/本/人」や「で/す」まで分解してしまうと意味が通じなくなってしまいます。
それでは、例文として有名な「すもももももももものうち」に対して形態素解析を行った処理結果を見ていきましょう。文章が形態素単位で分割され、それぞれに品詞が割り当てられます。
形態素 | 品詞 |
すもも | 名詞(一般) |
も | 助詞(係助詞) |
もも | 名詞(一般) |
も | 助詞(係助詞) |
もも | 名詞(一般) |
の | 助詞(連体化) |
うち | 名詞(非自立) |
上記の例は日本語でしたが、今回のデータは英語の文章のためすでに各単語がスペースで分かれており、日本語と比較すると形態素解析を含む前処理が容易に行えます。
SMSメッセージの形態素解析 + 前処理の例:
前処理前: URGENT! You have won a 1 week FREE membership
前処理後: urgent win 1 week free membership
形態素解析を行うにあたって、下記のような前処理を行うことが一般的です(ほんの一例です)。
・感嘆符など特殊文字の削除
・単語を小文字へ変換
・”You”や”a”など、あまりにも一般的で分析の役に立たない単語(Stop Words)の削除
実務に役立つTips
次に形態素解析を行った文章をベクトル化します。「ベクトル化」とは以下のように「文章を数値化すること」です。
(例) ['urgent', '1', 'week', 'free', 'membership'] → [0.5253, 0.2347, 0.2654]
AIの学習を行うにあたってテキストのままでは機械が読み込めないため、数値に変換して処理する必要があります。
単語の出現頻度をもとにベクトル化するモデル、文章全体の文脈を考慮してベクトル化を行うモデルなど、現在までにさまざまな手法が確立しており、多くのモデルが無料公開(オープンソース)され世界中で利用されています。
今回はその中でも一番シンプルな、単語の出現頻度をベースにベクトル化を行う手法についてご紹介します。下図の例では、3つの文を使ってベクトル化を行っています。
1. まずは文章全体(3文章)でユニークな単語を全て抜き出します。
→ “I”, “like”, “dogs”, “cats”
2. 1単語あたり1列作成します。
→ 今回は4単語あるので4列
3. 各文における各単語の出現回数を数値化します。
→ 1番の文であれば、”I”, “like”,”dogs”の列に1を入れて、その他の列は0を入れる
SMSメッセージをベクトル化した結果:
4,179行の文章に対して、7,235列(= 7,235単語)のベクトルができました。
4179 rows x 7235 columns
実務に役立つTips
最後に、ベクトル化された文章をもとにAIモデルの学習を行います。今回の趣旨は自然言語処理のため詳細は割愛しますが、学習のイメージは、
[1, 1, 1, 0, 0, 0, 0] → Spam
[0, 1, 1, 1, 0, 0, 1] → Ham(=スパムではない)….
という流れで、どういったベクトルが来た時にスパムと判定すべきかをAIに学習させます。答えを準備して学習を行うため、教師あり学習と呼ばれています。
このメッセージはスパムで、このメッセージはスパムではない、といった正解データの準備は人間が行う必要があるため(ラベリング)、
など、ベクトル化の手法以外にも色々と考慮すべき点があります。
SMSメッセージのデータを使ってAIの学習を行った結果:
SMSメッセージがスパムか否かを97%の精度で判定できるAIモデルの開発に成功。以下、Python(scikit-learn、外部サイト)を使ったAccuracyの出力処理とその実行結果です。
Pythonコード
metrics.accuracy_score(y_true, y_pred) # y_trueは正解データ、y_predはAIの予測結果です。
実行結果
0.9727207465900933
実務に役立つTips
自然言語処理は急速に進化を遂げている技術であり、これを活用することで、これまでには得られなかった有用なインサイトを導き出すことができます。前回のコラムで紹介したように、PwCではさまざまな領域で自然言語処理や他のAI技術と幅広い専門分野の知見を組み合わせ、クライアントの課題解決を支援しています。
【参考文献】
・Natural Language Processing (NLP) for Beginners (Kaggle)
https://www.kaggle.com/bhavinmoriya/natural-language-processing-nlp-for-beginners
R.Kadoya
外資系企業への会計税務サービス提供の経験を活かし、AIを活用した経理・税務業務のDXプロジェクトに従事。AIとOCR/NLPを組み合わせて、データの自動抽出から加工・分析、最終レポートの作成までをエンドツーエンドで効率化するAIソリューションの開発を得意分野とする。米国公認会計士。
PwC Japanグループでは、データアナリティクス領域でご活躍いただける方を募集しています。本記事に関連する求人情報は以下ページよりご覧ください。
(1):テック人材の採用と維持における企業の課題
(2):フィーチャーエンジニアリングとは?
(3):SNSを活用したコロナ禍における人々の心理的変化の洞察
(4):自然言語処理(NLP)の基礎
(5):今、データサイエンティストに求められるスキルは何か?データサイエンティスト求人動向分析
(6):コロナ禍における人流および不動産地価変化による実体経済への影響
(7):「匠」の減少―技能継承におけるAI活用の道しるべ
(8):開示された企業情報におけるESGリスクと財務インパクトの関係性の特定
(9):ビッグデータ分析で特に重要な「非構造化データ」における「コンピュータービジョン(画像解析)」とは
(10):自然言語処理・数理最適化による効率的なリスキリングの支援
(11):スポーツアナリティクスの黎明 サッカーにおけるデータ分析
(12):AIを活用した価格設定支援モデルの検討―外部環境変化に即座に対応可能な次世代型プライシング
(13):MLOps実現に向けて抑えるべきポイントー最前線
(14):合成データにより加速するデータ利活用
(1):ブロックチェーン技術の成熟度モデルとステーブルコインの最新動向について
(2):3次元空間情報の研究施設「Technology Laboratory」のデジタルツイン構築とデータの管理方法
(3):3次元空間情報の研究施設「Technology Laboratory」における共通ID「空間ID」と自律移動体の測位技術
(4):G7群馬高崎デジタル・技術大臣会合における空間IDによるドローン運航管理
(1):COVID‐19パンデミック下のオンプレミス環境におけるMLOpsプラクティス
(2):機械学習を用いたデータ分析
(3):AWSで構築したIoTプラットフォームのPoC環境をGCPに移行する方法
(4):テクノロジーの社会実装を高速に検証するPwCの独自手法「Social Implementation Sprint Service」-テクノロジー最前線
(5):自動車業界におけるデジタルコックピットの擬人化とインパクト
(6):成熟度の高いバーチャルリアリティ(VR)システム構築理論の紹介
(7):イノベーションの実現を加速する「BXT Works」とは
(8):Power Platformの承認機能、AI Builderを活用して業務アプリを開発する方
(9):社会課題の解決をもたらす先端テクノロジーとディサビリティ インクルージョンの可能性