テキストの類似性の計算と検索

序文:

テキスト検索と類似度計算は、nlpのアプリケーションで非常に重要な役割を果たします。この記事では、質問と回答のマッチングを実装する簡単な方法、つまり、すべてのクエリでユーザーの入力クエリに一致する1つのアイテムを見つける方法を紹介します。この方法は、きめ細かいマッチングに適しています。

主なテクニック:

(1)キーワード分析:クエリ内の主要なキーワードを検索ソースとして抽出します。
(2)全文検索:mysql、ELsearchなど。リコールとして。
(3)リコールデータの類似度を計算して、最も一致するアイテムを見つけます。試合を完了します。

キーワード分析は別の記事に記録されます。これはマッチング方法の紹介です。
バッチ処理方法は、最小移動距離に従って計算されます。
(1)単語ベクトルを最初にトレーニングする必要があります。
(2)短い文を長い文の長さにパディングします。
(3)単語シーケンスをランダムに調整して、2つの文が最も類似するようにします(否定的な単語のペナルティに注意してください)。貪欲なマッチングも実行できるため、より効率的です。
効果は次のとおりです。

wd.sentence_distance(u"雪人 怎么 制作 呀".split(), u"怎么 堆 雪人 啊".split())

雪人 怎么 制作 呀
雪人 怎么 堆 啊
0.3479853431949209

wd.sentence_distance(u"中国 哪 座 山 最高".split(), u"中国 最高 的 山 是 哪里".split())
中国 最高 的 山 是 哪里
中国 最高 * 山 座 哪
0.17140382731208006

追記:
このメソッドは構文構造に影響されません。
シードデータベースの各セマンティクスは、セマンティックの明確性が高い検索に適した、可能な限り完全である必要があります。
検索時に単語の類似性を実行することはできません。

注:前の作業は整理されています。

おすすめ

転載: blog.csdn.net/cyinfi/article/details/88070288