他の人の意見の分析に関するいくつかの考え

理想的には、検索結果(SERP)のすべてのサイトは、情報検索のプロセスが行われるターゲットオーディエンスの特定のニーズに対する応答です。 インターネットにより、情報をすばやく簡単に検索できるだけでなく、ブログ、書籍(電子版)を書いたり、ソーシャルネットワークやフォーラムにコメントを残したり、投票に投票したりするさまざまな人々の意見を非常に簡単に分析できます。



今日の世界では、膨大な数の人々が検索エンジンを使用して、私生活の問題を含むさまざまな問題を解決しています。 他の人々の経験と専門家の知識を考慮することは、一般的な間違いを避けるだけでなく、戦術と戦略の正しい選択の可能性を大幅に高めるので、これは非常に論理的です。 残念ながら、このプロセスを自動化することは困難ですが、これはデータの収集と処理のプロセスを部分的に自動化できないことを意味するものではありません。 このメモは初心者レベル向けに設計されています。 このプロセスを部分的に自動化するために、情報分析の効率を高めたい人に役立ちます。



人々の意見の評価



まず、例を挙げましょう。 若い男が次のキーフレーズで検索エンジンを苦しめていると想像してください。 実際、彼は自分の信念を批判的に評価するために応用心理学の十分な知識を持っていません。 そのような人は、問題の原因を理解して必要な経験(恐怖や不安を引き起こす)を得る代わりに、症状を隠す方法を探しています。 自信は、重要な分野での結果の達成と、他の人々によるこれらの結果の認識に基づいています。 比fig的な例:初心者の車の運転手は、自信を育てるトレーニングに行く必要はありませんが、運転することを(理論と実践を勉強することによって)学ぶ必要があります。 そして、この集合的なイメージが女の子との通常の関係を確立するのを妨げるものは何ですか? 誤った信念(彼は問題の原因を正しく特定したと考えている)およびそれらを批判的に評価することができない。 おそらく彼は、実際の問題を見ることなく、自分の意見を確認するために検索エンジンを探しています。



意見をいくつかの信念のセットとして考えることが重要です。 最も興味深いのは、人は有名な科学者の視点を批判できることです(多くの実験で検証され、本で詳細に説明されています)が、最も素朴な個人的な信念(私の祖母が子供の頃に語った)を簡単に信じることができます。 問題は、人が自分の標準と比較して情報を評価することです(多くの場合、批判的に受け入れられません)。 したがって、あなたの意見を評価するためには、権威ある情報源の意見を学び、意識的に考慮する必要があります。 意識的に意見が形成された場合、すなわち 人が高等教育を受け、優れた実務経験を持ち、膨大な数の質の高い本を読み、他の専門家とコミュニケーションをとる場合、そのトピックに関する信念が正しい可能性を最大限に高めます。 ただし、すべての分野の専門家になることはできませんが、検索エンジンをより効率的に使用する方法を学ぶことができます。



どこから始めますか? 検索エンジンでクエリを正しく記述することではなく、結果を分析することです。 これが重要な問題である場合は、最も重要な考えを書き留めてください。 これを行うために、マイクロブログ形式のメモを含む電子サマリーを作成しようとします。これは、個人使用専用であるため、ローカルコンピューターに配置されます。 当然、このような補助ツールを実装するには多くの方法がありますが、可能なオプションのほんの一部を検討します。 Laravelフレームワークを試すことができます。これにより、非常に簡単かつ迅速に問題を解決できます。



モデルは次のようになります。

class Report extends Eloquent { protected $table = 'report'; }
      
      





また、コントローラーはもう複雑ではありません。

 class ReportController extends BaseController { public function index() { return View::make('report', ['report' => Report::paginate(5)]); } }
      
      





はい、Laravelはページネーションをとても簡単にします。 そして、ここにビューがあります:

 @extends('main') @section('content') @forelse($report as $v) <h3>{{ $v->author }}</h3> <p>{{ $v->opinion }}</p> <p><em>{{ $v->url }}</em></p> @empty <p> </p> @endforelse {{ $report->links() }} {{ dd(DB::getQueryLog()) }} @stop
      
      





提案されたテーブル構造(列:id、著者の名前、彼の意見、ソースへのリンク、日付)は、統計分析に非常に便利だと思いますか? このような形式は、数値を含むテーブルが望ましい統計を扱うには非常に不便だと思います。 このタスクに適したテーブルの構造を開発してみましょう。 調査した意見には、異なる程度の信頼性(ソースの権限)、評価(著者が調査した意見を共有または反論し、0から10の評価を与えることができます)、ソースのタイプ(フォーラムでのメッセージ、ブログ投稿、ソーシャルネットワークに関するコメント、公式文書)があります。 さらに、データベースへのソースへのリンクと短いコメント(可能な限り簡潔なエッセンス)を保存しておくと便利です。 テキストのコピーを書くことは可能ですが、これはあなたの裁量です。 さまざまなオブジェクトに関する意見を1つのテーブルに記録できるため、(意見が収集される)オブジェクトの識別子を追加します。 したがって、さまざまなレポートを作成する方が便利なデータを含むテーブルが作成されます。



テーブルの構造は次のとおりです。

 CREATE TABLE IF NOT EXISTS `opinions` ( `id` int(11) NOT NULL AUTO_INCREMENT, `url` varchar(255) NOT NULL, `description` varchar(255) NOT NULL, `type` int(11) NOT NULL, `credibility` int(11) NOT NULL, `object` int(11) NOT NULL, `rate` double NOT NULL, `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
      
      





意見を収集できる事実の推定に興味があるとします(データ型が2倍なので、あらゆる種類のグラデーションを実行できます)。 ただし、すべての人々の意見の評価ではなく、特定のレベルの信頼性(ソースの信頼性レベルの概算評価)を知っている必要があります。 このテーブル構造により、次のクエリを実行できます。

 SELECT COUNT(`rate`) AS 'count', MIN(`rate`) AS 'min', MAX(`rate`) AS 'max', SUM(`rate`) AS 'sum', AVG(`rate`) AS 'avg', STDDEV_POP(`rate`) AS 'stddev_pop', VARIANCE(`rate`) AS 'variance' FROM `opinions` WHERE `object` = 1 AND `credibility` IN (2,3);
      
      





このメモから統計を処理し、CRUDを実装するためのソースコードの例を削除することにしました。それ以外の場合は、Laravelの話に似ています。 友人、特定の実装は重要ではないことを理解してください。他のフレームワーク、たとえば「誕生から」自動モデル生成とCRUDがあるYii 2.0ではさらに悪化する可能性があるためです。 さらに、Bootstrapがすでに存在しているため、既製のスタイルを使用してレポートを簡単にすばやくフォーマットできます。 ChartJSまたはjqPlotをテンプレートに追加すると、非常に簡単に美しいグラフを作成できます。 統計を操作するためのコードの実装に関する私の意見を見ることに突然興味を持った場合は、PHPとJavaの実装のGitHubの例(これは私の意見であり、最高ではありません)に投稿しました。



記述統計



(MySQLデータベースへの)前のクエリでは、記述統計(最大、最小、平均、合計、分散、標準偏差)を使用しました。 これは、さまざまな分析システムで非常に一般的に使用されているアプローチです。 たとえば、Yandex.Metrica、Google Analytics、およびPiwikシステムでは、一般的な指標(トラフィック、直帰率、サイトでの平均時間、セッションあたりの平均ページビュー数、繰り返しアクセスの割合など)およびサイト固有の指標(設定された目標とイベント)。 一部のエンタープライズシステムは、APIを使用して、記載されているシステムからデータをロードします。 非常に多くの場合、すべてのデータが必要というわけではありませんが、たとえば、(一定期間にわたって)目的を達成することを示すインジケーターを備えた非常に大きなテーブルではなく、前処理された結果のみが送信され、平均(日単位)値、最大値、および最小値のみが送信されます。



同様に、人生のあらゆる分野で。 目標を達成するための正確な指標の形で、あなたにとって重要なすべてのものを評価しようとする必要があります。 人が知識を実践し、専門家だけでなく全体の状況からフィードバックを受け取ることは非常に重要です。 各目標の達成率を(特定の数値で)正確に評価しようとすると、状況を非常によく理解し、批判的に評価するのに役立ちます。 それは非常にありふれたものであり、誰もが知っていますが、練習を始めてください。 試してみてください、しかし意識的に。



これらの目的のために、Excelを使用するか、Hibernateを使用してデータベースにクエリを書き込むことができます(SolrJを使用する場合もあります)が、Apache Commons Mathematics Libraryを使用するJavaトレーニングプロジェクトの作成を試みます。 IDEを使用して、次のプロパティに基づいてDescriptiveStatisticsInfo POJOクラスを自動的に生成しました。

 private Double variance; private Double standardDeviation; private Double summ; private Double max; private Double min; private Double mean; private Long count;
      
      





単一のメソッドでインターフェースを作成しました:

 package kalinin.example.report; import java.util.List; import kalinin.example.help.statistics.DescriptiveStatisticsInfo; public interface IReport { DescriptiveStatisticsInfo statInfo(List<Double> in); }
      
      





ファクトリの場合、次のように列挙されている限り列挙が必要です。

 package kalinin.example.report; public enum EReport { DESCRIPTIVE }
      
      





工場自体は次のようになりました。

 package kalinin.example.report; public class ReportFactory { public IReport getReport(EReport reportType) { switch (reportType) { case DESCRIPTIVE: return new DescriptiveStatisticsReport(); default: return null; } } }
      
      





私は無料で世界中で人気のあるApache Commons Mathematics Libraryを使用しています。

 package kalinin.example.report; import java.util.List; import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics; import kalinin.example.help.statistics.DescriptiveStatisticsInfo; public class DescriptiveStatisticsReport implements IReport { private DescriptiveStatistics stats = new DescriptiveStatistics(); public DescriptiveStatisticsInfo statInfo(List<Double> in) { this.stats.clear(); for (Double iStatistics : in) { this.stats.addValue(iStatistics); } DescriptiveStatisticsInfo stat = new DescriptiveStatisticsInfo( this.stats.getVariance(), this.stats.getStandardDeviation(), this.stats.getSum(), this.stats.getMax(), this.stats.getMin(), this.stats.getMean(), this.stats.getN() ); return stat; } }
      
      





実際、意思決定に最も関連性の高いデータのみを選択しました。 多数のサイトからすべての統計データをアンロードする場合、アナリストはこれをすべて読むのに十分な時間がないことに同意します。 そして、記述統計は、決定に基づいて要約表を作成するのに役立ちます。 特定の番号を含む巨大なArrayList全体を知る必要はありません(Javaはそこにオブジェクトを格納しませんが、それらへのリンク)。したがって、すべてのデータを書き留めるわけではありません(非常に多くなる可能性があります)この有限セットの必要な記述をシステムに入力します。 これはサイトだけですか? 正しい操作を確認するために、単純なクラスを使用して結果をファイルに書き込みました。

 package kalinin.example.run; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.commons.io.FileUtils; import org.apache.log4j.Logger; import kalinin.example.help.statistics.DescriptiveStatisticsInfo; import kalinin.example.report.EReport; import kalinin.example.report.ReportFactory; public class Run { final static Logger logger = Logger.getLogger(Run.class); public static void main(String[] args) { List<Double> data = new ArrayList<Double>(); data.add(12.0); data.add(8.4); data.add(6.1); data.add(3.5); data.add(9.154); DescriptiveStatisticsInfo result = new ReportFactory().getReport(EReport.DESCRIPTIVE).statInfo(data); try { FileUtils.writeStringToFile(new File(Config.getConf("Config.fileName")), result.toString(), "UTF-8"); } catch (IOException e) { logger.error(e); } } }
      
      





発見的意見分析アルゴリズムもあります。 一見したところ、すべてが単純です。兆候とその信頼度があり、これらは経験的に決定されました。 しかし、最も難しいことは、これらの兆候とその重量を特定することです。 データを収集した後、一致する各属性の「信頼度」を要約します。 この場合、信頼性を評価するために経験的に特定されたスケールが必要です。 理解できるように、1つのオブジェクトには任意の数(整数、ゼロより大きい)の属性を設定できます。 その結果、有限セット(配列)を取得します。その各要素は、検証中に一致した属性の重みです。 この有限集合のすべての要素の合計が経験的に決定された数よりも大きい場合、発見的アルゴリズムは正の応答を返します。 ただし、兆候、その重量、および検出方法を非常に正確に知る必要があるため、ヒューリスティックの適用は非常に困難です。



別のありふれた非常に単純な事実:人間の脳は、情報だけでなく、抽象または表の形でそれを体系化しようとするように配置されています。 次に、この表で各重要な意見の確認と反論を見つける必要があります。 人はあまり平凡なものを見ないかもしれないことを理解し、特定の数で意識的に分析すると、多くの重要なことに注意を払うようになります。 もちろん、人は一生を通じて絶えず進化しており、明日はすでに完全に異なる意見を持っているかもしれません。 このメモでさえ、開発の各段階で異なって知覚されます。 すべてに自信を持ち、生活のあらゆる分野で重要な問題に関する質の高い情報を探すのをやめることは非常に危険です。 主なことは、1週間で素晴らしいボディービルダーになることを望んでいない、小さなステップで練習を開始することです(トレーニングは軽い重量で始まるため)。 また、少なくとも基本的なプログラミングスキルがあり、データベースを操作している場合、上記の情報の分析は有用であるだけでなく、魅力的です。



All Articles