slajdy do wykładu II - Filip Graliński / UAM
Transkrypt
slajdy do wykładu II - Filip Graliński / UAM
Filip Graliński Inteligentne systemy informacyjne Wyszukiwarki Filip Graliński Inteligentne systemy informacyjne Wyszukiwarki Struktura i znaczenie Information retrieval Wyszukiwarki Information extraction brak struktury struktura Information retrieval Wyszukiwarki Information extraction jak być szybkim? skąd trochę struktury? jak być relewantnym? brak struktury struktura Information retrieval Wyszukiwarki Information extraction z tekstu (wyrazy!) jak być szybkim? skąd trochę struktury? jak być relewantnym? brak struktury Information retrieval Wyszukiwarki Information extraction przetwarzanie dokumentu – od tekstu do termów wydobycie tekstu rozpoznanie języka i kodowania przetwarzanie dokumentu – od tekstu do termów wydobycie tekstu rozpoznanie języka i kodowania tokenizacja przetwarzanie dokumentu – od tekstu do termów wydobycie tekstu rozpoznanie języka i kodowania tokenizacja wykrywanie błędów literowych normalizacja termy lematyzacja tokenizacja Tokenizacja to podział na wyrazopodobne jednostki (tokeny) I trudności dla języka angielskiego: tokenizacja Tokenizacja to podział na wyrazopodobne jednostki (tokeny) I trudności dla języka angielskiego: I I łącznik apostrofy tokenizacja Tokenizacja to podział na wyrazopodobne jednostki (tokeny) I trudności dla języka angielskiego: I I I łącznik apostrofy daty, numery telefonów, adresy e-mailowe etc. tokenizacja Tokenizacja to podział na wyrazopodobne jednostki (tokeny) I trudności dla języka angielskiego: I I I I łącznik apostrofy daty, numery telefonów, adresy e-mailowe etc. tokeny typu C++, C#, Yahoo! tokenizacja Tokenizacja to podział na wyrazopodobne jednostki (tokeny) I trudności dla języka angielskiego: I I I I I łącznik apostrofy daty, numery telefonów, adresy e-mailowe etc. tokeny typu C++, C#, Yahoo! inne języki: I chiński – brak spacji tokenizacja Tokenizacja to podział na wyrazopodobne jednostki (tokeny) I trudności dla języka angielskiego: I I I I I łącznik apostrofy daty, numery telefonów, adresy e-mailowe etc. tokeny typu C++, C#, Yahoo! inne języki: I I chiński – brak spacji niemiecki – wyrazy złożone tokenizacja Tokenizacja to podział na wyrazopodobne jednostki (tokeny) I trudności dla języka angielskiego: I I I I I łącznik apostrofy daty, numery telefonów, adresy e-mailowe etc. tokeny typu C++, C#, Yahoo! inne języki: I I I chiński – brak spacji niemiecki – wyrazy złożone jęz. romańskie – zbitki typu l’ordinateur Normalizacja Czy powinny wyjść identyczne wyniki dla zapytań: Uwaga! Spójność! Zapytania powinny być normalizowane tak samo jak dokumenty Normalizacja Czy powinny wyjść identyczne wyniki dla zapytań: I łódź i Łódź ? lowercasing I koń i kon ? usuwanie diakrytyków Uwaga! Spójność! Zapytania powinny być normalizowane tak samo jak dokumenty Normalizacja Czy powinny wyjść identyczne wyniki dla zapytań: I łódź i Łódź ? lowercasing I koń i kon ? usuwanie diakrytyków I legenda i legendzie ? lematyzacja Uwaga! Spójność! Zapytania powinny być normalizowane tak samo jak dokumenty Normalizacja Czy powinny wyjść identyczne wyniki dla zapytań: I łódź i Łódź ? lowercasing I koń i kon ? usuwanie diakrytyków I legenda i legendzie ? lematyzacja I urządzić i urządzenie ? Uwaga! Spójność! Zapytania powinny być normalizowane tak samo jak dokumenty Normalizacja Czy powinny wyjść identyczne wyniki dla zapytań: I łódź i Łódź ? lowercasing I koń i kon ? usuwanie diakrytyków I legenda i legendzie ? lematyzacja I urządzić i urządzenie ? I legenda i legendowy ? rdzeniowanie Uwaga! Spójność! Zapytania powinny być normalizowane tak samo jak dokumenty Normalizacja Czy powinny wyjść identyczne wyniki dla zapytań: I łódź i Łódź ? lowercasing I koń i kon ? usuwanie diakrytyków I legenda i legendzie ? lematyzacja I urządzić i urządzenie ? I legenda i legendowy ? I bałwan i bałwanek ? rdzeniowanie Uwaga! Spójność! Zapytania powinny być normalizowane tak samo jak dokumenty indeks (odwrócony) z tekstu (wyrazy!) jak być szybkim? skąd trochę struktury? jak być relewantnym? brak struktury Information retrieval Wyszukiwarki Information extraction odwrócony indeks (inverted index) doc1 doc2 doc3 doc4 Ala ma kota. Podobno jest kot w butach. Ty chyba masz kota! But chyba zgubiłem. odwrócony indeks (inverted index) doc1 doc2 doc3 doc4 Ala ma kota. Podobno jest kot w butach. Ty chyba masz kota! But chyba zgubiłem. stop words: jest, w odwrócony indeks (inverted index) doc1 doc2 doc3 doc4 Ala ma kota. Podobno jest kot w butach. Ty chyba masz kota! But chyba zgubiłem. stop words: jest, w ala but chyba kot mieć podobno ty zgubić → → → → → → → → 1 2 3 1 ? 2 3 4 4 4 2 3 Lista wszystkich termów w kolekcji to słownik (vocabulary ): {ala, but, chyba, kot, mieć, podobno, ty, zgubić} indeks (odwrócony) zapytania boole’owskie z tekstu (wyrazy!) jak być szybkim? skąd trochę struktury? jak być relewantnym? brak struktury Information retrieval Wyszukiwarki Information extraction zapytania boole’owskie I pizzeria Poznań dowóz zapytania boole’owskie I pizzeria AND Poznań AND dowóz zapytania boole’owskie I pizzeria AND Poznań AND dowóz I (pizzeria OR pizza OR tratoria) AND Poznań AND dowóz zapytania boole’owskie I pizzeria AND Poznań AND dowóz I (pizzeria OR pizza OR tratoria) AND Poznań AND dowóz I pizzeria AND Poznań AND dowóz AND NOT golonka zapytania boole’owskie I pizzeria AND Poznań AND dowóz I (pizzeria OR pizza OR tratoria) AND Poznań AND dowóz I pizzeria AND Poznań AND dowóz AND NOT golonka Jak domyślnie interpretować zapytanie? I jako zapytanie AND – być może za mało dokumentów I rozwiązanie pośrednie? I jako zapytanie OR – być może za dużo dokumentów indeks (odwrócony) zapytania boole’owskie z tekstu (wyrazy!) miary wektorowe jak być szybkim? skąd trochę struktury? jak być relewantnym? brak struktury Information retrieval Wyszukiwarki Information extraction dokument jako wektor doc1 doc2 doc3 doc4 Ala ma kota. Podobno jest kot w butach. Ty chyba masz kota! But chyba zgubiłem. dokument jako wektor doc1 doc2 doc3 doc4 Ala ma kota. Podobno jest kot w butach. Ty chyba masz kota! But chyba zgubiłem. doc1 doc2 doc3 doc4 ala 1 0 0 0 but 0 1 0 1 chyba 0 0 1 1 kot 1 1 1 0 mieć 1 0 1 0 podobno 0 1 0 0 ty 0 0 1 0 zgubić 0 0 0 1 dokument jako wektor doc1 doc2 doc3 doc4 doc5 Ala ma kota. Podobno jest kot w butach. Ty chyba masz kota! But chyba zgubiłem. Kot ma kota. doc1 doc2 doc3 doc4 ala 1 0 0 0 but 0 1 0 1 chyba 0 0 1 1 kot 1 1 1 0 mieć 1 0 1 0 podobno 0 1 0 0 ty 0 0 1 0 zgubić 0 0 0 1 dokument jako wektor doc1 doc2 doc3 doc4 doc5 Ala ma kota. Podobno jest kot w butach. Ty chyba masz kota! But chyba zgubiłem. Kot ma kota. doc1 doc2 doc3 doc4 doc5 ala 1 0 0 0 0 but 0 1 0 1 0 chyba 0 0 1 1 0 kot 1 1 1 0 ? mieć 1 0 1 0 1 podobno 0 1 0 0 0 ty 0 0 1 0 0 zgubić 0 0 0 1 0 jak uwzględnić frekwencję wyrazu? tf t,d jak uwzględnić frekwencję wyrazu? tf t,d 1 + log(tf t,d ) jak uwzględnić frekwencję wyrazu? tf t,d 1 + log(tf t,d ) ( 1, 0, jeśli tf t,d > 0 w przeciwnym razie jak uwzględnić frekwencję wyrazu? tf t,d 1 + log(tf t,d ) ( 1, 0, jeśli tf t,d > 0 w przeciwnym razie 0.5 + 0.5 × tft,d maxt (tf t,d ) odwrotna częstość w dokumentach Czy wszystkie wyrazy są tak samo ważne? odwrotna częstość w dokumentach Czy wszystkie wyrazy są tak samo ważne? NIE. Wyrazy pojawiające się w wielu dokumentach są mniej ważne. odwrotna częstość w dokumentach Czy wszystkie wyrazy są tak samo ważne? NIE. Wyrazy pojawiające się w wielu dokumentach są mniej ważne. Aby to uwzględnić, przemnażamy frekwencję wyrazu przez odwrotną częstość w dokumentach (inverse document frequency ): idf t = log N df t , idf t – odwrotna częstość wyrazu t w dokumentach N – liczba dokumentów w kolekcji df f – w ilu dokumentach wystąpił wyraz t? odwrotna częstość w dokumentach (cd.) wyraz wystąpił. . . w 1 dokumencie idf t = . . . odwrotna częstość w dokumentach (cd.) wyraz wystąpił. . . w 1 dokumencie idf t = . . . = log N/1 = log N odwrotna częstość w dokumentach (cd.) wyraz wystąpił. . . w 1 dokumencie 2 razy w kolekcji idf t = . . . = log N/1 = log N = log N/2 lub log N odwrotna częstość w dokumentach (cd.) wyraz wystąpił. . . w 1 dokumencie 2 razy w kolekcji w połowie dokumentów idf t = . . . = log N/1 = log N = log N/2 lub log N = log N/(N/2) = log 2 odwrotna częstość w dokumentach (cd.) wyraz wystąpił. . . w 1 dokumencie 2 razy w kolekcji w połowie dokumentów we wszystkich dokumentach idf t = . . . = log N/1 = log N = log N/2 lub log N = log N/(N/2) = log 2 = log N/N = log 1 = 0 odwrotna częstość w dokumentach (cd.) wyraz wystąpił. . . w 1 dokumencie 2 razy w kolekcji w połowie dokumentów we wszystkich dokumentach idf t = . . . = log N/1 = log N = log N/2 lub log N = log N/(N/2) = log 2 = log N/N = log 1 = 0 Zamiast tf t,d będziemy w wektorach rozpatrywać wartości: tf-idf t,d = tf t,d × idf t odwrotna częstość w dokumentach (cd.) wyraz wystąpił. . . w 1 dokumencie 2 razy w kolekcji w połowie dokumentów we wszystkich dokumentach idf t = . . . = log N/1 = log N = log N/2 lub log N = log N/(N/2) = log 2 = log N/N = log 1 = 0 Zamiast tf t,d będziemy w wektorach rozpatrywać wartości: tf-idf t,d = tf t,d × idf t Overlap score measure: Score(q, d) = X t∈q tf-idf t,d