NLP: 車輪の再発明はしない

NLP: 車輪の再発明はしない

導入

自然言語処理 (NLP) は困難な分野です。構造化されていないテキストから有用な結論を生成することは困難であり、それぞれ独自の使用例と複雑さを持つ無数の手法とアルゴリズムがあります。 NLP にほとんど触れたことのない開発者にとって、どの方法を使用し、それをどのように実装するかを知ることは困難です。

最小限の労力で最高の結果を出すことができれば。 80/20 の原則を使用して、結果 (80%) を大幅に犠牲にすることなく、ソリューションを迅速に (20%) 提供する方法を紹介します。

  • 「80/20の法則とは、少数の原因、入力、または努力が、通常、大多数の結果、出力、または報酬をもたらすというものです」

-『80/20の法則』の著者、リチャード・コッホ

どうすればこれを実現できるでしょうか? 世の中には素晴らしい Python ライブラリがいくつかあります。車輪の再発明をするのではなく、巨人の肩に乗って迅速に革新できるかもしれません。事前にテストされた実装と事前にトレーニングされたモデルを使用して、これらの方法を適用し、価値を生み出すことに重点を置きます。

この記事は、自然言語処理をプロジェクトに素早く統合したい開発者を対象としています。使いやすさと迅速な結果を重視しますが、パフォーマンスも低下します。私の経験では、80%のテクニックでプロジェクトには十分ですが、他の場所から関連する方法を探すこともできます。

さっそく始めましょう!

NLPとは何ですか?

自然言語処理は、ソフトウェアによるテキストの自動処理を可能にする言語学、コンピューターサイエンス、人工知能の分野です。 NLP により、機械は整理されていない非構造化テキストを読み取り、理解し、応答できるようになります。

多くの人は NLP を機械学習のサブセットだと考えていますが、現実はもっと微妙です。

一部の NLP ツールは機械学習に依存しており、さらにディープラーニングを使用するものもあります。ただし、これらの方法は大規模なデータセットに依存することが多く、実装が困難です。代わりに、開発サイクルをスピードアップするために、よりシンプルなルールベースのアプローチに重点を置きます。

用語

データの最小単位から始めると、文字は単一の文字、数字、または句読点です。単語は文字のリストであり、文は単語のリストです。文書は文のリストであり、コーパスは文書のリストです。

前処理

前処理はおそらく NLP プロジェクトで最も重要なステップであり、モデルがノイズを無視して最も重要なことに集中できるように入力をクリーンアップすることが含まれます。強力な前処理パイプラインはすべてのモデルのパフォーマンスを向上させるため、その価値は過大評価できません。

一般的な前処理手順を次に示します。

  • セグメンテーション: 長い文字列が与えられた場合、スペースで文書を、ピリオドで文を、スペースで単語を区切ることができます。実装の詳細はデータセットによって異なります。
  • 小文字を使用します。大文字を使用すると、通常はパフォーマンスが向上しず、文字列の比較が難しくなります。したがって、すべてを小文字に変更します。
  • 句読点の削除: 意味を付加しないコンマ、引用符、その他の句読点を削除する必要がある場合があります。
  • ストップワードを削除する: ストップワードとは、「she」、「the」、「of」などの、テキストに意味を追加せず、キーワードから注意をそらす単語です。
  • その他の無関係な単語を削除する: アプリケーションによっては、特定の無関係な単語を削除する必要がある場合があります。たとえば、コースのレビューを評価する場合、「教授」や「コース」などの単語は役に立たない可能性があります。
  • 語幹化/見出し語化: 語幹化と見出し語化はどちらも、語形変化した単語の語源を生成します (例: 「running」から「run」へ)。ステミングは高速ですが、語源が英語の単語であるという保証はありません。レンマ化では、コーパスを使用して、速度を犠牲にして、語根が単一の単語であることを確認します。
  • 品詞タグ付け: 品詞タグ付けは品詞 (名詞、動詞、前置詞) に基づいて、意味と文脈に応じて単語をマークします。たとえば、キーワード抽出では名詞に焦点を当てることができます。

これらの手順は、前処理を成功させるための基礎となります。データセットとタスクに応じて、いくつかの手順をスキップしたり、新しい手順を追加したりすることができます。前処理を通じてデータを手動で観察し、問題が発生した場合は修正を行います。

Python ライブラリ

NLP 用の 2 つの主要な Python ライブラリを見てみましょう。これらのツールは前処理において非常に重要な役割を果たします。

ナタリー

Natural Language Toolkit は、Python で最も広く使用されている NLP ライブラリです。 NLTK はペンシルベニア大学で学術目的で開発され、多数の機能とコーパスを備えています。 NLTK はデータの処理や前処理に最適です: https://www.nltk.org/

NLTK は、人間の言語データを処理する Python プログラムを構築するための主要なプラットフォームです。使いやすいAPIを提供します

  1. >>> nltk をインポートする
  2.  
  3. >>> sentence = 「木曜日の朝8時、アーサーは気分があまり良くありませんでした。」  
  4.  
  5. >>> トークン = nltk.word_tokenize(文)
  6. >>> トークン
  7. [ 午前8時」 木曜日、「 、「アーサー」、「」、感じない」、 とても」 「良い」 「。」 ]
  8.  
  9. >>> タグ = nltk.pos_tag(トークン)
  10. >>> タグ[0:6]
  11. [( 'At' 'IN' )、( 'eight' 'CD' )、( "o'clock" 、 'JJ ')、(' or '、 ' IN ')、(' Thursday '、 ' NNP ')、(' morning '、 ' NN')]

以下は、文をトークン化して品詞をマークすることがいかに簡単かを示す NLTK Web サイトからの例です。

スパシー

SpaCyはモダンな図書館です

  1. インポートスペース
  2.  
  3. nlp = spacec.load ( "en_core_web_sm" )をロードします。
  4. text = ( "セバスチャン・スランが自動運転車の開発に着手したとき、"  
  5. 「2007年のGoogleでは、社外で彼を真剣に受け止める人はほとんどいなかった
  6.  
  7. doc = nlp(テキスト)
  8. doc.ents内のエンティティの場合:
  9. 印刷(entity.text、entity.label_)
  10.  
  11. # 出力
  12. # セバスチャン・スラン
  13. # Google 組織
  14. # 2007年日付

SpaCy を使用して、名前付きエンティティの認識を実行できます。 SpaCy API を使用して迅速に実行できるタスクは他にも多数あります。

ジェンシム

NLTK や SpaCy とは異なり、GenSim は情報検索 (IR) の問題に特に対処します。 GenSim はメモリ管理に重点を置いて開発されており、潜在的意味インデックス、Word2Vec、FastText など、多くのドキュメント類似性モデルが含まれています。

Gensim は、大規模なコーパスでのトピック モデリング、ドキュメントのインデックス作成、類似性検索のための Python ライブラリです。

以下は、単語の類似性を検出する、事前トレーニング済みの GenSim Word2Vec モデルの例です。面倒な詳細を気にすることなく、すぐに結果を得ることができます。

  1. gensim.downloader をAPIとしてインポートします
  2. wv = api.load ( "word2vec-google-news-300" )
  3.  
  4. ペア = [
  5. ( '車' 'ミニバン' )、# ミニバンは車の一種です
  6. ( 「車」 「自転車」 )、# 車輪付きの乗り物でもある
  7. ( 「車」 「飛行機」 )、# 車輪はないが、それでも乗り物である
  8. ( '車' 'シリアル' )、# ... など。
  9. ( 「車」 「共産主義」 )、
  10. ]
  11.  
  12. w1、w2のペア場合:
  13. print('%r\t%r\t%.2f % (w1, w2, wv.similarity(w1, w2)))
  14.  
  15. # 出力
  16. '車'     「ミニバン」 0.69
  17. '車'     「自転車」 0.54
  18. '車'     「飛行機」 0.42
  19. '車'     「シリアル」 0.14
  20. '車'     「共産主義」 0.06

その他にもいろいろ…

このリストは包括的なものではありませんが、いくつかのユースケースをカバーしています。

応用

前処理方法と Python ライブラリについて説明しましたので、いくつかの例を挙げてすべてをまとめてみましょう。それぞれのアルゴリズムについて、いくつかの NLP アルゴリズムを紹介し、迅速な開発という目標に基づいて 1 つを選択し、ライブラリの 1 つを使用して簡単な実装を作成します。

アプリケーション1: 前処理

前処理はあらゆる NLP ソリューションの重要な部分です。そこで、Python ライブラリを使用してプロセスを高速化する方法を見てみましょう。私の経験から言うと、NLTK には独自のユースケースに合わせてカスタマイズされた、必要なツールがすべて揃っています。サンプルコーパスを読み込んでみましょう:

  1. nltk をインポートする
  2.  
  3. # 茶色のコーパスをロードする
  4. コーパス = nltk.corpus.brown
  5.  
  6. # コーパスファイルにアクセスする
  7. print(corpus.fileids())
  8.  
  9. # 出力
  10. [ 'ca01' 'ca02' 'ca03' 'ca04' 'ca05' 'ca06' 'ca07' 'ca08' 'ca09' 'ca10' 'ca11' 'ca12' 'ca13' 'ca14' 'ca15' 'ca16'
  11. 'ca17' 'ca18' 'ca19' 'ca20' 'ca21' 'ca22' 'ca23' 'ca24' 'ca25' 'ca26' 'ca27' 'ca28' 'ca29' 'ca30' 'ca31' 'ca32'
  12. 'ca33' 'ca34' 'ca35' 'ca36' 'ca37' 'ca38' 'ca39' 'ca40' 'ca41' 'ca42' 'ca43' 'ca44' 'cb01' 'cb02' 'cb03' 、 'c...

上記で定義したパイプラインに従って、NLTK を使用してセグメンテーションを実装し、句読点やストップワードを削除し、ステミングなどを実行できます。ストップワードを削除するのがいかに簡単かをご覧ください:

  1. nltk.corpusからストップワードをインポート
  2.  
  3. sw = stopwords.words( "英語" )
  4. sw += "" # 空の文字列
  5.  
  6. def remove_sw(doc):
  7. 文 = []
  8. ドキュメント内の:
  9. 文 = [文中単語が単語ない場合、   sw]
  10. sentences.append(文)
  11. 戻り
  12.  
  13. print( "ストップワード付き" )
  14. 印刷(doc1[1])
  15. 印刷()
  16.  
  17. doc1 = 削除_sw(doc1)
  18.  
  19. print( "ストップワードなし" )
  20. 印刷(doc1[1])
  21.  
  22. # 出力
  23. # ストップワードがあります
  24. # [ 'the' 'jury' 'さらに' 'said' 'in' 'presentments' 'that' 'the' 'city' 'executive' 'committee' 'which' 'had'
  25. # 「起訴」 「の」 選挙」、「値する 「の 「賞賛」 そして」 「感謝」 「の」 都市」 「の」 「アトランタ」 ために」
  26. # 「その」 「方法」 「で」 、 「その」 選挙 行わた」 ]
  27.  
  28. # ストップワードなし
  29. # [ '陪審員' '発言' 'プレゼンテーション' '市' '執行部' '委員会' '告発' '選挙' 'ふさわしい' '賞賛' '感謝' '市'
  30. # 「アトランタ」 「方法」 「選挙」 「実施」 ]

前処理パイプライン全体に必要なのは、40 行未満の Python です。完全なコードはこちらをご覧ください。これは一般的な例であり、特定のユースケースに応じて必要に応じてフローを変更する必要があることに注意してください。

アプリケーション2: ドキュメントクラスタリング

ドキュメントのクラスタリングは自然言語処理における一般的なタスクなので、いくつかのアプローチについて説明しましょう。ここでの基本的な考え方は、各ドキュメントに、議論されたトピックを表すベクトルを割り当てることです。

ベクトルが 2 次元の場合、ドキュメントを上記のように視覚化できます。この例では、ドキュメント A と B は密接に関連していますが、ドキュメント D と F は緩く関連していることがわかります。これらのベクトルが 3 次元、100 次元、または 1000 次元であっても、距離メトリックを使用して類似度を計算できます。

次の質問は、非構造化テキスト入力を使用して各ドキュメントに対してこれらのベクトルをどのように構築するかということです。最も単純なものから最も複雑なものまで、いくつかのオプションを次に示します。

  • Bag of Words: それぞれの一意の単語にインデックスを割り当てます。特定のドキュメントのベクトルは、各単語が出現する頻度です。
  • TF-IDF: 他のドキュメントでの単語の一般的度に基づいて表現を強化します。 2 つの文書がまれな単語を共有している場合、一般的な単語を共有している場合よりも類似性が高くなります。
  • 潜在的意味索引 (LSI): Bag of Words と TF-IDF は高次元のベクトルを作成する可能性があるため、距離測定の精度が低下します。 LSI は、情報の損失を最小限に抑えながら、これらのベクトルをより扱いやすいサイズに圧縮します。
  • Word2Vec: ニューラル ネットワークを使用して、大規模なテキスト コーパスから単語の関連付けを学習します。次に、各単語のベクトルを合計してドキュメント ベクトルを取得します。
  • Doc2Vec: Word2Vec をベースに構築されていますが、単語ベクトルのリストからドキュメント ベクトルを近似するより優れた方法を使用します。

Word2Vec と Doc2Vec は非常に複雑であり、単語の埋め込みを学習するには大規模なデータセットが必要です。事前にトレーニングされたモデルを使用することもできますが、私たちの分野のタスクにうまく適合しない可能性があります。代わりに、Bag of Words、TF-IDF、LSI を使用します。

それではライブラリを選択しましょう。 GenSim はこのタスク専用に構築されており、3 つのアルゴリズムすべてのシンプルな実装が含まれているため、GenSim を使用しましょう。

この例では、再び Brown コーパスを使用しましょう。 「冒険」「社説」「ニュース」など、15 のテキスト カテゴリのドキュメントがあります。 NLTK 前処理ルーチンを実行した後、GenSim モデルの適用を開始できます。

まず、ID を一意のインデックスにマッピングする辞書を作成します。

  1. gensimからコーパス、モデル、類似点をインポート
  2.  
  3. 辞書 = corpora.Dictionary(コーパス)
  4. dictionary.filter_n_most_frequent(1) # ""を削除します 
  5. num_words = len(辞書)
  6. 印刷(辞書)
  7. 印刷()
  8.  
  9. print( "最も頻繁に使用される単語" )
  10. top10 = sorted(dictionary.cfs.items(), key =lambda x: x[1], reverse= True )[:10]
  11. enumerate(top10)i, (id, freq)について:
  12. print(i, freq, 辞書[id])
  13.  
  14. # 出力
  15. # 辞書(33663 個の固有トークン: [ '1' '10' '125' '15th' '16' ]...)
  16.  
  17. # 最も頻繁に使用される単語
  18. # 0 3473 1
  19. # 1 2843 は
  20. # 2 2778 言う
  21. # 3 2327 作る
  22. # 4 1916年頃 
  23. # 5 1816 行く
  24. # 6 1777年は
  25. # 7 1665 新着
  26. # 8 1659 
  27. # 9 1575 テイク

次に、Bag of Words、TF-IDF、潜在的意味インデックスを繰り返し適用します。

  1. corpus_bow = [dictionary.doc2bow(doc)コーパス内のdocの場合]
  2. print(len(corpus_bow[0]))
  3. 印刷(corpus_bow[0][:20])
  4.  
  5. # 出力
  6. #6106
  7. # [(0, 1), (1, 3), (2, 1), (3, 1), (4, 1), (5, 1), (6, 1), (7, 1), (8, 1), (9, 2), (10, 1), (11, 1), (12, 2), (13, 2), (14, 2), (15,
  8. [#1)、(16、2)、(17、2)、(18、3)、(19、1)]
  9.  
  10. tfidf_model = models.TfidfModel(corpus_bow)
  11. コーパス_tfidf = tfidf_model[コーパス_bow]
  12. print(len(corpus_tfidf[0]))
  13. 印刷(corpus_tfidf[0][:20])
  14.  
  15. # 出力
  16. #5575
  17. # [(0, 0.001040495879718581), (1, 0.0011016669638018743), (2, 0.002351365659027428), (3, 0.002351365659027428), (4,
  18. # 0.0013108697793088472)、(5、0.005170600993729588)、(6、0.003391861538746009)、(7、0.004130105114011007)、(8、
  19. # 0.003391861538746009)、(9、0.008260210228022013)、(10、0.004130105114011007)、(11、0.00195578​​7484706956)、(12、
  20. # 0.0015918258736505996)、(13、0.0015918258736505996)、(14、0.008260210228022013)、(15、0.0013108697793088472)、(16、
  21. # 0.0011452524080876978)、(17、0.002080991759437162)、(18、0.004839366251287288)、(19、0.0013108697793088472)]
  22.  
  23. lsi_model = models.LsiModel(corpus_tfidf、id2word =辞書、num_topics = 20)
  24. corpus_lsi = lsi_model[corpus_tfidf]
  25. print(len(corpus_lsi[0]))
  26. 印刷(corpus_lsi[0])
  27.  
  28. # 出力
  29. #15
  30. # [(0, 0.18682238167974372), (1, -0.4437583954806601), (2, 0.22275580411969662), (3, 0.06534575527078117), (4,
  31. # -0.10021080420155845)、(5、0.06653745783577146)、(6、0.05025291839076259)、(7、0.7117552624193217)、(8、-0.3768886513901333)、(9、
  32. # 0.1650380936828472)、(10、0.13664364557932132)、(11、-0.03947144082104315)、(12、-0.03177275640769521)、(13、
  33. # -0.00890543444745628)、(14、-0.009715808633565214)]

約 10 行の Python コードで、3 つの個別のモデルを処理し、ドキュメントのベクトル表現を抽出しました。コサイン類似度を使用してベクトルを比較することで、最も類似したドキュメントを見つけることができます。

  1. カテゴリ = [ "冒険" "文学" "論説" "フィクション" "政府"
  2. 「趣味」 「ユーモア」 「学問」 「伝承」 「ミステリー」 「ニュース」 「宗教」
  3. [「レビュー」 「ロマンス」 「SF」 ]
  4. num_categories = len(カテゴリ)
  5.  
  6.  
  7. iが範囲(3)内にある場合:
  8. 印刷(カテゴリ[i])
  9. sims =インデックス[lsi_model[corpus_bow[i]]]
  10. top3 = sorted(enumerate(sims), key =lambda x: x[1], reverse= True ,)[1:4]
  11. jの場合、トップ3スコア:
  12. print(スコア, カテゴリ[j])
  13. 印刷()
  14.  
  15. # 出力
  16. #アドベンチャー
  17. # 0.22929086 フィクション
  18. # 0.20346783 ロマンス
  19. # 0.19324714 謎
  20.  
  21. #美しい手紙
  22. # 0.3659389 編集
  23. # 0.3413822 伝承
  24. # 0.33065677 ニュース
  25.  
  26. #社説
  27. # 0.45590898 ニュース
  28. # 0.38146105 政府
  29. # 0.2897901 ベルズレター

すると、結果が出ました。冒険小説と恋愛小説は最も類似しており、社説はニュースや政府と類似しています。

アプリケーション3: 感情分析

感情分析とは、構造化されていないテキストを肯定的、否定的、または中立的として解釈することです。感情分析は、レビューの分析、ブランドの測定、AI チャットボットの構築などに役立つツールです。

ドキュメントクラスタリングとは異なり、感情分析では前処理は使用しません。句読点、流れ、段落の文脈は雰囲気について多くのことを明らかにするので、それらを削除したくありません。

シンプルかつ効果的に保つために、パターンベースの感情分析を使用することをお勧めします。これらのモデルは、特定のキーワード、文の構造、句読点を検索することで、テキストの肯定性または否定性を測定します。感情分析機能が組み込まれた 2 つのライブラリを以下に示します。

VADER感情分析:

VADER は、Valence Aware Dictionary と sEntiment Recognizer の略称で、感情分析用の NLTK の拡張です。特に絵文字やテキストスラングの感情を計算するためにパターンを使用します。実装も非常に簡単です。

  1. vaderSentiment.vaderSentimentからSentimentIntensityAnalyzer をインポートします
  2.  
  3. アナライザー = SentimentIntensityAnalyzer()
  4.  
  5. print(analyzer.polarity_scores( "このクラスは私のお気に入りです!!!" ))
  6. print(analyzer.polarity_scores( "このクラスは嫌いです :(" ))
  7.  
  8. # 出力
  9. # { 'neg' : 0.0、 'neu' : 0.508、 'pos' : 0.492、 'compound' : 0.5962}
  10. # { 'neg' : 0.688, 'neu' : 0.312, 'pos' : 0.0, 'compound' : -0.765}

TextBlob感情分析:

同様のツールとして、感情分析用の TextBlob があります。 TextBlob は、実際には NLTK や SpaCy に似た多目的ライブラリです。感情分析ツールに関しては、感情の極性と主観性を報告する点で VADER とは異なります。私の個人的な経験から言うと、私は VADER の方が好きですが、人それぞれに長所と短所があります。 TextBlob の実装も非常に簡単です。

  1. textblobからTextBlobをインポート
  2.  
  3. testimonial = TextBlob( "このクラスは私のお気に入りです!!!" )
  4. print(testimonial.sentiment)
  5.  
  6. testimonial = TextBlob( "このクラスは嫌いです :( " )
  7. print(testimonial.sentiment)
  8.  
  9. # 出力
  10. # 感情(極性=0.9765625、主観性=1.0)
  11. # 感情(極性=-0.775、主観性=0.95)

注: パターンベースのモデルは、上記の例のような小さなテキストではうまく機能しません。平均 4 文のテキストに対して感情分析を実行することをお勧めします。

その他のアプリケーション

ここでは、開発をスピードアップするためのいくつかの追加トピックと、役立つアルゴリズムおよびツールを紹介します。

  • キーワード抽出: SpaCy を使用した固有表現抽出 (NER)、ntlk-rake を使用した高速自動キーワード抽出 (RAKE)
  • テキスト要約: PyTextRank SpaCy 拡張機能を使用した TextRank (PageRank に類似)、GenSim を使用した TF-IDF
  • スペルチェック: PyEnchant、SymSpell Python ポート

これらの例が、Python での自然言語処理に利用できる膨大なリソースを示すのに役立つことを願っています。問題が何であれ、誰かがプロセスを簡素化するライブラリを開発しました。これらのライブラリを使用すると、短時間で素晴らしい結果が得られます。

ヒントとコツ

NLP の紹介、Python ライブラリの概要、およびいくつかのサンプルアプリケーションを学習すれば、自分の課題に取り組む準備がほぼ整います。最後に、これらのリソースを最大限に活用するためのヒントとコツをいくつか紹介します。

  • Python ツール: 依存関係管理には Poetry、新しいモデルのテストには Jupyter Notebook、コード スタイルの維持には Black および/または Flake8、バージョン管理には GitHub をお勧めします。
  • 整理された状態を保つ: あるライブラリから別のライブラリに移動したり、現在作成中のコード テストにコードをコピーしたりするのは実装が簡単ですが、良い方法ではありません。急いでいるあまり良い解決策を見逃したくないので、適切な行動をとる際には、より慎重なアプローチを取ることをお勧めします。
  • 前処理: ゴミを入れればゴミが出る。入力をクリーンアップするための強力な前処理パイプラインを実装することが非常に重要です。処理されたテキストを視覚的に検査して、すべてが期待どおりに動作することを確認します。
  • 結果の提示: 結果をどのように提示するかによって、大きな違いが生じる可能性があります。テキスト出力が少し粗い場合は、集計統計や数値結果を表示することを検討してください。

<<:  顔認識アクセス制御システムが起動した後は、ゲートを簡単に通過する際に潜在的なリスクにも注意する必要があります。

>>:  AI を活用して建設現場の活動を監視

ブログ    
ブログ    

推薦する

感情セグメンテーションを理解する: 機械学習を活用してポジティブな気持ちを維持する方法

この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...

AI、VR、ブロックチェーンにより、新しい時代は貧しい人々にとっての楽園となるのでしょうか?

今日の社会では貧困がまだ存在しています。 [[275832]]国連開発計画(UNDP)のデータによる...

Google DeepMindは、新しいAIモデルGeminiを開発中であることを明らかにし、「GPT-4よりも強力」であると主張している。

6月28日、先月のGoogle I/O開発者会議で、Googleは開発中の大規模言語モデル「Gem...

スマート製造における AI: イノベーションと効率の推進

AI 技術の継続的な革新と発展により、人工知能 (AI) は多くの分野で大きな進歩を遂げており、その...

長文情報の精度はChatGPTを上回る、Metaは大規模モデルの幻覚を軽減する新手法を提案

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

...

赤ちゃんのように学習するディープマインド社の新モデルは、28時間で物理世界のルールを学習します

Deepmind は、直感的な物理学を学習できるモデルを構築し、モデルがなぜこの能力を実現するのか...

中小企業はデータセンターの自動化によってもたらされる課題にどのように対処するのでしょうか?

デジタル変革の時代において、データセンターは現代の企業のバックボーンを支える上で重要な役割を果たしま...

速報です! OpenAIがByteDanceアカウントを禁止!コンテンツ生成のための GPT の不正使用に関する内部告発

ノアが編集海外メディアのザ・ヴァージは北京時間今朝未明、生成AIをめぐる熾烈な競争の中で、バイトダン...

インテリジェントデータベースに基づくセルフサービス機械学習

翻訳者 | 張毅校正 | 梁哲、孫淑娟1. IDOになるにはどうすればいいですか? IDO (インサ...

医療用ロボットの具体的な用途は2つありますか?

最近では、手術を補助するさまざまなロボットが病院のあちこちで見られるようになりました。これらのロボッ...

人工知能の分野でどのように計画するか? マイクロソフトはこうする

[51CTO.com からのオリジナル記事] 人工知能は勢いを増しており、多くの大手企業が独自の計画...

AIネットワークはこれまで考えられていたよりも攻撃に対して脆弱である

人工知能 (AI) ツールは、自動運転車から医療画像解釈まで、さまざまなアプリケーションで使用される...

機械学習の巨匠マイケル・ジョーダン:すべてがAIと呼ばれるわけではない

近い将来、現実世界についての抽象的な推論を実行する能力において、コンピューターは人間に匹敵することは...

数行のコードで強化学習を実装する

強化学習は過去 1 年間で大きな進歩を遂げ、最先端のテクノロジが 2 か月ごとにリリースされています...