Skip to content

検索クエリ拡張 単語類似度, クラスタリング,共起

Notifications You must be signed in to change notification settings

tkys/query_expansion

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 

Repository files navigation

query_expansion


類似語のクラスタリングによって、多様なクエリ拡張単語を得る

狙い

「ユーザの入力クエリ」 AND/OR 「追加クエリ」 で検索を行うケースにて、

ユーザー入力クエリに対して類似度が高いワードリストを追加クエリの候補とする。

類似度順に並べるのではなくそれ等の中でも比較して意味の多様性をとらえて生かしたい。

手法

類似単語をクラスタリングし、各クラスタから新候補の単語を選択することで、多様な意味の異なりをクエリに反映させる。


  • topk-clustering.py

1.word2vec学習済みのモデルから、入力クエリに対して類似単語をtop_k 数十件取得する

2.取得した単語をクラスタリングする。クラスタ数は決め打ち。

3.各クラスタから入力クエリ以外の単語を選択する

4.追加クエリをクラスタからの選択する. 方法は、ランダム、クラスタ中心、クエリから一番近い/遠い点 などが候補.

query_word = 'エネルギー' # クエリ単語
top_k = 30 # 取得する単語数
n_clusters = 5 # クラスタの数


>>>
Cluster 0: ['運動エネルギー', '中性子', '太陽エネルギー', '[運動エネルギー]', '[プラズマ]', '光エネルギー', '熱量', '[位置エネルギー]', '波動', '[熱エネルギー]', 'プラズマ', '[光子]', '輻射', '[潜熱]', '[反物質]', '電磁波', '[中性子線]']
Cluster 1: ['[エネルギー]', '[熱]', '熱']
Cluster 2: ['[中性子]', '粒子', '質量', '[電子]', '[電荷]', '物質']
Cluster 3: ['魔力', 'パワー']
Cluster 4: ['重力', '[重力]']

TODO

データセットでfine-tune

事前学習済みモデルではなく検索対象ドキュメントで学習させる

  • (予想)ドキュメントだけで学習させた場合、word2vecでではユーザーの入力クエリがそもそも未知語になる場合が多いのでは. 表記ブレある程度対応するfasttextの方がよい?
  • (予想)学習済みモデルにドキュメントを追加するfine-tune. 学習時間はかかりそう fasttextなら早いが

About

検索クエリ拡張 単語類似度, クラスタリング,共起

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages