自然言語処理のための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のコンポーネントを詳しく見る

ブログ    
ブログ    
ブログ    

推薦する

アヴネットは18年連続で「トップ10ベスト国際ブランドディストリビューター」の称号を獲得しました。

[[284150]] 深圳でグローバル電子部品販売代理店優秀賞授賞式が開催されました。アヴネット中...

IT リーダーにとって必須のコース: 人工知能のビジネスへの影響と価値をどのように測定するか?

実績のある AI プロジェクトが大規模に導入されるケースが増えており、一部の企業では大きなメリットが...

5 年以内に、8,000 万の仕事が機械に置き換えられるでしょう。インダストリアル インターネットは治療薬でしょうか、それとも毒でしょうか?

時代の発展は常に要求と矛盾の中で発展しています。あらゆる産業革命は発展の力をもたらすだけでなく、大き...

ReSimAD: 実データなしで知覚モデルの一般化パフォーマンスを向上させる方法

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

AIエージェントは動物の進化の法則を学ぶ: Fei-Fei Liらが深層進化RLを提案

インテリジェントエージェントは人工知能分野の主要な研究テーマであり、非身体型知能と身体型知能に分けら...

百度CTO王海鋒氏:「文心易眼」のユーザー数は1億人を超える

「文心易眼のユーザー規模が1億人を突破した」。12月28日、百度の最高技術責任者で、深層学習技術・応...

海雲捷迅2018ビッグデータ博覧会ツアー——2018ビッグデータ博覧会人工知能世界大会決勝戦が終了

5月25日、2018年中国国際ビッグデータ博覧会人工知能世界大会決勝戦が予定通り貴陽で開催され、世界...

顔認識: 顔認識攻撃手法と偽装防止手法の種類

コンピュータサイエンスと電子技術の急速な発展により、顔認証は現在、市場シェアで指紋に次ぐ世界第2位の...

AI 開発の方向性に関する大論争: ハイブリッド AI?強化学習?実践的な知識と常識をAIに統合する?

[[396127]]著者: Ben Dickson はソフトウェア エンジニアであり、テクノロジー...

量子コンピューティングは人工知能の未来でしょうか?

量子コンピューティングは「量子状態」でさまざまな結果に対応できるため、機械学習や人工知能の問題に対す...

宜蘭グループインテリジェンスが再び認められ、認知インテリジェンスの飛躍的発展を促進

【原文は51CTO.comより】このほど、工業情報化部中国電子情報産業発展研究所が指導し、51CTO...

サム・アルトマンは、AGI が 2030 年までに登場し、GPT-10 の知能が全人類の知能の合計を超えると予測しています。

「人類は2030年までにAGIを開発するかもしれない。」サム・アルトマンは最近のポッドキャストのイ...

メタは商業用人工知能に注力するためタンパク質折り畳みチームを解散すると報道

フィナンシャル・タイムズによると、8月8日、ソーシャルメディア大手のMeta(旧Facebook)は...

都市 AI アプリケーションの失敗事例: 善意の自治体 AI プロジェクトはなぜ失敗したのか?

編集者注: AI をどのように実装できるかを検討してきた私たちにとって、この Flint の事例は目...