Автоматическая обработка текста

30
Автоматическая Автоматическая обработка текста обработка текста Представление Представление текстового массива текстового массива

Upload: gratia

Post on 06-Jan-2016

85 views

Category:

Documents


0 download

DESCRIPTION

Автоматическая обработка текста. Представление текстового массива. Способы и форматы представления Индекс Базы данных. Полнотекстовый поиск. В этой функции языка C текст строки big просматривают слева направо и для каждой позиции x запускают последовательное сравнение с искомой - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Автоматическая обработка текста

Автоматическая Автоматическая обработка текстаобработка текста

Представление Представление текстового массиватекстового массива

Page 2: Автоматическая обработка текста

Способы и форматы Способы и форматы представленияпредставления

ИндексИндекс Базы данныхБазы данных

Page 3: Автоматическая обработка текста

Полнотекстовый поискПолнотекстовый поискchar* strstr(char *big, char *little)char* strstr(char *big, char *little)

{{

char *x, *y, *z;char *x, *y, *z;

for (x = big; *x; x++)for (x = big; *x; x++)

{{

for (y = little, z = x; *y;for (y = little, z = x; *y;

++y, ++z)++y, ++z)

{{

if (*y != *z)if (*y != *z)

break;break;

}}

if (!*y)if (!*y)

return x;return x;

}}

return 0;return 0;

}}

В этой функции языка Cтекст строки bigпросматривают слеванаправо и для каждойпозиции x запускаютпоследовательноесравнение с искомойподстрокой little. Дляэтого, двигаяодновременно двауказателя y и z,попарно сравнивают всесимволы. Если мыуспешно дошли до концаискомой подстроки,значит она найдена.

Page 4: Автоматическая обработка текста

Полнотекстовый поискПолнотекстовый поиск НайтиНайти:: «дом» «дом»

?????? Как найти Как найти дома, доме, домом дома, доме, домом и и т.п.т.п.??

форму «дом» или часть слова, форму «дом» или часть слова, совпадающего с последовательностью совпадающего с последовательностью букв «дом» - букв «дом» - наронародомдом

Программа ищет ту подстроку, которую Программа ищет ту подстроку, которую мы ей зададим (точное совпадение)мы ей зададим (точное совпадение)

Можно загрузить текст в Word искать там: Правка: найти Что найдем?

Можно использовать специальный язык «дом.*» Что найдем? Дома, доме и т.п. + домашний, домовой, Дома, доме и т.п. + домашний, домовой,

домолоть …домолоть …

Page 5: Автоматическая обработка текста

Индекс. Индекс. Полнотекстовый поискПолнотекстовый поиск

Хотя прямой просмотр всех текстов – довольно Хотя прямой просмотр всех текстов – довольно медленное занятие, не следует думать, что медленное занятие, не следует думать, что алгоритмы прямого поиска не применяются в алгоритмы прямого поиска не применяются в интернете. Норвежская поисковая система Fast интернете. Норвежская поисковая система Fast (www.fastsearch.com) использовала чип, (www.fastsearch.com) использовала чип, реализующий логику прямого поиска реализующий логику прямого поиска упрощенных регулярных выражений [fastpmc], и упрощенных регулярных выражений [fastpmc], и разместила 256 таких чипов на одной плате. Это разместила 256 таких чипов на одной плате. Это позволяло Fast-у обслуживать довольно большое позволяло Fast-у обслуживать довольно большое количество запросов в единицу времени. (И. количество запросов в единицу времени. (И. Сегалович)Сегалович)

Page 6: Автоматическая обработка текста

«Загадки» «Загадки» ((““backtrackingbacktracking””))

Поиск в корпусах Лидса:Поиск в корпусах Лидса: Как найти: «Пока!»Как найти: «Пока!»

Поиск в Поиск в COCACOCA Найти все формы глагола «Найти все формы глагола «telltell»»

Поиск в НКРЯ:Поиск в НКРЯ: Как найти слова, начинающиеся на Как найти слова, начинающиеся на

пере- и заканчивающиеся на –пере- и заканчивающиеся на –выватьсявываться

ПОЧЕМУ ТАКПОЧЕМУ ТАК??

Page 7: Автоматическая обработка текста

Что после токенаЧто после токена??

Как представлять аннотацииКак представлять аннотации?? Как хранить аннотацииКак хранить аннотации?? Как обеспечить навигацию по Как обеспечить навигацию по

корпусу (аннотациям)корпусу (аннотациям)

Page 8: Автоматическая обработка текста

«Упаковка» корпуса. «Упаковка» корпуса. XML XML разметкаразметка

<sent_text></sent_text> <tree> <token> <lexem <sent_text></sent_text> <tree> <token> <lexem lex_text="lex_text="Он" Он" ID="1" father="3" link="ID="1" father="3" link="от сказуемого к от сказуемого к подлежащему, Гл. – местоим.-сущ." подлежащему, Гл. – местоим.-сущ." lemma="lemma="он" он" grval="Pron, grval="Pron, PronounPersonal, Sg, Masc, Nom" ></lexem> </token> PronounPersonal, Sg, Masc, Nom" ></lexem> </token> <token> <lexem lex_text="<token> <lexem lex_text="так" так" ID="2" father="3" ID="2" father="3" link="link="примыкание, Гл. - наречие" примыкание, Гл. - наречие" lemma="lemma="так" так" grval="Adv, grval="Adv, NotOAdverb" ></lexem> </token> <token> <lexem NotOAdverb" ></lexem> </token> <token> <lexem lex_text="lex_text="любит" любит" ID="3" father="-1" link="ID="3" father="-1" link="связь от корня" связь от корня" lemma="lemma="любить" любить" grval="Verb, Finit, Praes, _3rd, Sg, Trans, grval="Verb, Finit, Praes, _3rd, Sg, Trans, Imperfect, GenC_No, DatC_No, AccC_AnyAnym, InstrC_NAnim, Imperfect, GenC_No, DatC_No, AccC_AnyAnym, InstrC_NAnim, LocC_No, Unreflexive" ></lexem> </token> <token> LocC_No, Unreflexive" ></lexem> </token> <token> <lexem lex_text=" <lexem lex_text="эту" эту" ID="4" father="5" link="ID="4" father="5" link="согласование, Сущ. согласование, Сущ. - атрибут. ч. р." - атрибут. ч. р." lemma="lemma="этот" этот" grval="Pron, PronAdj, Sg, Fem, Acc" grval="Pron, PronAdj, Sg, Fem, Acc" ></lexem> </token> <token> <lexem ></lexem> </token> <token> <lexem lex_text="lex_text="квартиру" квартиру" ID="5" father="3" link="ID="5" father="3" link="управление, Гл. - управление, Гл. - сущ." сущ." lemma="lemma="квартира" квартира" grval="Noun, Nanim, Nverbal, Fem, Acc, grval="Noun, Nanim, Nverbal, Fem, Acc, Sg" ></lexem> </token> </tree> </S>Sg" ></lexem> </token> </tree> </S>

Page 9: Автоматическая обработка текста

«Упаковка» корпуса. «Упаковка» корпуса. РазметкаРазметка

------line1------------line1------ 1 1 Он Он synt_tag=<subj> gov_by=<3> antec=<>synt_tag=<subj> gov_by=<3> antec=<> 2 2 так так synt_tag=<spec> gov_by=<3> antec=<>synt_tag=<spec> gov_by=<3> antec=<> 3 3 любит любит synt_tag=<pred> gov_by=<> antec=<>synt_tag=<pred> gov_by=<> antec=<> 4 4 эту эту synt_tag=<amod> gov_by=<5> antec=<>synt_tag=<amod> gov_by=<5> antec=<> 5 5 квартиру. квартиру. synt_tag=<obj> gov_by=<3> antec=<>synt_tag=<obj> gov_by=<3> antec=<>

------line2------------line2------ 1 1 Судьба Судьба synt_tag=<subj> gov_by=<2> antec=<>synt_tag=<subj> gov_by=<2> antec=<> 2 2 дала дала synt_tag=<pred> gov_by=<> antec=<>synt_tag=<pred> gov_by=<> antec=<> 3 3 мне мне synt_tag=<comp> gov_by=<2> antec=<>synt_tag=<comp> gov_by=<2> antec=<> 4 4 эту эту synt_tag=<amod> gov_by=<5> antec=<>synt_tag=<amod> gov_by=<5> antec=<> 5 5 возможность. возможность. synt_tag=<obj> gov_by=<2> antec=<>synt_tag=<obj> gov_by=<2> antec=<>

Page 10: Автоматическая обработка текста

Индекс. Индекс. Инвертированный файлИнвертированный файлЭта простейшая структура данных.Эта простейшая структура данных.

Знакома любому грамотному человеку, так и любому Знакома любому грамотному человеку, так и любому программисту баз данных, даже не имевшему дело с программисту баз данных, даже не имевшему дело с полнотекстовым поиском.полнотекстовым поиском.

Первая категория людей знает, что это такое, по Первая категория людей знает, что это такое, по «конкордансам» - алфавитно упорядоченным «конкордансам» - алфавитно упорядоченным исчерпывающим спискам слов из одного текста или исчерпывающим спискам слов из одного текста или принадлежащих одному автору (например «Конкорданс принадлежащих одному автору (например «Конкорданс к стихам А. С. Пушкина», «Словарь-конкорданс к стихам А. С. Пушкина», «Словарь-конкорданс публицистики Ф. М. Достоевского»). публицистики Ф. М. Достоевского»).

Вторые имеют дело с той или иной формой Вторые имеют дело с той или иной формой инвертированного списка всякий раз, когда строят или инвертированного списка всякий раз, когда строят или используют «индекс БД по ключевому полю».используют «индекс БД по ключевому полю».

Page 11: Автоматическая обработка текста

%% word%% word tagtag morphmorph edgeedge parentparent secedge commentsecedge comment

#BOS 1 1 985275570 1#BOS 1 1 985275570 1 MMццgengen VMFINVMFIN 3.Pl.Pres.Konj3.Pl.Pres.KonjHDHD 508508 PuristenPuristen NNNN Masc.Nom.Pl.*Masc.Nom.Pl.* NKNK 505505 alleraller PIDATPIDAT *.Gen.Pl*.Gen.Pl NKNK 500500 MusikbereicheMusikbereiche NNNN Masc.Gen.Pl.*Masc.Gen.Pl.*NKNK 500500 auchauch ADVADV ---- MOMO 508508 diedie ARTART Def.Fem.Akk.SgDef.Fem.Akk.Sg NKNK 501501 NaseNase NNNN Fem.Akk.Sg.*Fem.Akk.Sg.* NKNK 501501 rrььmpfenmpfen VVINFVVINF ---- HDHD 506506 ,, $,$, ---- ---- 00 #500#500 NPNP ---- GRGR 505505 #501#501 NPNP ---- OAOA 506506

#EOS 1#EOS 1

Page 12: Автоматическая обработка текста

Полнотекстовый поиск Полнотекстовый поиск vs. ???vs. ???

Как устроена навигация по Как устроена навигация по книгамкнигам??

индексиндекс

Page 13: Автоматическая обработка текста

ИндексИндекс

Page 14: Автоматическая обработка текста

Индекс. Немного об Индекс. Немного об информационном информационном

поискепоиске Which plays of Shakespeare contain the Which plays of Shakespeare contain the

words words BBRUTUS ANDRUTUS AND CCAESARAESAR, but not , but not CCALPURNIAALPURNIA?? One could grep all of Shakespeare’s plays for One could grep all of Shakespeare’s plays for

BBRUTUSRUTUS and and CCAESARAESAR, then strip out lines , then strip out lines containing containing CALPURNIA CALPURNIA

Why is grep not the solution?Why is grep not the solution? Slow (for large collections)Slow (for large collections) grep is line-oriented, IR is document-orientedgrep is line-oriented, IR is document-oriented ““NOTNOT C CALPURNIAALPURNIA” is non-trivial” is non-trivial Other operations (e.g., find the word Other operations (e.g., find the word RROMANSOMANS near near

COUNTRYMANCOUNTRYMAN ) not feasible) not feasible

Page 15: Автоматическая обработка текста

Индекс. Немного об Индекс. Немного об информационном информационном

поискепоиске

Entry is 1 if term occurs. Example: CALPURNIA occurs in Julius Caesar. Entry is 0 if term doesn’t occur. Example: CALPURNIAdoesn’t occur in The tempest.

Page 16: Автоматическая обработка текста

16

Incidence vectors

So we have a 0/1 vector for each term.

To answer the query BRUTUS AND CAESAR AND NOT CALPURNIA:

Take the vectors for BRUTUS, CAESAR AND NOT CALPURNIA

Complement the vector of CALPURNIA

Do a (bitwise) and on the three vectors110100 AND 110111 AND 101111 = 100100

16

Page 17: Автоматическая обработка текста

17

0/1 vector for BRUTUS

17

Anthony and Cleopatra

Julius Caesar

The Tempest

Hamlet

Othello Macbeth . . .

ANTHONYBRUTUS CAESARCALPURNIACLEOPATRAMERCYWORSER. . .

1110111

1111000

0000011

0110011

0010011

1010010

result: 1 0 0 1 0 0

Page 18: Автоматическая обработка текста

18

Can’t build the incidence matrix

M = 500,000 × 106 = half a trillion 0s and 1s.But the matrix has no more than one billion 1s.

Matrix is extremely sparse.What is a better representations?

We only record the 1s.

18

Page 19: Автоматическая обработка текста

19

Inverted Index

For each term t, we store a list of all documents that contain t.

19

dictionary postings

Page 20: Автоматическая обработка текста

20

Inverted Index

For each term t, we store a list of all documents that contain t.

20

dictionary postings

Page 21: Автоматическая обработка текста

Inverted index Inverted index constructionconstruction

❶ Collect the documents to be indexed:

❷ Tokenize the text, turning each document into a list of tokens:

❸ Do linguistic preprocessing, producing a list of normalized tokens, which are the indexing terms:

❹ Index the documents that each term occurs in by creating aninverted index, consisting of a dictionary and postings.

21

Page 22: Автоматическая обработка текста

22

Generate posting

22

Page 23: Автоматическая обработка текста

23

Sort postings

23

Page 24: Автоматическая обработка текста

24

Create postings lists, determine document frequency

24

Page 25: Автоматическая обработка текста

25

Split the result into dictionary and postings file

25

dictionary postings

Page 26: Автоматическая обработка текста

26

Later in this course

Index construction: how can we create inverted indexes for large collections?How much space do we need for dictionary and index?Index compression: how can we efficiently store and process indexes for large collections?Ranked retrieval: what does the inverted index look like when we want the “best” answer?

26

Page 27: Автоматическая обработка текста

OutlineOutline

❶ Introduction

❷ Inverted index

❸ Processing Boolean queries

❹ Query optimization

27

Page 28: Автоматическая обработка текста

28

Simple conjunctive query (two terms)

Consider the query: BRUTUS AND CALPURNIATo find all matching documents using inverted index:

❶ Locate BRUTUS in the dictionary❷ Retrieve its postings list from the postings file❸ Locate CALPURNIA in the dictionary❹ Retrieve its postings list from the postings file❺ Intersect the two postings lists❻ Return intersection to user

28

Page 29: Автоматическая обработка текста

29

Intersecting two posting lists

This is linear in the length of the postings lists.Note: This only works if postings lists are sorted.

29

Page 30: Автоматическая обработка текста