2012-01-07 11 views
41

私は検索サーバーとしてelasticsearchを試しています。私の仕事は "セマンティック"検索機能を構築することです。 「私はバーストパイプを持っている」のような短いテキストフレーズから、システムは、ユーザが配管工を探していて、elasticsearchで索引付けされたすべての配管工を返すと推論する必要があります。NLPとelasticsearchによるセマンティック検索

これはelasticsearchのような検索サーバーで直接行うことができますか、たとえばNLPツールを使用する必要がありますか。マウイインデクサー。私の仕事、テキスト分類の正確な用語は何ですか?指定されたテキストは検索フレーズであるため非常に短いですが。

答えて

57

実装の複雑さが異なる複数のアプローチがあります。

最も簡単な1が(配管など)話題のリストを作成することである、(「パイプ」のような)言葉袋を添付し、キーワードの過半数による検索要求を識別し、指定されたトピックだけを検索(あなたが追加することができますフィールドtopicを弾力検索ドキュメントに追加し、検索時に+と必須として設定します)。

もちろん、たくさんの文書がある場合は、トピックリストと単語の袋を手動で作成するのは非常に時間がかかります。いくつかのタスクを自動化するには機械学習を使用できます。基本的には、話題を自動的に発見するために単語や文書間の距離を測るだけで十分です(例えば、データクラスタリング)。をこれらのトピックの1つに分類します。これらの手法を混在させることもできます(たとえば、トピックを手動で作成して初期文書を割り当てることはできますが、クエリの割り当てには分類を使用できます)。アイデアをよりよく理解するために、latent semantic analysisに関するWikipediaの記事を見てください。 data clusteringdocument classificationの2つのリンクされた記事にも注意してください。そしてはい、Maui Indexerはこのようにヘルパーツールになるかもしれません。

最後に、単語の頻度を使用するだけでなく、フレーズの意味を「理解」して適切なトピックを検索するエンジンを構築しようとすることができます。おそらく、これは、自然言語処理およびオントロジーベースの知識ベースを含むでしょう。しかし、実際には、この分野はまだ活発な研究であり、以前の経験がなければ、このようなものを実装することは非常に難しいでしょう。

2

https://blog.conceptnet.io/2016/11/03/conceptnet-5-5-and-conceptnet-io/をお探しですか?

semantic networksdistributional semanticsを組み合わせています。

ほとんどの開発者はワード埋め込みが必要な場合、彼らは見て、おそらく最初で唯一の場所は、分布の意味から単語の埋め込みを計算Googleからのニューラルネットのアルゴリズムword2vecです。つまり、それは彼らの周り言い換えれからの文章内の単語を予測する学習し、埋め込みは最高の予測を行う言葉の表現です。しかし、テラバイトのテキストの後でさえ、単語の意味の側面は、あなただけでは分配の意味論だけでは学ばないでしょう。

結果の一部が

ConceptNet 5.5に組み込まれてConceptNet Numberbatchワード埋め込み、以前のシステムよりも優れたこれらのSATのアナロジーを解決します。それは正しい質問の56.4%を取得します。最高の匹敵する以前のシステム、TurneyのSuperSim(2013年)は54.8%でした。SATのアナリティクスでは「人間レベル」のパフォーマンスに近づいています。特にスマートな人間はもちろん、より多くの質問を正しく得ることができますが、平均的な大学の応募者は57.0%になります。

関連する問題