弱い人工知能の時代が到来し、人々の日常生活はアルゴリズムが提供するサービスと切り離せないものとなっています。たとえば、情報アプリはユーザーの好みに基づいてパーソナライズされた推奨事項を作成します。旅行アプリは最適なスケジュールを作成するアルゴリズムに支えられています。ショッピング アプリは過去の購入行動と製品間の類似性に基づいて推奨事項を作成します。このような例は他にもたくさんあるので、すべてを列挙することはしません。
インターネット企業にとってアルゴリズムがいかに重要であるかは明らかですが、優秀なアルゴリズムエンジニアは市場で非常に不足しています。そのため、大手インターネット企業は優秀な人材を引き付けるために高い給与を喜んで提供します。同時に、アルゴリズムエンジニアのキャリアライフサイクルは依然として非常に長く、ほとんどの開発者にとって非常に理想的なキャリアです。 NLP の正式名称は Natural Language Processing で、中国語で自然言語処理を意味します。これは人工知能の分野における重要な方向性です。機械学習の継続的な発展により、画像認識、音声認識などの分野で大きな進歩が遂げられています。それに比べて、NLP は少し遅れていますが、これは NLP が解決する必要のある問題の複雑さに関係しています。 人間の言語は、豊富な意味情報を含む抽象的な情報記号であり、人間はその意味を容易に理解できます。しかし、コンピュータは数値情報しか処理できず、人間の言語を直接理解することはできないため、人間の言語を数値情報に変換する必要があります。それだけでなく、人間同士のコミュニケーションには文脈情報が含まれており、これもコンピュータにとって大きな課題です。 NLPは、上記の問題を解決するための技術の集合体であり、単一の技術ポイントではなく、完全な技術システムであり、その複雑さがわかります。そのため、NLP アルゴリズム エンジニアの給与は業界平均よりもはるかに高くなります。 この記事は、NLP に関する全体的な知識体系を簡潔に構築し、NLP をすぐに開始して、できるだけ早く専門家になることを目指し、人生の頂点に到達できるようにするためのものです:-P。 まず、次の図に示すように、NLP タスクの種類を見てみましょう。 主に4つのカテゴリーに分かれています。
ここで、「カテゴリ」はラベルまたは分類として理解でき、「シーケンス」はテキストまたは配列として理解できます。簡単に言えば、NLP のタスクは、あるデータ型を別のデータ型に変換するプロセスであり、これはほとんどの機械学習モデルと同じか類似しているため、NLP テクノロジ スタックを習得することは、機械学習テクノロジ スタックを習得することと同じです。 NLPの前処理 上記の NLP タスクを完了するには、NLP タスクの基本的なプロセスである前処理が必要です。前処理には、コーパスの収集、テキストのクリーニング、単語の分割、ストップワードの削除 (オプション)、標準化、および特徴の抽出が含まれます。 図の赤い部分はNLPタスクの前処理プロセスであり、他の機械学習タスクのプロセスとは異なります。以下で詳細を紹介します。 コーパス NLP タスクの場合、大量の高品質なコーパスがなければ、ご飯のない料理人のようなもので、作業は不可能です。 コーパスを入手する方法は多数あります。最も一般的な方法は、Wikipedia コーパスなどのオープンソース コーパスを直接ダウンロードすることです。 ただし、このようなオープンソースのコーパスは、一般的にビジネスの個別のニーズを満たすことができないため、特定のコンテンツをキャプチャするためのクローラーを自分で開発する必要があります。これもコーパスを取得する方法の 1 つです。 もちろん、各インターネット企業は、ユーザーコメント、電子書籍、製品の説明など、自社のビジネスに基づいた大量のコーパスデータを持っており、それらはすべて優れたコーパスです。 今や、データはインターネット企業にとって石油のようなものであり、莫大な商業的価値を秘めています。したがって、日々の仕事の中でデータを収集する習慣を身につける必要があります。良いコーパスを見つけたら、それをバックアップすることを忘れないでください(もちろん、合理的かつ合法的な条件の下で)。それは問題解決に大いに役立ちます。 テキストのクリーニング さまざまなチャネルを通じて目的のコーパスを取得したら、それをクリーンアップする必要があります。多くのコーパスデータには、役に立たない記号や特殊なテキスト構造が多数含まれているため、直接使用することはできません。 データ型は次のように分類されます。 構造化データ: リレーショナル データ、JSON など。半構造化データ: XML、HTML など。非構造化データ: Word、PDF、テキスト、ログなど。 元のコーパスデータは、処理しやすい形式に変換する必要があります。一般的に、HTML や XML を処理する場合は、機能が豊富で使いやすい Python の lxml ライブラリが使用されます。正規表現を使用して、ログまたはプレーンテキスト データを処理できます。 正規表現は、単一の文字列を使用して、特定の構文規則に準拠する一連の文字列を記述および照合します。 Python コードの例は次のとおりです。
出力: 私は自然言語処理が大好きです。コードをコピー 上記の内容に加えて、中国語のエンコーディングにも注意する必要があります。Windows プラットフォームでの中国語のデフォルトのエンコーディングは GBK (gb2312) ですが、Linux プラットフォームでの中国語のデフォルトのエンコーディングは UTF-8 です。 NLP タスクを実行する前に、さまざまな不可解な問題を回避するために、さまざまなソースからのコーパスのエンコーディングを統一する必要があります。 コーパスのエンコーディングを事前に判断できない場合は、シンプルで使いやすい Python の chardet ライブラリを使用してエンコーディングを検出することをお勧めします。コマンドライン: chardetect somefile とコード開発の両方をサポートします。 分詞 中国語の単語分割と英語の単語分割には大きな違いがあります。英語では区切り文字としてスペースを使用するため、英語の単語分割は基本的に難しくありません。中国語では、文字は区切り文字なしで直接接続されます。ただし、中国語では「単語」が基本的な意味単位として使用されます。多くの NLP タスクの入力と出力は「単語」であるため、中国語の単語分割の難しさは英語の単語分割の難しさよりもはるかに高くなります。 中国語の単語分割は比較的大きなトピックであり、関連する知識ポイントと技術スタックは非常に豊富です。中国語の単語分割を理解することは、NLPの大部分を理解することと同等であると言えます。中国語の単語分割は20年以上の発展を経て、多くの困難を克服し、大きな進歩を遂げてきました。次の図に示すように、大まかに2つの段階に分けることができます。 現在、主流の中国語単語分割技術は、辞書+未知語認識(HMM)方式の最大確率パスに基づいています。代表的なものは、人気のある多言語中国語単語分割パッケージであるJieba単語分割です。 中国語の単語分割に興味があり、もっと学びたい方は、私が書いた「NLPにおける中国語の単語分割の徹底理解:原理から実践まで」という本をご覧になることをお勧めします。この本では、中国語の単語分割のさまざまな実装方法を詳しく説明し、jiebeのPythonソースコードを深く分析しているため、中国語の単語分割の技術をゼロから徹底的に習得できます。同時に、NLPのさまざまな実践的なケースも説明されており、間違いなく多くのことが得られると思います。 標準化 標準化とは、ストップワード、語彙、トレーニング データなどの削除を含む、後続の処理に必要な基本データを提供することです。 単語のセグメンテーションが完了したら、「among them」、「what」、「what」などのストップワードを削除できますが、この手順は必須ではありません。実際のビジネスに応じて選択する必要があります。たとえば、キーワードマイニングではストップワードを削除する必要がありますが、単語ベクトルのトレーニングでは必要ありません。 語彙は、コーパス内のすべての非繰り返し単語のリストです。各単語はインデックス値に対応しており、インデックス値は変更できません。語彙の最大の機能は、単語をベクトルに変換すること、つまり One-Hot エンコーディングです。 次のような語彙があるとします。 私は自然言語処理が大好きです。コードをコピー すると、次の One-Hot エンコーディングが得られます。
この方法では、単語をコンピューターで直接処理できる数値データに簡単に変換できます。 One-Hot エンコーディングはいくつかの NLP タスクをうまく完了できますが、まだ多くの問題が残っています。 語彙の次元が特に大きい場合、One-Hot エンコーディング後の単語ベクトルは非常にスパースになり、One-Hot エンコーディングでは単語の意味情報も欠落します。これらの問題のために、有名な Word2vec とそのアップグレード版である BERT が誕生しました。 モデルをトレーニングする際には、語彙に加えてトレーニング データも提供する必要があります。モデル学習は、大きく分けて 2 つのカテゴリに分けられます。
学習タスクに応じて、異なる標準化されたデータを提供する必要があります。一般的に言えば、ラベル付きデータを取得するためのコストは非常に高価です。教師なし学習ではそのようなコストはかかりませんが、実用的な問題を解決する場合、より効果的であるため、教師あり学習を選択するのが依然として主流のアプローチです。 ラベル付けされたトレーニングデータは、おおよそ次のようになります(感情分析用のトレーニングデータ)。
各行がトレーニングサンプル、__label__0 と __label__1 が分類情報、残りが単語分割後のテキストデータです。 特徴抽出 モデルをより良くトレーニングするには、テキストの元の特徴を特定の特徴に変換する必要があります。変換には主に統計と埋め込みの 2 つの方法があります。 オリジナルの特徴: テキストや画像など、人間または機械によって変換する必要があります。 特定の特徴: オブジェクトの重要度やサイズなど、人間によって分類および分析されており、直接使用できます。 統計 統計的手法は主に単語頻度 (TF) と逆文書頻度 (IDF) を計算することです。
埋め込みとは、ニューラル ネットワークの隠れ層の重みで構成された空間に単語を埋め込むことで、意味が似ている単語はこの空間内でも距離が近くなります。 Word2vec はこの分野の表現手法です。一般的なネットワーク構造は次のようになります。 入力層は One-Hot によってエンコードされた単語、隠し層は取得したい埋め込み次元、出力層はコーパスに基づく予測結果です。このネットワークを継続的に反復して、予測結果が収束するまで実際の結果に近づくようにすることで、後続のモデルの入力として使用できる意味情報を含む密な単語ベクトルである単語埋め込みエンコーディングを取得できます。 まとめると、NLP の前処理部分をわかりやすく説明し、NLP のコンテンツのほとんどをカバーしました。次に、NLP の具体的なビジネス シナリオについて説明します。
NLP にはさまざまなビジネス シナリオがあります。簡単に整理すると次のようになります。
これらの魅力的なビジネス シナリオに惑わされないでください。実際、上記のビジネスはすべて、前に説明した NLP 前処理の出力に基づいていますが、SVM、LSTM、LDA などのさまざまな機械学習モデルが適用されています。 これらの機械学習モデルのほとんどは分類モデル(シーケンスラベリングも分類モデルです)であり、クラスタリングモデルはごくわずかです。これらのモデルは一般化されており、NLP タスク専用ではありません。この部分を明確に説明するには、「機械学習入門」という別のトピックを開く必要がありますが、ここでは詳しく説明しません。 要約: NLP の前処理を習得していれば、その後の処理は一般的な機械学習モデルと方法であるため、NLP の分野に参入したことになります。 |
MNIST 認識の精度は 100% に達しましたか?最近、プレプリントプラットフォームarXivに掲...
[[438415]]クラウド コンピューティング業界が成長を続ける中、クラウド コンピューティング...
国内の感染予防・抑制状況が基本的に安定してきたため、各地で大学や小中学校などで「授業再開」が実施され...
多くの上司は人工知能を未来と見ており、多くのテクノロジーリーダーは ChatGPT を人工知能と同義...
今朝(8日)、第13期全国人民代表大会第5回会議第二回全体会議が開催され、最高人民法院と最高人民検察...
世界の潮流は力強く前進しています。科学研究と探究のペースを止めれば、井戸の中で空を眺め、満足して...
2020年の東京オリンピックはこれまで以上に盛り上がっています。 7月28日に行われた男子体操個人...
AIエージェントは今話題になっています。OpenAIの応用研究ディレクターであるLilian Wen...
OpenAIは9月21日水曜日、書かれたプロンプトに基づいて画像を生成できる新しい画像生成器DAL...
ドイツ独占禁止局のアンドレアス・ムント局長は10月10日、人工知能によって大手テクノロジー企業の市場...