質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

871閲覧

Multinominal NaiveBayesを使用してのテキスト作成者予測

Auger

総合スコア1

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/08/15 14:03

前提・実現したいこと

私は、機械学習の勉強を独学で6月から勉強し始めました。
そこでSickit-learnのMultinominal NaiveBayesを用いて、テキストの作成者予測をしています。
勉強する中で、トレーニングデータとテストデータについて1つ気になることがあるので質問させてください。
私は現在、表2の???が誰かを予測しようとしています。
表2のテストデータには表1のトレーニングデータに含まれない単語(にんじん、だいこん...)も存在します。
トレーニングデータにない言葉がテストデータに出てきた時、スムージングを使用するとして、
トレーニングデータにあり、テストデータに存在しない言葉が出てきた時、
存在しない分のテストデータの次元を増やして、トレーニングデータの次元数と揃えるべきなのでしょうか。
(下記の表を使用していうと、表2にリンゴやバナナという次元を加える処理をしてから予測を行う)
それとも、このまま何にも処理をせず、表1と表2のデータをそのまま使用して予測することができるのでしょうか。

          表1 トレーニングデータ
|名前 |リンゴ|バナナ|ブドウ|パイン|イチゴ|
|さとし | 0.2 | 0.1 | 0.1 | 0.4 | 0.2 |
|ひろき | 0.3 | 0.3 | 0.0 | 0.2 | 0.2 |
|ひとみ | 0.5 | 0.1 | 0.2 | 0.1 | 0.1 |

表2 テストデータ
|名前 |にんじん|だいこん|いも|イチゴ|
|??? | 0.2 | 0.6 | 0.1 | 0.2 |

試したこと

インターネットで調べてみても、よくわからず独学では限界があると思い質問させていただきました。
テストデータは未知のテキストであるという前提なので、トレーニングデータとの次元数の違いや言葉(リンゴなど)の違いも当然あります。このような場合の処理をどうするのかということが分かりません•••

補足情報(FW/ツールのバージョンなど)

トレーニングデータ、テストデータはC#を用いて入力されたテキストからそれぞれcsvファイルを作成し,
そのファイルを使用してPythonでテキスト作成者予測をしています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自然言語処理は門外漢ですが、どなたからも回答がないようなのでご参考まで。

未知語問題、未知語処理
といって自然言語処理で大きな研究テーマの一つです。

存在しない分のテストデータの次元を増やして、トレーニングデータの次元数と揃えるべきなのでしょうか。

(下記の表を使用していうと、表2にリンゴやバナナという次元を加える処理をしてから予測を行う)

これを仮にしたとして、「にんじん」「だいこん」「いも」に対しては何ら学習が出来ないので不可ですね。
「イチゴ」が多い人は「にんじん」も多いので、、、と少しは学習できる可能性はありますが厳しいでしょう

それとも、このまま何にも処理をせず、表1と表2のデータをそのまま使用して予測することができるのでしょうか。

これも不可ですね。

取り組みの可能性として例えば、辞書としてほぼ発生する単語を網羅した文書群で学習しておきベクトル化。それを用いて類似ベクトルから類似語を推定して予測する

Embeddingについてまとめた。
などが参考となるでしょうか。

投稿2020/11/01 06:16

aokikenichi

総合スコア2210

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問