Upgrade to Pro — share decks privately, control downloads, hide ads and more …

名古屋検索勉強会#2

 名古屋検索勉強会#2

2019/4/10に名古屋で行われた名古屋検索勉強会#2(https://search-nagoya.connpass.com/event/126660/)での発表資料です

検索技術の基礎(原著名:Introduction to Information Retrieval)、第2章 用語語彙とポスティングリスト、を解説しています。

INOUE Takahiro

April 10, 2019
Tweet

More Decks by INOUE Takahiro

Other Decks in Technology

Transcript

  1. トークン化 • Input: “Friends, Romans, Countrymen, lend me your ears;”

    
 これは簡単。
 
 Output: Friends | Romans | Countrymen | lend | me | your | ears • Input: “Mr. O’Neil thinks that…” 
 この場合は悩ましい。
 
 Output:
 nail?、onaill?、o’neill?、o’とneill? 、oとnaill? • Input: “aren’t”の場合は?
 
 Output: aren’t?、arent?、areとn’t?、arenとt?
  2. トークン化 2 • “M*A*S*H”は、”M*A*S*H”として認識したい。
 (https://www.amazon.com/Season-One-Collectors-Alan-Alda/dp/ B00005QVVC) • “C++”や“C#”が、”C”として認識されるのは、その、なんだ、困る。 • 空⽩白やハイフンで区切るのが楽だが、例例外も多い。


    “San Francisco”が、”San”と”Francisco”になる • 複数種類類を検索⽤用トークンとして扱えるようにしてしまおう。
 “over-eager”って⼊入⼒力力されたら、”over-eager”と”over eager”と”overeager” の3種類類のインデックスで検索すれば対処できるだろう。
 →”overeager”って検索されたらどうしようか? 分割位置を考えるのは⾄至 難。
  3. トークン化 3 • ドイツ語はやばい • 複合名詞(熟語みたい?)は空⽩白なしで書く
 計算computer + ⾔言語学linguistik =

    computerlinguistik • 中国語はやばい • 単語間に空⽩白がないので、英語と同じ⽅方法での分離ができな い。 • 中国語の1字は英語の1単語ぐらいの意味があるので、⽂文字列列に 区切らなくてもいいんじゃないの? という⽴立場もある。
  4. ストップワード • あんまり意味のない、頻出する単語は検索対象から取り除いてし まおう。 • a, an, and, by, for,

    the, that, was 等 • 取り除いて問題ないことが⼤大半だが、フレーズだとたまに問題に なる。 • “As we may think”という論⽂文などは”think”だけになってしまうの で、検索できなくなる。
  5. 正規化 • 等価な単語のクラスを作る • anti-discriminatoryから”-“を抜いてantidiscriminatoryにする • 同義語の表を作る • carとautomobieなど 


    1. 複数の要素のクエリー表を維持する?
 2.インデックスを2つつける。
 (carが出てきたら、”car”と”automobile”にインデックスする) • どちらの⽅方法もより多くのストレージと処理理時間がかかる
 →最近のストレージ等のコストから考えると、悪くない選択
  6. ステミングとレンマで単語を原型 に戻そう • ステミング :いらない末尾を切り落とす
 dogs(複数形)→dog(単数系) • Porterのアルゴリズムが、
 ステミングとしては良い。 • レンマ :変形


    saw(動詞過去形)→see(動詞現在形) ルール 例例 xxxsses → xxxss caresses → caress xxxies → xxxi ponies → poni xxxss → xxxss caress → caress xxxs → xxx cats → cat • Porterのアルゴリズム
  7. スキップポインター • スキップリスト
 検索結果に出てこない項⽬目を⾶飛ばせるようにする。
 逆インデックスのリストを線形で探索するより早い。 • “Brutus” and “Caesar”で検索 •

    Caesar = 41と⼤大きい状態なので、
 Brutus 16→28とスキップで遷移しても⼤大丈 夫。 • しかし残念ながら、AND検索にしか使⽤用できない。
  8. フレーズクエリー • 複合語の検索(フレーズクエリー)では、””で囲うことで実現する。
 
 (ex) ”stanford university”
 The inventor Stanford

    Ovshinsky never went to university. のよう な⽂文章を検索してしまうことを、””を使うことで防ぐ。 • 個⼈人名など、“”を使わないけど、フレーズクエリーなこともあ る。
  9. 2語インデックス • 連続する2単語は全てフレーズクエリーとして扱う。
 (ex) “Friends, Romans, Countrymen”という⽂文があったら、
 “friend roman”と”roman countrymen”という2つのフレーズクエリーと

    して扱う。 • 4単語をフレーズクエリーとして扱いたい場合は、複数のフレーズクエ リーのANDをとる
 (ex) “stanford university” and “university palo” and “palo alto” • 冠詞(a, the)や、前置詞(of, to)が⼊入っている場合は、それらを1語とカウ ントしないで、連続する2単語を取得する。
 つまり “renegotiation of the constitution”で、2語インデックスとする。
 (拡張2語インデックス)