【保存版】さまざまな自然言語処理の手法を学べるレシピ40選（2022年9月版）

# はじめに

AxrossRecipeを運営している松田です。

**[AxrossRecipe](https://axross-recipe.com/recipes)** は、エンジニアの"教育"と"実務"のギャップに着目し、「学んだが活用できない人を減らしたい」という想いで、ソフトバンク社内起業制度にて立ち上げたサービスです。

現役エンジニアによる実践ノウハウが"レシピ"として教材化されており、実際の業務に近いテーマで、プラグラミングで動くものを作りながらAI開発やデータ分析を学べます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/52cee293-a7f2-6249-260b-07200115a735.png)

Axross: https://axross-recipe.com
Twitter: https://twitter.com/Axross_SBiv

# 自然言語を処理するとは
自然言語処理（Natural Language Processing、略称：NLP）は、**人間が日常的に使っている話し言葉や書き言葉（自然言語）を、コンピュータに処理させる一連の技術**のことです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/c844d416-351a-4e56-78fc-f11f9928ddea.png)

自然言語とよく対比されるのが、プログラミング言語で、コンピュータを制御するためのプログラムを記述するために利用します。自然言語は、人間が使う言葉であり、人によって言葉の意味が異なったり、前後の文脈やその人の意図・感情などの要素を汲み取らないと文章の解釈が分かれたりするため、言語に「曖昧性」が含まれます。一方で、プログラミング言語は、コンピュータが同じ表現を常に同じ解釈で、同じように制御するようにプログラムするための言語であるため、言語は一意で、曖昧性はありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/e801d730-a1d0-c45b-65c6-ffd98cc2034f.png)

# 自然言語処理
![スクリーンショット 2022-02-28 16.36.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/f57bf1bf-502d-67d5-5c71-460584657362.png)

## 単語認識
**単語認識**は、言葉が持つ意味を認識する技術です。

## 単語分類
**単語分類**は、読み込んだ文字データから、単語の持つ意味ごとにカテゴリ分類する技術です。ポジネガ判定がその例です。

自然言語データを前処理することによって、単語認識や分類ができるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/5449877a-20d7-e40e-7234-b2a98e0ba46a.png)

## 単語可視化
単語可視化は、読み込んだデータの中で頻出単語の頻度や共起関係等を可視化する技術です。Wordcloudが代表的なライブラリです。

### RNN (Recurrent Neural Network)
**RNN**は、人間の会話や文章のような、連続的なデータ処理に特化したニューラルネットワークです。時系列を考慮することができるため、2010年ごろに自然言語処理の分野で活用できると、一躍脚光を浴びました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/afa6f992-569f-5985-fd3f-12d42a8d0a2c.png)

### LSTM (Long short-term memory)
**LSTM**は、2014年に発表されたRNNの改良モデルです。RNNの長期依存性、勾配消失の問題を、LSTMブロックという機構を導入することで解決し、時系列情報をうまくネットワーク内に保持できるようになりました。

### word2vec
**word2vec**は、2013年にGoogleの研究チームによって開発された、単語の分散表現を獲得する推論ベースのモデルです。単語間の類似度だけではなく、単語の概念も獲得することが可能です。

## 文字起こし
**文字起こし**は、録音ファイル等の音声データから、文字データに変換する技術です。

## 文書要約
**文書要約**は、読み込んだ文書データをもとに要約する技術です。

## 文書翻訳
**文書翻訳**は、ある言語を他の言語に翻訳する技術です。

## チャットボット
**チャットボット**は、リアルタイムで短文のやり取りを行うことを意味する「チャット」と、一定の作業を自動化するロボットを意味する「ボット」を合わせた名称で、チャットでの質問に自動で返答するプログラムやアプリケーションのことです。

https://qiita.com/Axross_SBiv/items/36c8c5976d89a5e2c28f

## 文書分類
**文書分類**は、電子文書の内容に沿ってカテゴリごとに分類する技術です。

### BERT (Bidirectional Encoder Representations from Transformers)
**BERT**は、2018年にGoogle社のJacob Devlinらの論文で発表された自然言語処理モデルです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/eaf74f93-6f57-cc15-37a7-2cb1b8082037.png)

Google検索のアルゴリズムにも使われており、長文による検索でより文脈に合った検索結果が出るようになったのはBERTのおかげです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/27e08def-229f-4668-85a2-f10958775b4e.png)

BERTは、機械翻訳、文書のカテゴリ分類、質問応答、文章生成などの自然言語処理タスクの課題を高い精度で解決し、8個のベンチマークタスクにおいて前SOTAを上回る、当時の最高スコアを叩き出したことで話題になりました。

下グラフは、[GLUE](https://paperswithcode.com/sota/natural-language-inference-on-qnli)のNLP技術の各項目における平均スコアの推移を示したものです。2018年10月のBERT登場を皮切りにスコアが飛躍的に上がり、2019年ごろには数値上は、AIが人間の会話能力を超えたことになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/7e23decd-4b32-03ca-be93-7b3ce4ae5e61.png)

https://qiita.com/Axross_SBiv/items/c402ff256204b759785b

## 文書検索
**文書検索**は、文書群の中から指定した特定の文章及び単語を照合する技術です。

## 文書生成
**文書生成**は、タイトルや要約などの文章をデータとして与え、その記事の本文を自動生成する技術です。

### GPT（Generative Pretrained Transformer）
**GPT**は、2015年12月に設立された非営利の人工知能研究組織「[OpenAI API](https://openai.com/blog/openai-api/)」が開発している「文章生成言語モデル」です。イーロンマスクが共同経営していることでも有名です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/706aeaca-3227-d26e-fb00-bdeafe7a2662.png)

https://qiita.com/Axross_SBiv/items/ded1553e2d999b937d98

# 様々なAI自然言語処理の手法を学べるレシピ紹介
## 言語認識
### 1.[Pythonの辞書を用いて文章中の各名詞の出現回数をカウントするレシピ](https://axross-recipe.com/recipes/303)
辞書型の基礎を学習し、Pythonとpandas、Mecabで日本語文章を**形態素解析**し、分析した結果と辞書型を用いて文章中の各名詞の出現回数をカウントする自然言語処理の手法を学ぶことができます。

https://axross-recipe.com/recipes/303

### 2.[フェイクニュースを検知するレシピ](https://axross-recipe.com/recipes/336)
BERTベースのGraph Neural Network（GNN）用いた、**GNN-based Fake News Detection**というディープラーニングの技術を使って、**フェイクニュースを検知する方法**を実際にプログラム動かしながら学ぶことができます。

https://axross-recipe.com/recipes/336

## 言語分類
#### 3.[	コメントからポジネガを自動判定するレシピ	](	https://axross-recipe.com/recipes/10	)
ECサイトのレビュー解析を想定し、WEBスクレイピングで映画サイトのコメントを取得し、日本語テキストの**ポジネガ分類モデル**を実装します。

https://axross-recipe.com/recipes/10

#### 4. [	TwitterAPIと形態素解析でフォロワーのいいねしたツイート傾向を分析するレシピ	](	https://axross-recipe.com/recipes/198	)
Twitter APIとJanomeを活用し、自分のTwitterアカウントの**フォロワー分析**を行います。

https://axross-recipe.com/recipes/198

#### 5. [	日本語BERT事前学習モデルを使ってMultilabel Sentiment分類器を学習する	](	https://axross-recipe.com/recipes/216	)
Twitter APIを使ってツイートを取得し、事前学習モデルを使ったマルチラベルデータを**Hugging Face**で事前学習し、**テキストの感情分類モデル**を作成します。

https://axross-recipe.com/recipes/216

#### 6. [	BERTを用いたネガポジ分類モデルの実装	](	https://axross-recipe.com/recipes/463	)
近年自然言語処理タスクで利用されているBERTについて、実際にツイート情報を用いて実装していきたいと思います。

また、BERTの他にRobertaと呼ばれるモデルも実装していき、BERTとの比較を行っていきます。

https://axross-recipe.com/recipes/463

#### 7. [	TensorFlow.jsを用いてブラウザで言語処理モデルを実行するレシピ	](	https://axross-recipe.com/recipes/521	)
webアプリケーションフレームワークであるDjangoでwebアプリを開発し、Tensorflow.jsを用いてwebアプリのブラウザ上でテキストの有害度検出、テキストの感情分析、Q&Aを実現する方法を学びます。

https://axross-recipe.com/recipes/521

#### 8. [	TwitterAPIで乃木坂４６メンバーの話題度を比較分析するレシピ	](	https://axross-recipe.com/recipes/220	)
TwitterAPIのツイート検索機能を使い、アイドルグループの乃木坂４６に関するツイートを検索して形態素解析を行い、各メンバーについて言及しているツイート数を比較してその**話題度を比較分析**するPythonプログラムを作成します。

https://axross-recipe.com/recipes/220

## 言語可視化
#### 9. [売れ筋商品の特徴を共起ネットワークで可視化するレシピ](https://axross-recipe.com/recipes/8)
Pythonによる簡易的なWebスクレイピング、テキストデータから単語の共起関係の抽出や**NetworkX** を利用した共起ネットワークの可視化を行い、日本語テキストのテキストマイニングの流れを学べます。

https://axross-recipe.com/recipes/8

#### 10. [	１冊の本を１枚の画像で可視化するレシピ	](	https://axross-recipe.com/recipes/17	)
日本語のテキストデータに**Mecab**を使って形態素解析し、単語の頻出度に応じて**WordCloud**で可視化します。

https://axross-recipe.com/recipes/17

#### 11. [	材料の単語分散表現から知見を抽出するレシピ	](	https://axross-recipe.com/recipes/95	)
材料系の膨大な論文をスクレイピングで学習し、**mat2vec**で材料同士の類似度を分析し、**マテリアルズインフォマティクス**において、単語分散表現の機械学習モデルから人間が気づかなかった知見を抽出・可視化します。

https://axross-recipe.com/recipes/95

#### 12. [	ブラウザの履歴データから形態素解析でユーザーの嗜好を抽出するレシピ	](	https://axross-recipe.com/recipes/163	)
形態素解析ライブラリ**Janome**を使って、Google Chromeの検索履歴データから頻出単語を取り出してランキング化し、ユーザーのWebページ閲覧傾向を分析します。

https://axross-recipe.com/recipes/163

#### 13. [	Rを用いてアンケートの自由記述からキーワードを抽出するレシピ	](	https://axross-recipe.com/recipes/507	)
R言語を用いてアンケートの自由記述に入力された文章からキーワードを抽出するレシピです。

https://axross-recipe.com/recipes/507

## 文字起こし
#### 14. [	Zoom会議の録音データから音声認識で議事録を自動生成するレシピ	](	https://axross-recipe.com/recipes/238	)
PCマイクから録音した音声ファイルデータを**Watson API**の音声認識機能を用いて文字起こしし、議事録を自動生成します。

https://axross-recipe.com/recipes/238

#### 15. [	Streamlitで音声文字起こしアプリを作るレシピ](	https://axross-recipe.com/recipes/421	)
**SpeechRecognition**というライブラリを使って、マイク入力した音声の文字起こしと、入力したテキストを読み上げるアプリケーションを作成するレシピです。会議の議事録作成などに活用できます。

https://axross-recipe.com/recipes/421

## 文書要約
#### 16. [	GPT-3でタイトルや要約から記事本文を自動生成するレシピ	](	https://axross-recipe.com/recipes/135	)
文章生成モデル**GPT-3**のAPI機能を使って、長文の自動要約と日本語記事コンテンツ自動生成を行います。

https://axross-recipe.com/recipes/135

#### 17. [	BertSumを使った文書要約のレシピ	](	https://axross-recipe.com/recipes/251	)
BERTを応用して文章要約を行うディープラーニング**BertSum**を実装します。

https://axross-recipe.com/recipes/251

#### 18. [	BertSum(T5)を用いてアンケートの自由記述を要約するレシピ	](	https://axross-recipe.com/recipes/410	)
このレシピでは、「BERTSum」や「T5」を用いて、自由記述アンケート回答の要約を作成します。

https://axross-recipe.com/recipes/410

## 文書翻訳
#### 19. [	Amazon Translateを使った機械翻訳のレシピ(基礎編)	](	https://axross-recipe.com/recipes/52	)
AWSのサービスである、**Amazon Translate**を活用し、実際に機械翻訳を行う流れを体験できます。

https://axross-recipe.com/recipes/52

## 択一問題
#### 20. [	日本語の択一問題を解くレシピ](	https://axross-recipe.com/recipes/284	)
Microsoft社のAIチームから独立したrinna社がOSS化した**日本語GPT-2**、**BERT**の事前学習モデルを使い、日本語の択一問題を解くタスクを学べます。

https://axross-recipe.com/recipes/284

## チャットボット
#### 21. [	BERTによる日本語QAの発話応答モデル作成レシピ	](	https://axross-recipe.com/recipes/118	)
BERTを使ってA4紙1枚程度の日本語マニュアルの中から、**日本語で質問すると日本語で回答を探し出すモデル**を作成します。[発展編](https://axross-recipe.com/recipes/141)では、BERTとTransformerを活用し、日本語のQAチャットボットの学習モデルを作成します。

https://axross-recipe.com/recipes/118

#### 22. [	BERTによるQAチャットボットの作成レシピ	](	https://axross-recipe.com/recipes/411	)
自然言語処理モデルの中でも人気のある「BERT」を用いて、Wikipediaのコーパスを用いてQAチャットボットを作成する方法を学びます。

コールセンター、ヘルプデスク、オペレーター支援等に活用が期待できます。

https://axross-recipe.com/recipes/411

#### 23. [	GPT-3で自然対話するSlackボットを作るレシピ](	https://axross-recipe.com/recipes/153	)
GPT-3を使って、**Slack上で自由に雑談・対話できるボット**を作成します。GPT-3を活用することで、文脈を踏まえた自然な返答文を自動生成することができ、暇なときの雑談の相手になってくれます。

https://axross-recipe.com/recipes/153


#### 24. [	【GPT-3発展編】音声だけで会話するチャットボットを作るレシピ	](	https://axross-recipe.com/recipes/176	)
GPT-3の言語生成モデルを応用し、文章入力を介さず**音声のみで会話するチャットボット開発**を行います。

https://axross-recipe.com/recipes/176

#### 25. [	MicrosoftのDialoGPTでチャットアプリを開発するレシピ](	https://axross-recipe.com/recipes/223	)
Microsoftが開発している**DialoGPT**を活用してチャットアプリを開発します。

https://axross-recipe.com/recipes/223

#### 26. [Microsoftから独立した企業が公開した日本語版GPT-2でチャットボットを作るレシピ](https://axross-recipe.com/recipes/287)
日本語で構成されたデータセットで最適化された「**りんなGPT-2**」の学習済みモデルを用いて、 Pythonでチャットボットや長文生成を試し、過去に書いたGPT-3のレシピとの精度・結果を比較します。

https://axross-recipe.com/recipes/287

### 27.[Watson Assistantを活用したチャットボットの開発](https://axross-recipe.com/recipes/297)
**IBM Watson Assistant**を使用して、GUIベースでAIチャットボットを作成します。

https://axross-recipe.com/recipes/297

### 28.[ELECTRAでユーザからの質問に対して応答するレシピ](https://axross-recipe.com/recipes/530)
ELECTRAというディープラーニングによる言語モデルを使用してユーザからの質問に応答するプログラム動かしながら学ぶレシピです。

チャットボット、音声アシスタントへの活用が期待できます。

https://axross-recipe.com/recipes/530

### 29.[BERTとXLNetの精度比較を行うレシピ](https://axross-recipe.com/recipes/409)
自然言語処理の最新モデルである「BERT」と「XLNet」を用いて、Wikipediaのコーパスをベースに質疑応答のタスクを処理する方法を学び、その精度を比較するレシピ。

チャットボット、音声アシスタントへの活用が期待できます。

https://axross-recipe.com/recipes/409

## 文書分類
#### 30. [	日本語BERTを利用してZero-shotで文章分類するレシピ	](	https://axross-recipe.com/recipes/320	)
教師データに存在しないラベルを予測する「**Zero-shot Learning**」という問題設定で**BERT**モデルを利用したテキスト分類を行います。

https://axross-recipe.com/recipes/320

#### 31. [	Googleが開発しているJAX用の高性能ニューラルネットワークライブラリFlaxを用いてツイート分類を行うレシピ	](	https://axross-recipe.com/recipes/424	)
Twitter API を用いて抽出された160万件のツイートデータからダウンサンプリングしたデータセットデータをJAX用の**高性能ニューラルネットワークライブラリFlax**で学習し、ツイート分析を行います。

https://axross-recipe.com/recipes/424

## 文書検索
#### 32. [	文書の「あいまい検索」機能をつくるレシピ	](	https://axross-recipe.com/recipes/110	)
word2vecの発展系**fasttext**を使って、日本語文章の検索単語が完全に一致しなくても検索できる「**あいまい検索**」を実装します。

https://axross-recipe.com/recipes/110

#### 33. [類似文章を検索するAPIを作成するレシピ](https://axross-recipe.com/recipes/333)
transformerとflaskを使って、**類似文章を検索するAPI**を作成します。[発展編](https://axross-recipe.com/recipes/358)として、Docker上で作成するレシピもあります。

https://axross-recipe.com/recipes/333

## 文書生成
#### 34. [	GitHubのcopilotで自然言語から関数を生成するレシピ	](	https://axross-recipe.com/recipes/343	)
**copilot**の申請方法からVScodeへの導入方法、実際の関数コードの自動生成までを解説付きで学ぶことができます。

https://axross-recipe.com/recipes/343


#### 35. [	GPT-3のNLPアプリケーション開発を体験してみるレシピ	](	https://axross-recipe.com/recipes/209	)
文章生成モデル**GPT-3**を用いて、**NLPアプリケーションの開発**を行います。

https://axross-recipe.com/recipes/209

#### 36. [	夏目漱石の「坊ちゃん」を学習させてマルコフ連鎖で新作を自動生成させるレシピ	](	https://axross-recipe.com/recipes/240	)
マルコフ連鎖で文章生成するPythonライブラリ**Markovify**を使って夏目漱石の「坊ちゃん」の続編となる文章を自動生成します。

https://axross-recipe.com/recipes/240

#### 37. [	LeakGANを使った文書生成のレシピ	](	https://axross-recipe.com/recipes/282	)
チャットボットやAIアシスタントが発話するシナリオ作成への応用を想定し、**LeakGAN**を使って文章生成を行います。

https://axross-recipe.com/recipes/282

#### 38. [	ArtEmisでアートを説明するAIを開発するレシピ	](	https://axross-recipe.com/recipes/459	)
絵画に説明文と感情を付与した大規模データセットであるArtEmisを使用して、画像キャプション生成について、実際のプログラムを確認しながら学びます。

https://axross-recipe.com/recipes/459

## 文章校正
#### 39. [	BERTによる日本語の誤字をチェックするレシピ	](	https://axross-recipe.com/recipes/610	)

BERTの内容を理解すると同時に、自動で文章校正を行うコードを学ぶレシピ。

ディープラーニングの概要を学ぶとともに誤字チェックに活用できる技術を学ぶことができます


https://axross-recipe.com/recipes/610

## 感情分析
#### 40. [	Rで肯定的・否定的なレビューを可視化するレシピ	](	https://axross-recipe.com/recipes/549	)

Rを用いて肯定的・否定的なレビューを可視化する方法を実際にプログラム動かしながら学ぶことができます。

ECサイトのレビュー分析、コールセンターのログ分析に活用することができます。


https://axross-recipe.com/recipes/549

# 最後に
今回は、AxrossRecipeで学べる**さまざまな自然言語処理の手法を学べるレシピ40選**をご紹介しました。

プログラミングは「習うより慣れろ、繰り返し演習すること」が重要です。

AxrossRecipeのレシピを通して、プログラムの意味を考えながら写経（コードを実際に書き写す行為）し、実際に動くものをつくりながら学ぶことで、新たな知識の習得やスキルアップの一助になれれば幸いです。

![アクロス広告最新版.jfif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/d6239117-3c3e-f41f-cf35-846145822a10.jpeg)