Elasticsearchを検索サーバーとして実験しており、私のタスクは「セマンティック」検索機能を構築することです。 「I have a burst pipe」のような短いテキストフレーズから、システムはユーザーが配管工を検索していることを推測し、elasticsearchでインデックス付けされたすべての配管工を返します。
Elasticsearchのような検索サーバーで直接行うことはできますか?マウイインデクサー。手元のタスク、テキスト分類の正確な用語は何ですか?ただし、指定されたテキストは検索フレーズであるため非常に短いものです。
実装の複雑さが異なるいくつかのアプローチがあります。
最も簡単な方法は、トピックのリストを作成することです(配管など)、添付する単語の袋(「パイプ」など)、キーワードの大部分で検索要求を識別し、指定したトピックのみで検索します(フィールドtopic
をエラスティック検索ドキュメントに追加し、検索中に+
で必須として設定できます) 。
もちろん、ドキュメントがたくさんある場合は、トピックリストと単語の袋を手動で作成するのは非常に時間がかかります。 機械学習を使用して、タスクの一部を自動化できます。基本的に、トピックを自動的に検出するには、単語やドキュメント間の距離を測定するだけで十分です(たとえばdata clustering)およびclassifyこれらのトピックの1つへのクエリ。これらの手法を組み合わせることも適切です(たとえば、トピックを手動で作成し、初期ドキュメントをそれらに割り当てることができますが、クエリの割り当てには分類を使用できます)。 潜在セマンティック分析 に関するWikipediaの記事をご覧ください。 データクラスタリング および ドキュメント分類 に関する2つのリンクされた記事にも注意してください。そして、はい、 マウイインデクサー はこの方法で良いヘルパーツールになるかもしれません。
最後に、フレーズの意味を「理解」し(用語の頻度を使用するだけでなく)、適切なトピックを検索するエンジンを構築することができます。ほとんどの場合、これには自然言語処理およびオントロジーベースの知識ベースが含まれます。しかし、実際には、この分野はまだ活発な研究が行われており、以前の経験がなければ、このようなものを実装することは非常に困難です。
https://blog.conceptnet.io/2016/11/03/conceptnet-5-5-and-conceptnet-io/ を探索することもできます。
semantic networks
およびdistributional semantics
。
ほとんどの開発者がWordの埋め込みを必要とする場合、最初に、そしておそらく唯一見える場所はWord2vecです。これは、分布セマンティクスからWordの埋め込みを計算するGoogleのニューラルネットアルゴリズムです。つまり、文中の単語を周囲の他の単語から予測することを学習し、埋め込みは最良の予測を行う単語の表現です。しかし、数テラバイトのテキストの後でも、分布のセマンティクスだけから学習することはできないWordの意味の側面があります。
いくつかの結果
ConceptNet 5.5に組み込まれたConceptNet Numberbatch Word埋め込みは、これらのSATアナロジーを以前のどのシステムよりもよく解決します。質問の56.4%が正解です。最も類似した以前のシステムであるTurneyのSuperSim(2013)は54.8%を獲得しました。また、SATの類推で「人間レベル」のパフォーマンスにさらに近づいています。特に賢い人間はもちろん、より多くの質問を正しく受けることができますが、平均的な大学志願者は57.0%を獲得します。
セマンティック検索は、基本的に意味のある検索です。 ElasticsearchはデフォルトでJSONシリアル化を使用します。JSONに意味のある検索を適用するには、JSON-LDを介したEdge関係をサポートするためにJSONを拡張する必要があります。その後、JSON-LDスキーマに対するセマンティック分析をWordの曖昧さ回避配管エンティティに適用し、パイプコンテキストをサブジェクト、述語、オブジェクトの関係としてバーストできます。 Elasticsearchのセマンティック検索サポートは非常に弱いですが、ファセット検索と単語の袋を使用して回避できます。配管用語のシソーラススキーマにインデックスを付けてから、文のテキストフレーズに対してセマンティックマッチングを行うことができます。