Slide 1

Slide 1 text

全文検索 完全に理解した n-gram?転置インデックス? はいはい、知ってる知ってる @segavvy 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 1

Slide 2

Slide 2 text

このお話のゴール 全文検索 の仕組みが なんとなくわかる …… よろしければ 自然言語処理 にも興味をもっていただく 3章に分けて お話します 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 2

Slide 3

Slide 3 text

第1章 全文検索とは そもそも「全文」ってなんだ? 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 3

Slide 4

Slide 4 text

全文とは? ぜん ぶん 【全文】 文章の始めから終わりまで(三省堂 大辞林 第三版) 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 4 全文検索とは? 文章の始めから終わりまでを 検索すること フルテキスト検索、full-text search

Slide 5

Slide 5 text

文章の検索は普通にできる • アプリの検索機能 テキストエディタ、Microsoft Office、統合開発環境、etc. • コマンド Linux の grep 、Windows の find 、etc. • プログラミング言語 str.indexOf()、str.Contains()、strstr() 、etc. • データベース SELECT * FROM user WHERE bio LIKE “%GAFA勤務%"; 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 5

Slide 6

Slide 6 text

ただし データが大量にあると苦しい 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 6 • PCの中やファイルサーバーのファイルを検索しても なかなか結果が返ってこない • プログラムで 巨大なログファイルを検索したいけど 検索以前に 読み込みが遅くて困る • SQLのLikeで 中間一致検索すると インデックスを作ってても遅い

Slide 7

Slide 7 text

全文検索が速いサービスもたくさんある Google、Yahoo!、Bing などのネット検索 Twitter の検索 Dropbox、Evernote、box などの検索 etc. 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 7 「全文検索 専用の仕組み」が動いている! 第2章へつづく

Slide 8

Slide 8 text

(休憩)自己紹介 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 8 @segavvy IT企業で企画・マーケを担当している元エンジニア C|C#|VBA|Python|全文検索|自然言語処理|機械学習| 企画|マーケ|ドラクエ好き|嫁さんはディズニー教| 写真は丸まってたペンギン セガビ

Slide 9

Slide 9 text

第2章 全文検索の仕組み 大量のテキストデータを 高速に検索する仕組み 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 9

Slide 10

Slide 10 text

百科事典の索引 索引 【あ】 あご 3巻 13 足 4巻 239 頭 2巻 192 【い】 胃 2巻 28 【う】 腕 4巻 32 うなじ 2巻 129 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 10 百科事典は 索引を見れば 目的の巻とページが すぐわかる 「足」については 4巻の239ページ! 全文検索するための索引を あらかじめ作っておく!

Slide 11

Slide 11 text

ネット検索の例 言葉 言葉の出現場所 完全 ページA(5、15文字目) ページF(... 理解 ページA(8、18文字目) ページG(… する ページA(3、20文字目) ページB(… 人達 ページA(12文字目) ページD(… 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 11 索引 データ インターネット サイトのデータ 全文検索プログラム 検索の利用者 各サイトから データを収集 索引に載せる 言葉の抽出 “理解”で ネットを検索 ページAとGが 見つかりました! 索引データのイメージ 事前の索引作成の流れ 検索時の流れ

Slide 12

Slide 12 text

索引に載せる言葉は どう選ぶのか? 索引にない言葉では 検索できない 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 12 どんな条件でも検索できるように 索引を作る必要がある 代表的な 2つの方法を ご紹介 ○ ”理解” は検索できる × “Talk” は索引にないので 検索できない 言葉 単語の出現場所 完全 サイトA(5、15文字目) サイトF(... 理解 サイトA(8、18文字目) サイトG(… する サイトA(3、20文字目) サイトB(… 人達 サイトA(12文字目) サイトD(…

Slide 13

Slide 13 text

索引の作成時 1.用語辞書(品詞や原形)を使い分解 2.助詞などの不要なものを除去 3.変化しているものを 原形へ戻す 索引の抽出方法 ①日本語解析 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 13 完全に理解した人達 完全 理解 する 人達 検索時 検索条件の文字に対して 同様の処理を実施してから 索引を調べる 索引を見て これらが すべてあるものを探す 完全 に 理解 し た 人達 完全 理解 し 人達 完全に理解 完全 理解

Slide 14

Slide 14 text

完全に理解した人達 完全に理解した人達 完全に理解した人達 完全に理解した人達 完全に理解した人達 完全に理解した人達 完全に理解した人達 完全に理解した人達 索引の抽出方法 ②単純に切り刻む 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 14 完全に理解した人達 検索時 検索条件の文字に対して 同じ文字数で切り出す 最後の半端は前の文字で 文字数を合わせる※ 索引を見て これらが すべてあるものを探す 索引の作成時 1文字ずつ ずらしながら 固定の文字数で 切り出していく 完全に理解 完全 に理 理解 ※ 切り出し 文字数が2の場合

Slide 15

Slide 15 text

②単純に切り刻む:言葉の途中が該当 東京都府中市 は 東京 京都 都府 府中 中市 に分解 “京都” や “中市” で検索されてしまう 索引抽出の課題 ①日本語解析:解析ミス Honda Cars 東京都 は Honda Cars 東京 都 に分解 “京都” で検索できない “東京” で検索されてしまう 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 15 解析部分を調整したり 後処理で不要なものを除いたり 両方の方式を組み合わせたり etc. 正しくは ひがしきょうと Honda Cars 東京都

Slide 16

Slide 16 text

表記のゆれに対応する仕組み 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 16 ゆれを統一する表や 同義語辞書などを用意して処理 1 全半角 ABC = ABC アイウ = アイウ 2 大小文字 ABC = abc ABC = abc 3 ひらがな・カタカナ りんご = リンゴ みかん = ミカン 4 数字 123 = 一二三 = 百二十三 = ⅠⅡⅢ 5 異体字・新旧字体 高 = 髙 斉 = 齊 辺 = 邊 6 送り仮名 引っ越し = 引越し = 引越 7 同義語 アメリカ = 米国 = 合衆国 = USA 8 記号 ー = ー = - = - = ― = ‐

Slide 17

Slide 17 text

第2章のまとめ 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 17 全文検索の仕組み 専門用語 1 事前に索引を作ること・その索引 インデキシング・インデックス 2 索引データ(言葉と出現位置の対応表) 転置インデックス、転置ファイル 3 索引作成のために 対象のデータを集めること クローリング、クロールする 4 日本語の解析処理により 言葉を切り出すこと 形態素解析、分かち書き 5 検索で不要な 助詞などの言葉を 索引から除くこと ストップワードの除去 6 文章を一定の文字数で単純に切り刻む方式 n-gram(エヌ・グラム) 7 文章の分割ミスなどにより 検索に該当しないこと 検索もれ 8 文章の分割ミスなどにより 間違って該当したデータ 検索ノイズ 9 表記ゆれを統一したり 辞書を使って対応する処理 単語の正規化、辞書展開

Slide 18

Slide 18 text

(休憩)全文検索アプリのご紹介 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 18 某弊社で Windows PC 内の ファイルを全文検索するアプリを 無償配布中 全文検索に ご興味がありましたら ぜひお試しください! https://www.info-brdg.co.jp/savvy/desktop-search/index.html デスクトップ検索SAVVY

Slide 19

Slide 19 text

第3章 ヒトはなぜ全文検索するのか 全文検索の先にあるもの 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 19

Slide 20

Slide 20 text

実は 全文検索したかった訳ではない 役立つ情報が 欲しい! 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 20 そのために 全文検索する いかに 条件に合う結果を 返せるか いかに 役に立つ情報を 返せるか 昔 今

Slide 21

Slide 21 text

全文検索で 役立つ情報を返す工夫 1. カテゴライズ・自動分類 見つけやすいように 情報を自動で分類する 2. スコアリング・ランキング 検索結果の中で 役立ちそうな情報を 優先して返す 3. レコメンド 検索結果に限らず 役立ちそうな情報を返す etc. 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 21

Slide 22

Slide 22 text

情報だけでは 満足しなくなってきた 見つかった情報の 分析もして欲しい 情報を解釈して 判断までして欲しい 質問するから 答えを教えて欲しい 持っている情報から 役立つ何かを取り出して etc. 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 22 狙いはその先!

Slide 23

Slide 23 text

これからは 検索対象の理解が必要 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 23 全文検索の対象である 自然言語(人が使う言葉) は 複雑すぎて コンピューターでは 処理しにくかった AI(機械学習・ディープラーニング)の進歩で 高度な 自然言語処理 の実用化が進んでいます 文章の理解、要約、翻訳、対話、作文、etc.

Slide 24

Slide 24 text

第3章のまとめ ヒトは 全文検索 よりも その先の 答え を求め始めています もし 全文検索 を勉強してみようかなと 思われた方が いらっしゃいましたら 「自然言語処理」から始めることをお勧めします 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 24

Slide 25

Slide 25 text

おわりに 全文検索 の仕組みが なんとなくわかる そして 自然言語処理 にも興味をもっていただく これがゴールでした このお話が 全文検索 や 自然言語処理 に 興味を持っていただく きっかけになれば幸いです ありがとうございました 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 25

Slide 26

Slide 26 text

参考文献・参考サイト • 全文検索 - フリー百科事典『ウィキペディア(Wikipedia)』(最終閲覧日:2020/6/20) https://ja.wikipedia.org/wiki/%E5%85%A8%E6%96%87%E6%A4%9C%E7%B4%A2 • 転置インデックス - フリー百科事典『ウィキペディア(Wikipedia)』(最終閲覧日:2020/6/20) https://ja.wikipedia.org/wiki/%E8%BB%A2%E7%BD%AE%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83 %E3%82%AF%E3%82%B9 • 自然言語処理 - フリー百科事典『ウィキペディア(Wikipedia)』(最終閲覧日:2020/6/20) https://ja.wikipedia.org/wiki/%E8%87%AA%E7%84%B6%E8%A8%80%E8%AA%9E%E5%87%A6%E7%90%86 • かわいいフリー素材集『いらすとや』 https://www.irasutoya.com/ 2020 segavvy 2020/6/25 完全に理解した人達の完全に理解したTalk #6 26