自然言語処理のためのOne Hot Modelについて

自然言語処理のためのOne Hot Modelについて

[[421481]]

この記事はWeChatの公開アカウント「Pythonとビッグデータ分析」から転載したもので、著者はLittle Birdです。この記事を転載する場合は、Python およびビッグデータ分析の公開アカウントにお問い合わせください。

最近仕事が忙しくて、少し前に勾配と微分の問題で本当に悩みました。数学が苦手なので、機械学習やニューラルネットワークは本当に頭が痛いです。リラックスするためにアプリケーションレベルに切り替えたいと思い、自然言語処理を思いつきました。ワンホットモデルは基底とエントリポイントです。リストを行列と辞書に変換する単純な関数のようです。手動で実装することも考えましたが、CountVectorizerを見たらそうではないことがわかったので諦めました。

名前が示すように、ワンホット表現はゼロベクトルから始まり、単語が文または文書に出現する場合、ベクトル内の対応するエントリを 1 に設定します。

文をトークン化し、句読点を無視し、すべての単語を小文字で表すと、サイズ 8 の語彙 {time、fruit、flies、like、a、an、arrow、banana} が得られます。したがって、各単語を 8 次元のワンホット ベクトルで表すことができます。この本では、トークン/単語wのワンホット表現を表すために1[w]を使用します。

フレーズ、文、または文書の場合、圧縮されたワンホット表現は、その構成単語の論理 OR のワンホット表現にすぎません。 「like a banana」というフレーズのワンホット表現は、列が 8 次元のワンホット ベクトルである 3×8 行列になります。また、「折り畳み」またはバイナリ エンコーディングもよく見られます。このエンコーディングでは、テキスト/フレーズが語彙の長さのベクトルで表され、0 と 1 が単語の有無を表します。バナナのようなのバイナリエンコードは [0,0,0,1,1,0,0,1] です。

  1. sklearn.feature_extraction.textからCountVectorizer、TfidfVectorizer をインポートします
  2. Seaborn をSNSとしてインポートする
  3. matplotlib.pyplot をpltとしてインポートします。
  4. 輸入業者
  5. jieba.analyse をインポートする
  6.  
  7. # ワンホット表現はゼロベクトルから始まり、単語が文または文書内に出現する場合は、ベクトル内の対応するエントリを 1 に設定します。
  8. # 英語の処理と表示
  9. corpus = [ 「時は矢のように過ぎ去る。」 「果物はバナナのように飛ぶ。」 ]
  10. one_hot_vectorizer = CountVectorizer(バイナリ= True )
  11. one_hot = one_hot_vectorizer.fit_transform(コーパス).toarray()
  12. sns.heatmap(one_hot, annot= True , cbar= False , yticklabels=[ '文1' , '文2' ])
  13. plt.show()

  1. # 中国語の処理と表示
  2. # ストップワードリストを取得する
  3. def get_stopwords_list(ストップワードファイル):
  4. stopwords = [line.strip() for line in   open (stopwordfile, encoding= 'UTF-8' ).readlines()]
  5. ストップワードを返す
  6.  
  7. # ストップワードを削除する
  8. def movestopwords(文):
  9. stopwords = get_stopwords_list( 'stopwords.txt' ) # ここでストップワードのパスを読み込みます
  10. santi_words = [x for x in sentence if len(x) > 1 and x not  ストップワード]
  11. santi_wordsを返す
  12.  
  13. # コーパス
  14. corpus = [ "シャオミンは中国科学院計算技術研究所で修士号を取得し、その後日本の京都大学で学びました。" ,
  15. 「王暁さんは清華大学で学士号を取得し、南京コンピューター技術研究所で勤務・研究した後、日本の早稲田大学で学びました
  16. 「シャオ・リーは清華大学で学士号を取得し、中国科学院計算技術研究所で修士号を取得し、南京大学で博士号を取得しました。
  17. ニューコーパス = []
  18. コーパス内のstrの場合:
  19. orgwordlist = jieba.lcut(str) # jieba 単語分割
  20. wordlist = movestopwords(orgwordlist) # ストップワードを削除
  21. newword = " " . join (wordlist) # コーパスの必要に応じてスペースで区切る
  22. newcorpus.append(newword) # コーパスの要件に従ってリストに変換します
  23. #ニューコーパス
  24. # [ 'シャオミンは中国科学院計算技術研究所で修士号を取得し、日本の京都大学で学びました'
  25. # 「シャオ・ワン 清華大学南京計算技術学院の学部生 早稲田大学でさらに勉強 日本でさらに勉強
  26. # 「シャオ・リー、清華大学学部生、修士、中国科学院計算技術研究所卒業生、南京大学博士
  27. one_hot_vectorizer = CountVectorizer( binary = True ) # bag-of-wordsデータ構造を作成する
  28. one_hot = one_hot_vectorizer.fit_transform(newcorpus).toarray() # コーパスと行列を変換する
  29. # 以下はホットワードの出力結果です
  30. # one_hot_vectorizer.vocabulary_
  31. # { '暁明' : 4、 '修士' : 14、 '卒業' : 11、 '中国科学院' : 0、 '計算技術研究所' : 15、 '京都大学' : 8、 '進学' : 12、 '暁王' : 6、 '学部' : 10、 '清華大学' : 13、 '南京' : 1、 '仕事' : 7、 '早稲田大学' : 9、 '暁李' : 5、 '博士号' : 3、 '南京大学' : 2}
  32. # one_hot_vectorizer.get_feature_names()
  33. # [ '中国科学院' '南京' '南京大学' '博士号' '暁明' '暁李' '暁王' '仕事' '京都大学日本' 、'早稲田大学、日本' '学部' '卒業' '進学' '清華大学' '修士' 'コンピューティング技術研究所' ]
  34. #ワンホット
  35. # [[1 0 0 0 1 0 0 0 1 0 0 1 1 0 1 1]
  36. # [0 1 0 0 0 0 1 1 0 1 1 0 1 1 0 1]
  37. # [1 0 1 1 0 1 0 0 0 0 1 1 0 1 1 1]]
  38. sns.set_style({ 'font.sans-serif' :[ 'SimHei' , 'Arial' ]})
  39. sns.heatmap(one_hot, annot= True , cbar= False , xticklabels=one_hot_vectorizer.get_feature_names(),
  40. yticklabels=[ 'ステートメント 1' , 'ステートメント 2' , 'ステートメント 3' ])
  41. plt.show()

IDF 表現は、ベクトル表現において一般的なシンボルにペナルティを与え、まれなシンボルに報酬を与えます。コーパスのシンボルwのIDF(w)は次のように定義されます。ここでn[w]は単語wを含む文書の数、Nは文書の総数です。 TF-IDF スコアは、TF(w) * IDF(w) の積です。まず、すべてのドキュメント(つまり、n[w] = N)について、IDF(w)は0であり、TF-IDFスコアは0であり、この用語に完全にペナルティが課せられることに注意してください。 2 番目に、用語がまれにしか出現しない場合 (おそらく 1 つのドキュメントにのみ出現する場合)、IDF は log n の最大値になります。

  1. tfidf_vectorizer = TfidfVectorizer() # 単語バッグデータ構造を作成する
  2. tfidf = tfidf_vectorizer.fit_transform(newcorpus).toarray() # コーパスと行列を変換する
  3. # 以下はホットワードの出力結果です
  4. # tfidf_vectorizer.vocabulary_
  5. # '暁明' : 4、 '修士' : 14、 '卒業' : 11、 '中国科学院' : 0、 '計算工学研究所' : 15、 '京都大学' : 8、 '進学' : 12、 '暁王' : 6、 '学部' : 10、 '清華大学' : 13、 '南京' : 1、 '仕事' : 7、 '早稲田大学' : 9、 '暁李' : 5、 '博士号' : 3、 '南京大学' : 2}
  6. # tfidf_vectorizer.get_feature_names()
  7. # [ '中国科学院' '南京' '南京大学' '博士号' '暁明' '暁李' '暁王' '仕事' '京都大学日本' 、'早稲田大学、日本' '学部' '卒業' '進学' '清華大学' '修士' 'コンピューティング技術研究所' ]
  8. # tfidf
  9. # [[0.35221512 0. 0. 0. 0. 0.46312056 0. 0. 0. 0.46312056 0. 0. 0.35221512 0.35221512 0. 0.35221512 0.27352646]
  10. # [0. 0.35761701 0. 0. 0. 0. 0.35761701 0. 0.35761701 0.27197695 0. 0.54395391 0.27197695 0. 0.21121437]
  11. # [0.30443385 0. 0.40029393 0.40029393 0. 0.40029393 0. 0. 0. 0. 0. 0. 0.30443385 0.30443385 0.30443385 0.23642005]]
  12. sns.heatmap(tfidf, annot= True , cbar= False , xticklabels=tfidf_vectorizer.get_feature_names(),
  13. yticklabels=[ 'ステートメント 1' , 'ステートメント 2' , 'ステートメント 3' ], vmin=0, vmax=1, cm

<<:  ロボット: 何を見ているんですか?人間とロボットのアイコンタクトが意思決定を遅らせる、サイエンス誌に掲載

>>:  [技術的な詳細] 自動化プラットフォームの将来はどうなるのでしょうか? IBM Cloud Pak for Business Automationのコンポーネントを詳しく見る

ブログ    
ブログ    
ブログ    

推薦する

ブロックチェーンは人工知能をどのように変えるのでしょうか?

人工知能とブロックチェーンは、現在人気が高まっている2つの人気産業です。 2つの技術は異なり、商業的...

パンデミックの中、大量のAIロボットが職務に就いている

2016年、著名な科学ライターでありシリコンバレーの投資家でもある呉軍氏は、大胆に次のように予測しま...

2020年までに、iPhoneでは画面指紋認証と顔認証が共存するようになるかもしれない

数日後には、2019 年の新しい iPhone シリーズが登場します。iPhone が Face I...

...

ソフトウェアと自動化機器が持続可能性と回復力を向上させる方法

近年、需要の増加、エネルギーコストの高騰、持続可能性の問題が続く中、データセンターが注目を集めていま...

...

ChatGPT を助手席に乗せましょう!清華大学、中国科学院、MITが共同でCo-Pilotヒューマン・コンピュータ・インタラクション・フレームワークを提案:乗客の意図を完璧に制御

今年の人工知能分野における最も重要なブレークスルーの一つとして、大規模言語モデルの研究は常に主要な関...

AIを活用して都市の建物の特性を識別し、地震などの災害に対するリスクを予測する

人工知能は、ビジネスから工業デザイン、エンターテインメントまで、さまざまな分野で新たな機会を提供して...

...

AIが製造業に力を与え、PowerLeader Serverは製品、サービス、生産に焦点を当てる

ビッグデータ、モノのインターネット、人工知能に代表される新世代の情報技術は大きな進歩を遂げ、産業化を...

...

10年後の市場規模は1.3兆ドル。「モデル電源時代」到来

半年以上にわたる大規模なモデル嵐の後、AIGC 市場には新たな変化が起こり始めました。クールな技術デ...

PillarNeSt: Pillar ベースの 3D オブジェクト検出のパフォーマンスをさらに向上させるにはどうすればよいでしょうか?

著者の個人的な理解に基づいて書かれた現在、自動運転の分野では、点群データを収集するためのLIDARセ...

最初にサンプルが多すぎますか? 5つのサンプリングアルゴリズムを数分で実行できます

データサイエンスはアルゴリズムの研究です。この記事では、データを処理するための一般的なサンプリング手...

AIの大規模導入における大きなギャップを埋めます!アリババ、テンセント、百度などが共同でインターネットサービスAIベンチマークを開始

[[276827]]今日、インターネット サービスは根本的な変化を遂げており、徐々にインテリジェント...