プロフェッショナルスキルを向上させる: 10のNLPテクニックを理解して習得する

プロフェッショナルスキルを向上させる: 10のNLPテクニックを理解して習得する

1. 感情分析

感情分析とは、ツイート、製品レビュー、顧客からのフィードバックなどのテキストの背後にある感情的な調子を判断するプロセスです。

感情分析の目的は、テキストを肯定的、否定的、または中立的として分類することです。たとえば、顧客が「素晴らしい、子供たちが気に入っている」という製品レビューを書いた場合、感情分析アルゴリズムはそのテキストを肯定的であると分類します。感情分析は、顧客の意見や好みに関する洞察を得るために、電子商取引、ソーシャル メディア、顧客サービスなどの業界で広く使用されています。

感情分析を実行する 1 つの方法は、Python の nltk ライブラリによって提供されるような事前トレーニング済みモデルを使用することです。以下は、nltk ライブラリを使用してテキストの感情を肯定的、否定的、または中立的として分類する方法の例です。

 import nltk from nltk.sentiment import SentimentIntensityAnalyzer # 初始化情感分析器sia = SentimentIntensityAnalyzer() # 定义要分析的文本text = "非常棒,小孩子很喜欢" # 获取情感分数sentiment_score = sia.polarity_scores(text) # 打印情感得分print (sentiment_score) # 将情绪分类为正面、负面或中性ifentiment_score [ 'compound' ] > 0.5 : print ( "Positiveentiment" ) elif情感_score[ 'compound'] < - 0.5 : print ( "Negative sentiment" ) else : print ( "Neutral sentiment" )

この例では、nltk.sentiment モジュールの SentimentIntensityAnalyzer クラスを使用して、「この製品が好きです。素晴らしいです」というテキストの感情を分析します。 polarity_scores() メソッドは、テキストの感情スコアを含む辞書を返します。ここで、「複合」スコアは -1 から 1 までの値で、-1 は否定、1 は肯定、0 は中立を表します。複合スコアに基づいて、感情を肯定的、否定的、または中立的として分類できます。

これは単なる単純な例であり、実際には感情分析は良い結果を得るために多くの調整と微調整を必要とする分野であることに注意してください。事前トレーニング済みのモデルは、特定の種類のテキスト (皮肉など) ではうまく機能しない可能性があり、パフォーマンスを向上させるには微調整や前処理の手順が必要になる場合があります。

2. 固有表現抽出(NER)

名前エンティティ認識 (NER) は、構造化されていないテキストから人名、組織名、場所名などのエンティティを抽出する技術です。 NER を実行する 1 つの方法は、Python の spacy ライブラリによって提供されるような事前トレーニング済みモデルを使用することです。以下は、spacy ライブラリを使用してテキストから名前付きエンティティを抽出する方法の例です。

 import spacy # Load the pre-trained model nlp = spacy.load("en_core_web_sm") # Define text to be analyzed text = "Barack Obama visited the White House today" # Process the text with the model doc = nlp(text) # Extract named entities for ent in doc.ents: print(ent.text, ent.label_)

この例では、spacy の en_core_web_sm モデルを使用して、「バラク・オバマが今日ホワイトハウスを訪問した」というテキストを分析します。処理されたテキストの ents 属性は、名前付きエンティティの反復子を返します。各エンティティには、それぞれエンティティのテキストとラベルを表す text と label_ という 2 つの属性があります。この例では、出力は次のようになります。

 Barack Obama PERSON White House FAC

「バラク・オバマ」は人物であり、「ホワイトハウス」は施設であることを示しています。

spacey には、さまざまな言語用に複数の事前トレーニング済みモデルがあり、その中には他のモデルよりも正確なものもあります。さらに、固有表現認識は、良好な結果を得るために多くの調整と微調整を必要とする領域です。事前トレーニング済みのモデルは、特定の種類のテキスト (技術テキストなど) では適切に機能しない可能性があり、パフォーマンスを向上させるには追加の微調整や前処理の手順が必要になる場合があります。

3. テキスト分類

テキスト分類は、テキストを事前定義されたカテゴリまたはクラスに自動的に分類するプロセスです。たとえば、テキスト分類アルゴリズムは、電子メールをスパムかそうでないかに分類したり、ニュース記事をトピック別に分類したりするために使用されることがあります。テキスト分類は、自然言語処理、情報検索、機械学習など、さまざまなアプリケーションで使用されます。

以下は、Python ライブラリ scikit-learn を使用したテキスト分類の例です。この例では、20 の異なるニュースグループからのテキストを含む 20 Newsgroups データセットを使用します。目標は、テキストの内容に基づいて、テキストがどのニュースグループに属するかを予測する分類器をトレーニングすることです。

 from sklearn.datasets import fetch_20newsgroups from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.naive_bayes import MultinomialNB from sklearn.metrics import accuracy_score # Load the 20 Newsgroups dataset newsgroups_train = fetch_20newsgroups(subset='train') newsgroups_test = fetch_20newsgroups(subset='test') # Transform the texts into TF-IDF vectors vectorizer = TfidfVectorizer() X_train = vectorizer.fit_transform(newsgroups_train.data) X_test = vectorizer.transform(newsgroups_test.data) y_train = newsgroups_train.target y_test = newsgroups_test.target # Train a Multinomial Naive Bayes classifier clf = MultinomialNB() clf.fit(X_train, y_train) # Predict the newsgroup of the test texts y_pred = clf.predict(X_test) # Evaluate the classifier's accuracy accuracy = accuracy_score(y_test, y_pred) print("Accuracy: {:.2f}%".format(accuracy * 100))

このコードは、20 個のニュースグループのデータセットを読み込み、それをトレーニング セットとテスト セットに分割します。次に、TfidfVectorizer を使用してテキストを数値表現に変換し、トレーニング セットを使用して多項式単純ベイズ分類器をトレーニングします。最後に、トレーニングされた分類器を使用してテスト テキストのニュースグループを予測し、分類器の精度を評価します。

4. 機械翻訳

機械翻訳とは、テキストをある言語から別の言語に自動的に翻訳するプロセスです。たとえば、機械翻訳アルゴリズムはスペイン語のニュース記事を英語に翻訳する場合があります。機械翻訳は、電子商取引、国際ビジネス、政府など、さまざまな業界で使用されています。

以下は、OpenNMT ライブラリを使用して英語からフランス語に翻訳する例です。

 from opennmt import tokenizers from opennmt import models import torch # Tokenize the source and target text. source_tokenizer = tokenizers.new("text", "en") source_text = "Hello, how are you?" source_tokens = source_tokenizer.tokenize(source_text) target_tokenizer = tokenizers.new("text", "fr") target_text = "Bonjour, comment vas-tu?" target_tokens = target_tokenizer.tokenize(target_text) # Build the translation model. model = models.Transformer( source_vocab_size=len(source_tokenizer.vocab), target_vocab_size=len(target_tokenizer.vocab), num_layers=6, hidden_size=512, dropout=0.1, attention_dropout=0.1, relu_dropout=0.1) model.eval() # Convert the tokens to a tensor. source_tokens = torch.tensor(source_tokenizer.encode(source_text)).unsqueeze(0) # Generate a translation. with torch.no_grad(): log_probs, _, _ = model(source_tokens, None, None) tokens = log_probs.argmax(-1) # Decode the translation. translation = target_tokenizer.decode(tokens[0]) print(translation)

このコードは、「Bonjour, comment vas-tu?」 (中国語: こんにちは、お元気ですか?) を出力します。

これは非常に単純な例であり、事前トレーニング済みのモデルをロードする必要があるため、直接実行できないことに注意してください。さらに、この例では入力として小さなデータセットを使用しているため、特定のケースでは事前トレーニング済みのモデルが利用できない可能性があります。機械学習の詳細については、ここをクリックしてください。

5. テキスト要約

テキスト要約は、長いテキストの短縮版を自動的に生成するプロセスです。たとえば、テキスト要約アルゴリズムは、長いニュース記事を取得して、要点をまとめた短い要約を生成します。テキスト要約は、自然言語処理、情報検索、機械学習など、さまざまなアプリケーションで使用されます。

これは非常に単純な例であり、事前トレーニング済みのモデルをロードする必要があるため、直接実行できないことに注意してください。さらに、この例では入力として小さなデータセットを使用しているため、特定のケースでは事前トレーニング済みのモデルが利用できない可能性があります。

 from gensim.summarization import summarize text = "In computing, stop words are words which are filtered out before or after processing of text. Though stop words usually refer to the most common words in a language, there is no single universal list of stop words used by all natural language processing tools, and indeed not all tools even use such a list. Some tools specifically avoid removing these stop words to support phrase search." print(summarize(text, ratio=0.2))

このコードは、文章の最も重要な 20% のみを保持して、テキストの要約バージョンを出力します。「一部のツールでは、フレーズ検索をサポートするために、これらのストップワードの削除を特に避けています。」

scale パラメータを調整してサマリー内のテキストの量を変更したり、word_count パラメータを使用してサマリーに含める単語数を指定したりできます。

6. 情報抽出

情報抽出とは、非構造化テキストから構造化データを抽出するプロセスです。たとえば、情報抽出アルゴリズムは、電子商取引 Web サイトから価格や在庫状況などの製品情報を抽出する場合があります。情報抽出は、電子商取引、金融、医療などさまざまな業界で、非構造化テキストから構造化データを抽出するために使用されています。

以下は、Python と Natural Language Toolkit (NLTK) ライブラリを使用した情報抽出の例です。

 import nltk from nltk import word_tokenize, pos_tag, ne_chunk # 示例文本text = "Barack Obama 是美国第44 任总统,任期从2009 年到2017 年。" # 对文本进行分词tokens = word_tokenize(text) # POS 标记tagged_tokens = pos_tag(tokens) # 命名实体识别Entity = ne_chunk(tagged_tokens) print(entities)

上記のコードは、まずテキストを個々の単語に分割し、次に品詞タグ付けを実行して各単語の品詞を識別し、最後に名前付きエンティティ認識を実行して人名、組織名、場所名などのエンティティを識別します。

ne_chunk 関数の出力はツリー構造であり、これをさらに処理して対象のエンティティを抽出できます。

 (S (PERSON Barack/NNP) Obama/NNP was/VBD the/DT 44th/JJ (ORGANIZATION President/NNP) of/IN the/DT (GPE United/NNP States/NNPS) ,/, serving/VBG from/IN 2009/CD to/TO 2017/CD ./.)

上記の例は非常に単純なものであり、実際のアプリケーションでは多くの前処理とモデルの微調整が必​​要になることに注意してください。

7. テキスト生成

テキスト生成とは、製品の説明やニュース記事の作成など、テキストを自動的に作成するプロセスです。たとえば、テキスト生成アルゴリズムは、製品の画像を入力として受け取り、製品の説明を生成します。テキスト生成は、電子商取引、マーケティング、コンテンツ作成など、さまざまな業界で使用されています。

以下は、Python ライブラリ Hugging Face のトランスフォーマーの GPT-2 モデルを使用したテキスト生成の例です。

 from transformers import GPT2Tokenizer, GPT2LMHeadModel # Load the GPT-2 model and tokenizer tokenizer = GPT2Tokenizer.from_pretrained("gpt2") model = GPT2LMHeadModel.from_pretrained("gpt2") # Define the prompt and generate text prompt = "Once upon a time in a land far, far away" generated_text = model.generate(input_ids=tokenizer.encode(prompt)) # Decode the generated text generated_text = tokenizer.decode(generated_text) print(generated_text)

このコードは、GPT-2 モデルを使用して、提供されたプロンプト「Once upon a time in a land far, far away」に基づいてテキストを生成します。生成されたテキストはコンソールに出力されます。

事前トレーニング済みのモデルをダウンロードするにはインターネット接続が必要になる場合があり、テキストを生成するには強力な GPU が必要になる場合があることに注意してください。

8. テキストクラスタリング

テキスト クラスタリングは、類似したテキスト ドキュメントをグループ化するプロセスです。たとえば、テキスト クラスタリング アルゴリズムは、ニュース記事のコレクションを処理して、「スポーツ」、「政治」、「エンターテイメント」などのカテゴリに分類する場合があります。テキスト クラスタリングは、自然言語処理、情報検索、機械学習など、さまざまなアプリケーションで使用されます。

 import nltk from nltk import word_tokenize, pos_tag, ne_chunk # Sample text text = "Barack Obama was the 44th President of the United States, serving from 2009 to 2017." # Tokenize the text tokens = word_tokenize(text) # POS tagging tagged_tokens = pos_tag(tokens) # Named entity recognition entities = ne_chunk(tagged_tokens) print(entities)

上記のコードは、まずテキストを個々の単語に分割し、次に品詞タグ付けを実行して各単語の品詞を識別し、最後に名前付きエンティティ認識を実行して人名、組織名、場所名などのエンティティを識別します。

ne_chunk 関数の出力はツリー構造であり、これをさらに処理して対象のエンティティを抽出できます。

9. 音声認識

音声認識は、話された言葉をテキストに変換するプロセスです。たとえば、音声認識アルゴリズムは、仮想アシスタントなどの音声制御システムで使用され、音声コマンドをコンピューターが理解できるテキストに書き起こします。音声認識は、医療、金融、顧客サービスなど、さまざまな業界で使用されています。

さまざまなプログラミング言語で音声認識に使用できるライブラリやフレームワークが多数あります。以下は、Python の音声認識ライブラリを使用してマイクからの音声を書き起こす方法の例です。

 import speech_recognition as sr # create a recognizer object r = sr.Recognizer() # create a microphone object mic = sr.Microphone() # listen for speech and transcribe it with mic as source: r.adjust_for_ambient_noise(source) audio = r.listen(source) transcribed_text = r.recognize_google(audio) print(transcribed_text)

この例では、音声文字変換に Google Web Speech API を活用する recognize_google() 関数を使用します。その他の転写オプションには、recognize_sphinx() 関数 (CMU Sphinx エンジンを使用) または recognize_wit() 関数 (Wit.ai API を使用) の使用が含まれます。

このライブラリを使用して、ファイルから音声を認識することもできます。

 with sr.AudioFile('audio_file.wav') as source: audio = r.record(source) transcribed_text = r.recognize_google(audio) print(transcribed_text)

Google Web Speech API を使用するにはインターネット接続が必要であり、選択した文字起こしエンジンに応じて認証情報を設定したり、追加のパッケージをインストールしたりする必要がある場合があることに注意してください。

10. テキスト読み上げ(TTS)

テキスト読み上げ (TTS) は、書かれたテキストを音声言語に変換するテクノロジーです。視覚障害者向けの音声合成、音声アシスタント、自動顧客サービス システムなどのアプリケーションでよく使用されます。

TTS システムは、自然言語処理や機械学習などのテクノロジーを組み合わせて、リアルな音声を生成します。 TTS ソフトウェアの例としては、Google の Text to Speech、Amazon Polly、Apple の Siri などがあります。

以下は、Python で gTTS (Google Text to Speech) ライブラリを使用してテキストを音声に変換する例です。

 from gtts import gTTS import os text = "Hello, this is an example of text to speech using the gTTS library in Python." # Language in which you want to convert language = 'en' # Passing the text and language to the engine, # here we have marked slow=False. Which tells # the module that the converted audio should # have a high speed myobj = gTTS(text=text, lang=language, slow=False) # Saving the converted audio in a mp3 file named # welcome myobj.save("welcome.mp3") # Playing the converted file os.system("mpg321 welcome.mp3")

このコードは、「こんにちは。これは Python の gTTS ライブラリを使用したテキスト読み上げの例です。」というテキストを gTTS ライブラリを使用して音声に変換し、「welcome.mp3」という mp3 ファイルに保存します。

最後の行 os.system("mpg321 welcome.mp3") は、コマンドライン ツール mpg321 を使用して mp3 ファイルを再生します。システムに mpg321 がインストールされていない場合は、他のプレーヤーを使用して mp3 ファイルを再生できます。

高度な自然言語処理についてさらに学習するには、次のリンクを参照してください。
microstone123/自然言語処理 (github.com)。

<<:  貧困が私を訓練した

>>:  JavaScript ChatGPT プラグインの構築、学習しましたか?

ブログ    
ブログ    
ブログ    

推薦する

孫玄: Zhuanzhuan が AI エンジニアリング アーキテクチャ システムを構築する方法

[51CTO.comより引用] 2018年5月18日〜19日、51CTO主催のグローバルソフトウェア...

交渉は失敗しました!ウルトラマンはOpenAIへの復帰に失敗し、Twitchの創設者が新CEOに就任

会談は決裂した。アルトマン氏はOpenAIを完全に離れることになる。反転しつつあるこの宮廷ドラマに関...

...

パンデミック下でIoTが「最前線で働く人」の役割を果たす

[[397252]]画像ソース: https://pixabay.com/images/id-594...

ロボットは感染症の蔓延を抑制するためにどのように役立つのでしょうか?

COVID-19の時代において、ロボット工学とテクノロジーは協力して伝染性ウイルスの拡散を防いでい...

自動運転車は私たちの生活をどのように変えるのでしょうか?

自動運転車は交通渋滞を改善し、交通事故を減らすだろうが、公共交通機関、不動産市場、健康にもさまざまな...

マイクロソフトが新たな特許を取得: 移動中のダイナミックなドローン配達システム

海外メディアNeowinによると、マイクロソフトが取得した最新の一連の特許の中に、潜在的な新しい配信...

MIT とハーバード大学が協力して、ニューラル ネットワークが自身の強みを理解する方法を研究しています。

ニューラルネットワークはますます使用されるようになっています。 [[357551]]医療診断であれ、...

...

AIドクターは正式に勤務中ですか? AIと医療の融合が爆発点に到達!

近年、医療分野における人工知能の応用が非常にホットな話題となっています。 「ニューイングランド・ジャ...

30歳以下の人はどこへ行ってしまったのでしょうか? OpenAIは若者を引き付けるために懸命に努力している

編纂者:ヤン・ジェン制作:51CTO テクノロジースタック(WeChat ID:blog)ビル・ゲイ...

4つの業界は人工知能がもたらす混乱に注意を払う必要がある

2020 年には、AI と機械学習のテクノロジーが新興産業に継続的な影響を与え、企業だけでなく消費者...

...

AI および機械学習プロジェクトはどの程度安全ですか?

人工知能と機械学習は私たちに利益をもたらしますが、そのセキュリティには注意が必要です。どれくらい安全...