この記事は ML.NET CLI を使用してセンチメントを分析する をもとに書かれています。

ただ上記は英語を対象にしています。日本語を対象にしたものはないのでしょうか?

WRIME: 主観と客観の感情分析データセットver.2

これは主観(テキストの筆者1人)と客観(クラウドワーカ3人)の両方の立場から感情ラベルを付与したデータセットです。基本8感情(喜び、悲しみ、期待、驚き、怒り、恐れ、嫌悪、信頼)とその強度を4段階(0:無、1:弱、2:中、3:強)でラベル付けし、ver.2ではこれに感情極性(-2:強いネガティブ、-1:ネガティブ、0:ニュートラル、1:ポジティブ、2:強いポジティブ)も追加しています。60人の筆者から収集した35,000件がラベル付けされています。

WRIME: 主観と客観の感情分析データセットを使ってみる

wrime-ver2.tsvをダウンロードします。

タブ区切りで文章と筆者、日付、筆者の喜び、悲しみ、期待、驚き、怒り、恐れ、嫌悪、信頼とポジティブかネガティブかの感情極性、客観(3人)の喜び、悲しみ、期待、驚き、怒り、恐れ、嫌悪、信頼とポジティブかネガティブかの感情極性とその平均が数値でまとめられています。

ここで必要なのは筆者の感情極性と客観の感情極性の平均値です。筆者の感情極性と客観の感情極性の平均値の総和が正数ならポジティブ、負数ならネガティブ、0ならニュートラルとします。

これで以下のようなテキストファイルが得られます。

mlnet classification コマンドを実行する

次にこのファイルがあるフォルダで以下を実行します。

このときmy-wrime-ver2.tsvが改行で終わっているとうまく処理がおこなわれません。

my-wrime-ver2.tsvは上記で生成したテキストファイルの名前です。最後の300はトレーニング時間です。文がたくさんあるのでこれくらい必要ではないかと思われます。

ML.NET CLIがインストールされていないときは以下のコマンドでインストールします。

フォルダのなかにSampleClassificationというフォルダが生成され、中にSampleClassification.zipというシリアル化されたモデルが生成されるとともに、その生成されたモデルを実行/スコア付けする C# コードとそのモデルを生成するときに使用される C# トレーニング コードが生成されます。これをもとにWindowsFormsアプリケーションを作成します。

WindowsFormsアプリケーションで感情分析する

SampleClassification.zipをプロジェクトに追加して、SampleClassification.zipファイルのプロパティ:出力ディレクトリにコピー「常にコピーする」に変更します。

NuGetでMicrosoft.MLとMicrosoft.ML.FastTreeをインストールします。このとき対象プラットフォームをAny CPUからX64に変更しておかないとうまくいきません。

まずModelInputクラスとModelOutputクラスを定義します。これは上記で生成されたSampleClassification.consumption.csから拾ったものです。

ポジティブかネガティブかを表示させるのであれば必要なコードはこれだけです。

テキストボックスに文を入力してボタンをクリックしたら感情分析をして、メッセージボックスでその結果を表示します。