Meanotek NeuText APIを使用したレストラン訪問者レビューの分析

レストランユーザーレビューの分析は、Dialogue 2015カンファレンスの一環として行われたSentiRuEval-2015テストタスクの一部でした。 この記事では、このようなアナライザーが実際に行うこと、実際にこれが必要な理由、およびMeanotek NeuText APIを使用してこのようなツールを自分の手で作成する方法について説明します



アスペクトに関するフィードバックの分析は、多くの場合、いくつかの段階に分けられます。 たとえば、「日本料理は美味しかったが、ウェイターはゆっくり働いた」という文を考えてみてください。 最初の段階では、重要な単語やフレーズを強調します。 この場合、「日本料理」、「おいしい」、「ウェイター」、「遅い」です。 これにより、提案の意味を理解できます。 さらに、用語をグループ化することもできます。たとえば、「料理」と「おいしい」を食べ物、「ウェイター」をサービスと呼びます。 このようなグループ化により、集計された統計の生成が可能になります。 最後に、用語の調性を評価したい場合がありますが、用語について肯定的または否定的なことが言われます。





理由:この質問に答えるのは簡単ではありません。 テストオーガナイザーの仮定の下では、タスクは最終的にレビュー全体の調性を評価することです。つまり、このレビューの著者はサービスが良いとインテリアが悪いと考えると言うことです。 しかし、この問題は現在、他の方法で解決されています-ほとんどのotzovikサイトでは、ユーザーがフィードバックを残したときに、アスペクトに関する評価も手動で入力することが規定されています。 そのような情報の可用性は、そのような合成分析の価値を劇的に低下させます。 もちろん、追加の側面を強調し、フォーラムからの投稿を分析することもできますが、これらはすべてユーザーにとって二次的な重要性があります。



しかし、逆問題を解決する必要があるとしましょう。 たとえば、あなたはレストランのオーナーであり、「インテリア」セクションに低い評価が表示されている理由を知りたいと思っています。 また、手動評価のあるサイトのソーステキストとの接続は、ほとんど失われています。 必要な情報を見つけるには、すべてのレビューを否定的な評価で完全に調べる必要があります。 そして、これらのレビューは、率直に言って、かなり長く、「昨日、私の友人が誕生日を迎えたように」たくさんの「水」を含んでいます。 私たちは集まって、どこへ行くかを長い間考えました。 通常は…」など。 重要なアスペクト用語を強調表示した後、テキスト内で強調表示したり、それらを含む文のみを表示したり、計算して次の要約を表示したりできます。



大音量の音楽-34

スモーク-8

エアコン-4

トイレで汚い-2



分析のための人件費を削減し、ビジネスの効率を高め、さらにレストランは訪問者のさまざまな問題やリクエストに対応できるようになります。 もちろん、すべてのレストランのオーナーがレビューを注意深く監視するわけではありませんが、これは別の問題です。



実装 :Meanotek NeuText APIを使用して実装するには、無料のAPIキーが必要です。まだお持ちでない場合は、 こちらから入手できます 。 前回同様、トレーニングサンプルが必要です。 SentiRuEval-2015の開発者が作成したトレーニングデータでは、明示的な用語(料理、食べ物、ウェイター、レストラン、テーブルなど)は暗黙的な用語(おいしい、うるさい、塩味のある)と区別されています。 既製のマークアップを使用するか、独自の表記法を考え出すことができます。



元のSentiRuEval -2015の選択は、XMLファイルとして公開されています。 このデータには前処理はありません(文、単語などへの内訳)。 そのため、APIで使用する目的の形式でデータを準備しました( ダウンロード )。 サンプルには、明示的なアスペクト用語(明示的)のみが含まれており、rest_expl_train.txt-モデルをトレーニングするためのデータとrest_expl_test.txt-結果をチェックするためのデータ(両方のファイルは元のトレーニングサンプルSentiRuEval-2015から作成されます)にも分割されています。



日本人 露骨な
料理 露骨な
だった
おいしい 暗黙的
ウェイター 露骨な
...




ここには微妙な点が1つあります。「ウェイター付き魚料理」のようなフレーズが見つかった場合、「ウェイター魚料理」は1つの用語として強調表示されますが、実際には2つの「ウェイター」と「魚料理」があります。 したがって、用語の最初と最後の単語には別々の表記法がよく使用されます-後で分離できるように。 しかし、これは常に正当とは限りません。 そのようなマージ用語の十分な数の例がない場合、モデルはまだ開始と終了を正しく設定する方法を学習しない可能性があり、クラスの数を増やすには、モデルの適切な品質を得るためにトレーニングサンプルを増やす必要があります。 したがって、両方のオプションを試して結果の品質を比較することは理にかなっていますが、時間がなければ、最初のオプションが非常に適しています。



製品名を抽出して、 前の例と同様にモデルを作成できます。 APIの操作を簡素化するには、.NET Frameworkのライブラリを使用できます

Model MyModel = new Model(" api ","RestExplModel"); MyModel.CreateModel(); Console.WriteLine("  "); MyModel.UploadTrainData("rest_expl_train.txt"); Console.WriteLine("  "); MyModel.UploadTestData ("rest_expl_dev.txt"); Console.WriteLine(" "); MyModel.TrainModel();
      
      







また、任意のファイルをダウンロードし、コードを記述せずに結果を確認できる実行可能ファイルの例も含まれています。



モデルのトレーニング後、テストサンプルの統計情報と、新しいサンプルの分析を要求します。

 Console.WriteLine(MyModel.GetValidationResults()); string p = model.GetPredictionsJson("    ,   ,     "); Console.WriteLine(p);
      
      







起こったことは次のとおりです。





特にこの記事では、データを入力して強調表示された用語を取得できるフォームの形式で、 phpオンラインデモを作成しました。



以前の 投稿でテキストから情報を抽出するためのAPIの詳細を読むことができます。作業の技術的な詳細は、コレクション「Computer Linguistics and Intelligent Technologies」(英語のテキスト)で公開された記事にあります。



All Articles