|
自然言語処理(NLP)は機械学習の一分野です。自然言語を用いた人間とコンピュータのインタラクションは、NLPにおける重要な研究テーマです。NLPは、AppleのSiri音声アシスタント、言語翻訳ツール、感情分析ツール、インテリジェントな顧客サービスシステムなど、幅広い業界で応用されています。 この記事では、初心者向けの簡単な NLP プロジェクトから専門家向けの難しい NLP プロジェクトまで、実践的な NLP スキルの向上に役立つ創造的なオープンソース NLP プロジェクトをいくつか紹介します。 初心者向けの1、4つのプロジェクト1. キーワード抽出このプロジェクトの目標は、TF-IDFとPythonのScikit-Learnライブラリを用いて、テキストデータから興味深いキーワードを抽出することです。データセットはStackOverflowです。 ソースコード: https://github.com/kavgan/nlp-in-practice/tree/master/tf-idf 2. Seq2Seqモデルを使用したチャットボットこのプロジェクトでは、Seq2Seqモデルを使用してシンプルなチャットボットを構築します。PythonコードではTensorFlowライブラリを使用しています。 ソースコード: https://github.com/llSourcell/tensorflow_chatbot 3. 言語識別子ウェブページ上の特定のテキストの言語を特定するには、様々な方言、スラング、そして言語間で共通する用語をフィルタリングする必要があります。機械学習はこのプロセスを大幅に簡素化します。言語識別子は、FacebookのfastTextパラダイムを用いて作成できます。このモデルは、単語埋め込みを用いて言語を理解し、word2vecツールを拡張します。 ソースコード: https://github.com/axa-group/nlp.js 4. ニュースの見出しから株価感情を抽出するかつて金融ニュースは、ラジオ、新聞、口コミを通じて時間をかけてゆっくりと広まっていました。インターネット時代では、情報伝達はわずか数秒で完了します。決算説明会からのデータストリームは、ニュース記事の自動生成にも活用できます。金融ニュースの見出しに感情分析を行うことで、投資関連の意思決定に役立つ情報を生成することができます。見出しの背後にある感情を解読し、自然言語処理技術を用いて市場が株式に与えるプラスまたはマイナスの影響を予測することが可能です。 ソースコード: https://github.com/copev313/Extract-Stock-Sentiment-From-News-Headlines/tree/main II. 4つの中級NLPプロジェクト5. 深層学習におけるBERTを用いた感情分析Grinのアノテーション付きデータセットはPyTorchを用いて分析され、事前学習済みのBERT Transformerを用いて大規模な言語学習が行われ、感情分析モデルが構築されました。このモデルのアーキテクチャは多クラス分類です。トークナイザーと追加のデータエンコーディングは、探索的データ分析(EDA)中にロードされました。データローダーはバッチ処理を容易にし、その後、モデルのトレーニングを管理するためにオプティマイザーとスケジューラーが設定されました。 PyTorchのBERTアクセラレータを微調整するために、測定可能なモデル性能指標を達成するためのトレーニングループを作成しました。事前学習済みの微調整済みモデルのパフォーマンスを評価し、良好な精度を達成しました。 ソースコード: https://github.com/dA505819/Sentiment_Analysis_with_Deep_Learning_using_BERT/tree/master 6. NLPトピックモデリングLDA-NMFこのプロジェクトでは、トピックモデリングにLDAとNMFを用いています。さらに、キーワード入力に応じてTF-IDF記事推薦エンジンを開発し、コサイン類似度に基づいて記事プールから上位記事を選出します。 ソースコード: https://github.com/AnushaMeka/NLP-Topic-Modeling-LDA-NMF/tree/master 7. 音声感情分析このプロジェクトの目標は、日常会話における感情を識別するニューラルネットワークモデルを開発することです。男性と女性のニューラルネットワークモデルは、最大5つの異なる感情を検出できます。これは、感情に基づいた商品を推奨するパーソナライズマーケティングに応用できます。同様に、自動車メーカーはこれを利用してドライバーの感情を読み取り、衝突を防ぐために速度を調整することができます。 ソースコード: https://github.com/MiteshPuthran/Speech-Emotion-Analyzer 8. LSTMを使った画像キャプション画像キャプションの目的は、画像の内容と背景を簡潔かつ正確に説明することです。画像キャプションシステムの応用例としては、自動画像解析やコンテンツ検索などが挙げられ、視覚障害者の支援に役立ちます。 長短期記憶(LSTM)は、画像キャプション作成などの、時系列入力における長期的な関係性をモデル化する必要があるアプリケーションに適したリカレントニューラルネットワーク(RNN)アーキテクチャです。畳み込みニューラルネットワーク(CNN)は、画像キャプション作成システムにおいて、LSTMを用いて入力画像を処理し、画像を表す固定長の特徴ベクトルを抽出します。LSTMネットワークは、この特徴ベクトルを入力として用い、文字ごとにキャプションを作成します。 ソースコード: https://github.com/ZhenguoChen/Neural-Network-Image-Captioning 3~4つの高度なNLPプロジェクト9. 科学技術論文からのキーワード抽出科学論文からキーフレーズを抽出する自然言語処理 (NLP) タスクには、テキストから重要な単語や用語を自動的に検索して抽出することが含まれます。 キーフレーズ抽出には、ルールベース、教師なし、教師ありなど、様々な手法があります。教師なし手法では、統計的手法を用いて文書内で最も重要な用語を特定しますが、ルールベース手法では、事前に定義された一連の基準を用いてキーフレーズを選択します。 ソースコード: https://github.com/intelligence-csd-auth-gr/keyphrase-extraction-via-summarization 10. メタ学習に基づくテキスト分類感情分析、テキスト分類など、特定のNLPタスク向けに機械学習モデルをカスタマイズし、複数のタスクでトレーニングすることは、メタ学習を用いたテキスト分類に必要なプロセスです。このアプローチは、類似タスクの実行から得た知識を活用して新しいタスクに迅速に適応するため、モデルをゼロからトレーニングするよりも優れたパフォーマンスを発揮します。サポートセットのデータを用いてモデルのパラメータを調整することで、クエリセットにおける損失を削減することが目標です。 ソースコード: https://github.com/phanxuanphucnd/meta-learning 11. ディスティルバートについて本論文では、BERTの蒸留版であるDistilBERTを紹介します。DistilBERTは、オリジナルのBERTよりも小型、高速、安価、軽量です。DistilBERTは、BERTをベースに学習したTransformerモデルであり、コンパクト、高速、費用対効果が高く、軽量な設計となっています。BERTベースのケースなしモデルと比較して、60%高速化し、パラメータは40%削減され、GLUE言語理解ベンチマークにおいてBERTの95%以上のパフォーマンスを維持しています。このモデルは、DistilBERTをベースにケースなしの微調整されたチェックポイントであり、SQuAD v1.1の知識蒸留(第2段階)によって改良されています。 記事: https://huggingface.co/distilbert-base-uncased-distilled-squad 12. BERTを使用してマスクワードを完成させるBERTは、かなり大規模な英語データコーパスを用いて自己教師あり事前学習されたTransformersモデルです。これは、人間によるラベル付けを一切行わずに生のテキストのみで事前学習した後、自動化されたプロセスを用いてこれらのテキストから入力とラベルを生成することを意味します(そのため、利用可能な大量のデータを活用できる可能性があります)。このモデルには、「次の文」予測(NSP)とマスク言語モデリング(MLM)という2つの学習目標があります。ラベル付き文のデータセットがあれば、BERTモデルによって生成された特徴量を学習の入力として使用できます。 記事: https://huggingface.co/bert-base-uncased |
12のクリエイティブなNLP学習プロジェクト(ソースコード付き)
関連するおすすめ記事
-
オープンソースベクターデータベースの比較: Chroma、Milvus、Faiss、Weaviate
-
89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">resource ( s )
2022/07/02 13:17:33 1 つのリソースを作成しています
2022/07/02 13:17:33 1 つのリソースを作成しています
2022/07/02 13:17:33 検出キャッシュをクリアしています
2022/07/02 13:17:33 タイムアウト1 分で4つのリソースの待機を開始
2022/07/02 13:17:39 43個のリソースを作成しています( s )
2022/07/02 13:17:39 5分0 秒のタイムアウトで43のリソースの待機を開始
2022/07/02 13:17:40 デプロイメントの準備ができていません: argocd / argocd - applicationset - controller 。 予想される1 個のポッドのうち0 個が準備ができています
2022/07/02 13:17:42 デプロイメントの準備ができていません: argocd / argocd - applicationset - controller 。 予想される1 個のポッドのうち0 個が準備ができています
……
2022/07/02 13:19:44 デプロイメントの準備ができていません: argocd / argocd - applicationset - controller 。 予想される1 個のポッドのうち0 個が準備ができています
2022/07/02 13:38:27 デプロイメントの準備ができていません: argocd / argocd - dex - server 。 1 個のポッドのうち0 個が準備完了です
2022/07/02 13:38:30 リリースインストールに成功しました: argocd / argo - cd - 4.9.11
2022-07-02 13:38:30 ✔ [ 成功] ツール( argocd / default ) の作成が完了しました。
2022 - 07 - 02 13 : 38 : 30 ℹ [ 情報] -------------------------- [ 処理の進行状況: 4/4 。 ] --------------------------
2022 - 07 - 02 13 : 38 : 30 ℹ [ INFO ] 処理中: ( argocdapp / default ) -> 作成...
2022-07-02 13:38:31 ℹ [ INFO ] application . argoproj . io / dtm - test - go が作成されました
2022-07-02 13:38:31 ✔ [ 成功] ツール( argocdapp / default ) の作成が完了しました。
2022-07-02 13:38:31 ℹ [ 情報] -------------------- [ 処理が完了しました。 ] --------------------
2022-07-02 13:38:31 ✔ [ 成功] すべてのプラグインが正常に適用されました。
2022-07-02 13:38:31 ✔ [ 成功] 申請が完了しました。適用プロセス中、実行状態は定義された状態バックエンドストレージに保存されます。例えば、ローカルストレージを使用している場合、実行状態はルートディレクトリのdevstream.stateファイルに保存されます。合計4つのツールチェーンがあり、最初の2つが完了し、最後の2つが認識された場合、最初の2つのプラグインの状態がこのファイルに保存されます。次回の再適用時には、最後の2つのツールチェーンのみを実行する必要があります。
上記で定義したツールチェーンは、最終的に GitHub 上に Golang Web 用のスキャフォールディングされたアプリケーション コード リポジトリを作成します。
GitHub Actions は、CI 操作と Docker イメージの構築に使用されます。
CI プロセスは最終的にイメージを Docker Hub にプッシュします。
その後、ArgoCD が Kubernetes にデプロイされます。
$ kubectl get pods -n argocd
名前準備完了ステータス再起動年齢
argocd - アプリケーション- コントローラー- 0 1 / 1 実行中0 5 分55秒
argocd - アプリケーションセット- コントローラー- 64 d8c477f4 - 2 wrg6 1 / 1 実行中0 5 分55秒
argocd - dex - サーバー- dbdbf5499 - krmfz 1 / 1 実行中0 5 分35秒
argocd - 通知- コントローラー- b67c4bdb4 - 22 t9l 1 / 1 実行中0 5 分55秒
argocd - redis - df9db799b - 8 gbpv 1 / 1 実行中0 5 分55秒
argocd - リポジトリ- サーバー- 56769 cdd47 - zs65j 1 / 1 実行中0 5 分55秒
argocd - サーバー- 7 d4745f689 - w5pp7 1 / 1 実行中0 5 分55秒最後に、ArgoCDを使用してCD操作を実行し、サンプルアプリケーションをKubernetesクラスターにデプロイします。基本的には、ArgoCDアプリケーションオブジェクトを作成します。
$ kubectl アプリケーションを取得- n argocd
名前同期ステータスヘルスステータス
dtm - テスト- go 不明健康ArgoCD を通じて、デプロイされたアプリケーションの詳細を表示することもできます。
最後に、ツールチェーン全体を削除する場合は、`dtm delete` コマンドを実行するだけです。
プロセス全体は非常にスムーズでした(ただし、何らかの理由でGitHubへのアクセスが非常に遅かった点を除けば)。必要なプラグインを設定ファイルで定義するだけで済みます。プラグインの設定方法の詳細については、公式ドキュメント(https://docs.devstream.io/en/latest/plugins/plugins-list/)をご覧ください。
YAML設定ファイルに必要なDevOpsツールを定義するだけで、たった1つのコマンドでDevOpsツールチェーンとSDLCワークフロー全体を構築できます。DevStreamはまさに魔法のツールと言っても過言ではありません。
Git リポジトリ: https://github.com/devstream-io/devstream。
-
-
すごい!オープンソースのスーパープロジェクト、Apache Pulsar。
-
Redis の作者がオープンソースと収益化について語ります。
-
オープンソース SDN プロジェクトである OpenDaylight に新しいメンバーが加わりました。