49
Търсене в Търсене в естествен език естествен език Васил Момчев Онтотекст academy.devbg.org www.devbg.org

Търсене в естествен език

  • Upload
    sinead

  • View
    86

  • Download
    3

Embed Size (px)

DESCRIPTION

Търсене в естествен език. Васил Момчев. Онтотекст. academy . devbg . org. www.devbg.org. Цел на лекцията. Разбиране на проблемите свързани с търсенето в текстови данни Запознаването с основни алгоритми за търсене в текст и тяхното оптимизиране - PowerPoint PPT Presentation

Citation preview

Page 1: Търсене в естествен език

Търсене в естествен Търсене в естествен езикезик

Васил МомчевОнтотекст

academy.devbg.org www.devbg.org

Page 2: Търсене в естествен език

Цел на лекциятаЦел на лекцията

• Разбиране на проблемите свързани с Разбиране на проблемите свързани с търсенето в текстови даннитърсенето в текстови данни

• Запознаването с основни алгоритми за Запознаването с основни алгоритми за търсене в текст и тяхното оптимизиранетърсене в текст и тяхното оптимизиране

• Примерни реализации на търсене в текст в Примерни реализации на търсене в текст в основните бази данни и тяхното съпоставянеосновните бази данни и тяхното съпоставяне

• Реализация на търсене на текст извън база Реализация на търсене на текст извън база данниданни

Page 3: Търсене в естествен език

Основен алгоритъм за Основен алгоритъм за търсенето в тексттърсенето в текст

1.1. ВъведениеВъведение

2.2. Основен алгоритъм за търсенето на текстови Основен алгоритъм за търсенето на текстови данниданни и построяване на и построяване на inverted indexinverted index

3.3. Методи за оптимизирането скоростта на Методи за оптимизирането скоростта на inverted indexinverted index

4.4. Търсене на текст в базите данни – Търсене на текст в базите данни – MySQL, MySQL, Microsoft SQL ServerMicrosoft SQL Server и и Oracle Oracle

5.5. Използване на други алгоритми за търсене в Използване на други алгоритми за търсене в тексттекст

Page 4: Търсене в естествен език

ВъведениеВъведение

Основни видове търсенеОсновни видове търсене

Търсене на данни Търсене на данни Търсене на текстова Търсене на текстова информацияинформация

Основна цел: Намиране на Основна цел: Намиране на всички обекти изпълняващи всички обекти изпълняващи

определена заявка определена заявка използваща релационна използваща релационна алгебра или регулярни алгебра или регулярни

изразиизрази

Основна цел: Откриване на Основна цел: Откриване на всички свързани документи всички свързани документи свързани с определена свързани с определена заявка и възможно най-заявка и възможно най-малко несвързани малко несвързани документи сортирани по документи сортирани по резултатрезултат

Page 5: Търсене в естествен език

ВъведениеВъведение

Основни изисквания към търсенето на текстова Основни изисквания към търсенето на текстова информацияинформация

Търсене на думи, а не Търсене на думи, а не substringsubstring

Пример: “Пример: “London police London police releaserelease photos of terror photos of terror suspectssuspects””

““leaselease” не трябва да бъде откриван при ” не трябва да бъде откриван при търсенето в текст, за разлика от при търсенето в текст, за разлика от при substringsubstring търсенетърсене

Page 6: Търсене в естествен език

ВъведениеВъведение

Основни изисквания към търсенето на текстова Основни изисквания към търсенето на текстова информацияинформация

Езиково и символно търсенеЕзиково и символно търсене

Пример езиково търсене: Думата “Пример езиково търсене: Думата “mouse”, mouse”, трябва трябва да бъде откривана във всичките си езикови да бъде откривана във всичките си езикови форми форми “mouse”, “mice”“mouse”, “mice”......

Пример символно търсене: Пример символно търсене: “C++”“C++”

Page 7: Търсене в естествен език

ВъведениеВъведение

Основни изисквания към търсенето на текстова Основни изисквания към търсенето на текстова информацияинформация

Оценяване на резултатитеОценяване на резултатите

Търсенето на думи, за разлика от търсенето на Търсенето на думи, за разлика от търсенето на stringstring не е точно дефинирано не е точно дефинирано

Page 8: Търсене в естествен език

ВъведениеВъведение

Методи на оценяване на системите за търсене в Методи на оценяване на системите за търсене в тексттекст

• Резултатност Резултатност (effectiveness)(effectiveness)• точност на оценяванеточност на оценяване (precision) (precision) брой точни / брой брой точни / брой

върнати документи върнати документи

• точност на връщане точност на връщане (recall) (recall) брой точни / общ брой брой точни / общ брой точни документиточни документи

• Производителност (Производителност (efficiencyefficiency))

Page 9: Търсене в естествен език

Основен алгоритъм за търсенето на текстови данни

Page 10: Търсене в естествен език

Основен алгоритъм за Основен алгоритъм за търсенето на текстови даннитърсенето на текстови данни

Без значение от подхода е необходима структура Без значение от подхода е необходима структура от данни, която ефективно да извършваот данни, която ефективно да извършва

• Търсене на документ по термин (често)Търсене на документ по термин (често)

• Изтриване на документ (рядко)Изтриване на документ (рядко)

• Промяната съдържанието на документ (рядко)Промяната съдържанието на документ (рядко)

• Добавяне на нови документи (рядко)Добавяне на нови документи (рядко)

Page 11: Търсене в естествен език

Основен алгоритъм за Основен алгоритъм за търсенето на текстови даннитърсенето на текстови данни

Пример за Пример за inverted indexinverted index::

““Зелена гора”, “Червена къща”, “Зелена ябълка”, Зелена гора”, “Червена къща”, “Зелена ябълка”, “Червена ябълка”“Червена ябълка”

гора (1);гора (1);

зелена (3);(1); зелена (3);(1);

къща (2);къща (2);

червена (4);(2);червена (4);(2);

ябълка (4);(3);ябълка (4);(3);

в скоби документите в които се среща ключовата дума

Page 12: Търсене в естествен език

Основен алгоритъм за Основен алгоритъм за търсенето на текстови даннитърсенето на текстови данни

Видове Видове inverted indexinverted index, според типовете заявки:, според типовете заявки:

• Inverted file index – Inverted file index – съдържа списък на всички съдържа списък на всички термини и документите, в които се съдържаттермини и документите, в които се съдържат

• Full inverted indexFull inverted index – съдържа списък на всички – съдържа списък на всички термини, документите и позициите, в които се термини, документите и позициите, в които се съдържатсъдържат

• Inverted indexInverted index с честота на срещане на с честота на срещане на термините в документитетермините в документите – съдържа списък на – съдържа списък на всички термини и честотата им на срещане в всички термини и честотата им на срещане в документитедокументите

Page 13: Търсене в естествен език

Основен алгоритъм за Основен алгоритъм за търсенето на текстови даннитърсенето на текстови данни

Приложение на различните Приложение на различните inverted index:inverted index:

• Термин -> Документ (за булеви заявки)Термин -> Документ (за булеви заявки)

t1 (d1), (d2), …t1 (d1), (d2), …

• Термин -> Документ; Честота на термин в Термин -> Документ; Честота на термин в документа (по-добра резултатност)документа (по-добра резултатност)

t1 (d1, tf1), (d2, tf2), …t1 (d1, tf1), (d2, tf2), …

• Термин -> Документ; Позиция (търсене на Термин -> Документ; Позиция (търсене на фрази и търсене по близост)фрази и търсене по близост)

t1(d1, p1), (d2, p2), …t1(d1, p1), (d2, p2), …

Page 14: Търсене в естествен език

Основен алгоритъм за Основен алгоритъм за търсенето на текстови даннитърсенето на текстови данни

For each document For each document d d in the collectionin the collectionBeginBegin

numSubSet = 1numSubSet = 1While memory exists:While memory exists:

For each term For each term t t in document in document ddFind term Find term t t in the term dictionaryin the term dictionaryIf term If term t t exists, add a node to its posting listexists, add a node to its posting listOtherwise, add term Otherwise, add term t t to the term dictionaryto the term dictionaryWrite SubSet of Inverted index to diskWrite SubSet of Inverted index to disknumSubSet = numSubSet + 1numSubSet = numSubSet + 1

Free memoryFree memoryEndEndFor I = 1 to numSubSetFor I = 1 to numSubSetMerge SubSet Merge SubSet I I with Inverted Indexwith Inverted Index

Page 15: Търсене в естествен език

Основен алгоритъм за Основен алгоритъм за търсенето на текстови даннитърсенето на текстови данни

Различни реализации на Различни реализации на inverted indexinverted index, като , като структура от данниструктура от данни

• Сортиран списъкСортиран списък

++ бърз за създаванебърз за създаване ++ бърз за търсенебърз за търсене -- много бавен за промяна на информациятамного бавен за промяна на информацията

Page 16: Търсене в естествен език

Основен алгоритъм за Основен алгоритъм за търсенето на текстови даннитърсенето на текстови данни

Различни реализации на Различни реализации на inverted indexinverted index, като , като структура от данниструктура от данни

• B-B-дърводърво

+ + бърз за търсенебърз за търсене-- създаването и промяната не може да бъде създаването и промяната не може да бъде разпределенаразпределена - - сложна имплементациясложна имплементация

Page 17: Търсене в естествен език

Основен алгоритъм за Основен алгоритъм за търсенето на текстови даннитърсенето на текстови данни

Различни реализации на Различни реализации на inverted indexinverted index, като , като структура от данниструктура от данни

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

++ бързи за създаванебързи за създаване++ бързи за промяна на информациятабързи за промяна на информацията-- по-бавни за търсенепо-бавни за търсене

Page 18: Търсене в естествен език

Основен алгоритъм за Основен алгоритъм за търсенето на текстови даннитърсенето на текстови данни

Различни реализации на Различни реализации на inverted indexinverted index, като , като структура от данниструктура от данни

• HashtableHashtable

+ + бърз за създаване, промяна и търсенебърз за създаване, промяна и търсене - - несортиран речник (трудности при търсене на несортиран речник (трудности при търсене на wildcardwildcard и обединение на индекси и обединение на индекси))

Page 19: Търсене в естествен език

Основен алгоритъм за Основен алгоритъм за търсенето на текстови даннитърсенето на текстови данни

Предимства на Предимства на inverted indexinverted index

• Ефективно търсене на термин или поредица от Ефективно търсене на термин или поредица от термини срещу документтермини срещу документ

• Определя тежестта на термините според Определя тежестта на термините според тяхната честота на срещанетяхната честота на срещане

• Определя тежестта на документите според Определя тежестта на документите според дължината на текстдължината на текст

Page 20: Търсене в естествен език

Основен алгоритъм за Основен алгоритъм за търсенето на текстови даннитърсенето на текстови данни

Недостатъци на Недостатъци на inverted indexinverted index

• Необходимост на значителни ресурси за Необходимост на значителни ресурси за генериранетогенерирането

• Големина на индексите, която може да Големина на индексите, която може да надвишава и размера на самата индексирана надвишава и размера на самата индексирана информацияинформация

Page 21: Търсене в естествен език

Основен алгоритъм за Основен алгоритъм за търсенето на текстови даннитърсенето на текстови данни

Общ процес на индексиранеОбщ процес на индексиране

• DatastoreDatastore

• FilterFilter

• SectionerSectioner

• LexerLexer

• Indexing engineIndexing engine

Page 22: Търсене в естествен език

Основен алгоритъм за Основен алгоритъм за търсенето на текстови даннитърсенето на текстови данни

Page 23: Търсене в естествен език

Методи за оптимизиране скоростта на inverted index

Page 24: Търсене в естествен език

Методи за оптимизиране Методи за оптимизиране скоростта на скоростта на inverted indexinverted index

Няколко начина за оптимизиране скоростта на Няколко начина за оптимизиране скоростта на търсене:търсене:

• Използване на различни Използване на различни preprocesspreprocess стъпки за стъпки за елиминиране на често срещани думиелиминиране на често срещани думи

• Компресиране на даннитеКомпресиране на данните• Компресиране на информацията за терминитеКомпресиране на информацията за термините

• Компресиране на информацията за срещането на Компресиране на информацията за срещането на терминитетермините

• Елиминирани на части от заявкатаЕлиминирани на части от заявката

Page 25: Търсене в естествен език

Използване на различни Използване на различни preprocesspreprocess стъпки за стъпки за елиминиране на често срещани думи – стоп елиминиране на често срещани думи – стоп думидуми

Стоп думите могат да намалят размерът на Стоп думите могат да намалят размерът на inverted index inverted index около на 50%.около на 50%.

Думата Думата “the” “the” се среща около 7% в текст на се среща около 7% в текст на английски!английски!

Методи за оптимизиране Методи за оптимизиране скоростта на скоростта на inverted indexinverted index

Page 26: Търсене в естествен език

Методи за оптимизиране Методи за оптимизиране скоростта на скоростта на inverted indexinverted index

Компресиране на информацията за терминитеКомпресиране на информацията за термините

consider; considerconsider; considerable;able; consider considerably;ably; consider considerate;ate; considerconsiderateness;ateness; consider consideration;ation; consider considering;ing; conservaconservancy;ncy; conserva conservation;tion; conserva conservationist;tionist; conservaconservatism; tism; conservaconservativetive

considerconsider[4]able[4]ably[3]are[7]ateness[5]ation[3]ing[4]able[4]ably[3]are[7]ateness[5]ation[3]ingconvervaconverva[3]ncy[4]tion[7]tionist[4]tism[4]tive[3]ncy[4]tion[7]tionist[4]tism[4]tive

Page 27: Търсене в естествен език

Методи за оптимизиране Методи за оптимизиране скоростта на скоростта на inverted indexinverted index

Компресиране на информацията за срещането Компресиране на информацията за срещането на терминитена термините

Документът Документът DDii е представен като е представен като DDii – D – Di-1i-1

... 5600; 5679; 5684; 5685; 5780 …... 5600; 5679; 5684; 5685; 5780 … ... 79; ... 79; 5; 5; 1;1; 5 5;; … …

• Числата се записват с по малко битовеЧислата се записват с по малко битове• Намалява големината на списъците с 10-15%Намалява големината на списъците с 10-15%

Page 28: Търсене в естествен език

Методи за оптимизиране Методи за оптимизиране скоростта на скоростта на inverted indexinverted index

Компресиране на данните води до:Компресиране на данните води до:

ПредимстваПредимства• Намаляване големината на индекситеНамаляване големината на индексите• Драстично намаляване броя на дисковите Драстично намаляване броя на дисковите

операцииоперации

НедостатъциНедостатъци• Увеличава се значително времето за Увеличава се значително времето за

създаване на индекссъздаване на индекс

Page 29: Търсене в естествен език

Методи за оптимизиране Методи за оптимизиране скоростта на скоростта на inverted indexinverted index

Елиминирани на части от заявкатаЕлиминирани на части от заявката

ТерминТермин 1, Термин1, Термин 2, ... Термин 2, ... Термин NN

Сортират се по-честота на срещане на термина Сортират се по-честота на срещане на термина (значимост)(значимост)

Термин 1 – 100% от документитеТермин 1 – 100% от документите

Термин 2 – 80 % от документитеТермин 2 – 80 % от документите

Термин 3 – 60% от документитеТермин 3 – 60% от документите

Възможност за определяне на стоп думи без Възможност за определяне на стоп думи без статичното им задаванестатичното им задаване

Page 30: Търсене в естествен език

Търсене на текст в базите данни Търсене на текст в базите данни

Търсене на текст в базите данни – MySQL, Microsoft SQL Server и

Oracle

Page 31: Търсене в естествен език

Търсене на текст в базите данниТърсене на текст в базите данниMySQL 4.1MySQL 4.1

MySQL 4.1MySQL 4.1

MATCH (MATCH (col1col1,,col2col2,...) AGAINST (,...) AGAINST (exprexpr [IN BOOLEAN MODE | WITH QUERY [IN BOOLEAN MODE | WITH QUERY EXPANSION]) EXPANSION])

където:където:• col1, col2 ... colNcol1, col2 ... colN са колони от тип са колони от тип char, varcharchar, varchar

илиили text text на таблица от тип на таблица от тип MyISAMMyISAM• ееxprxpr израз съдържащ: +задължителнаДума израз съдържащ: +задължителнаДума

-неприсъстващаДума <думаСпонисъкРанк -неприсъстващаДума <думаСпонисъкРанк >думаСповисокРанк (група думи) >думаСповисокРанк (група думи) ~~отирцаниеотирцание префикспрефикс* “* “фразафраза““

Page 32: Търсене в естествен език

Търсене на текст в базите данниТърсене на текст в базите данниMySQL 4.1MySQL 4.1

Boolean search modeBoolean search mode

• Резултатите не са сортирани по Резултатите не са сортирани по scorescore

• ScoreScore може да приема стойности от 1 до броя може да приема стойности от 1 до броя на откритите думите (възможно е на откритите думите (възможно е scorescore да да бъде изчисляван с различен израз от изразът бъде изчисляван с различен израз от изразът за търсене)за търсене)

• Няма ограничение за честотата на срещане Няма ограничение за честотата на срещане на думитена думите

Page 33: Търсене в естествен език

Търсене на текст в базите данни Търсене на текст в базите данни MySQL 4.1MySQL 4.1

MySQL MySQL не може да извършва:не може да извършва:• Езиково търсенеЕзиково търсене “test” != “tests” “test” != “tests” и символно и символно

търсене търсене “C++”“C++”• Търсене на думи равни или по-малки от 3 Търсене на думи равни или по-малки от 3

символа по подразбиранесимвола по подразбиране• Да открива думи, които се срещат в повече от Да открива думи, които се срещат в повече от

половината записи половината записи • Паралелно търсене в Паралелно търсене в fulltext fulltext и обикновен и обикновен

индексиндекс• Конфигурацията на собствени компоненти за Конфигурацията на собствени компоненти за

разбор на думиразбор на думи (Lexer) (Lexer) и филтри и филтри (Filter) (Filter)

Page 34: Търсене в естествен език

Търсене на текст в базите данниТърсене на текст в базите данниMySQL 4.1MySQL 4.1

CREATE TABLE t_text CREATE TABLE t_text (id INTEGER PRIMARY KEY,(id INTEGER PRIMARY KEY, title TEXT, text TEXT); title TEXT, text TEXT);

ALTER TABLE t_text ADD ALTER TABLE t_text ADD (FULLTEXT(title,text));(FULLTEXT(title,text));

REPAIR TABLE t_text QUICK;REPAIR TABLE t_text QUICK;

Page 35: Търсене в естествен език

Търсене на текст в базите данниТърсене на текст в базите данни MySQL 4.1MySQL 4.1

SELECT SELECT id, id, MATCH (col1[,col2…]) AGAINST MATCH (col1[,col2…]) AGAINST (‘exp1') AS score (‘exp1') AS score

FROM articles FROM articles WHERE MATCH (col1[,col2…]) AGAINST WHERE MATCH (col1[,col2…]) AGAINST (‘exp1')(‘exp1')

Page 36: Търсене в естествен език

Търсене на текст в базите данниТърсене на текст в базите данниMicrosoft SQL Server 2000Microsoft SQL Server 2000

Microsoft SQL Server 2000Microsoft SQL Server 2000 Fulltext ServiceFulltext Service• CONTAINS(column,’expr’)CONTAINS(column,’expr’)• CONTAINSTABLE(table, column, CONTAINSTABLE(table, column,

‘expr’[, ‘expr’[, пърите пърите N N по ранк)по ранк)• FREETEXT(column,’expr’)FREETEXT(column,’expr’)• FREETEXTTABLE(table, column, FREETEXTTABLE(table, column,

‘expr’[, ‘expr’[, първите първите N N по ранк)по ранк)

Където Където column column може да приема стойност на може да приема стойност на колона или * (всички колони за таблицата)колона или * (всички колони за таблицата)

Page 37: Търсене в естествен език

Търсене на текст в базите данни Търсене на текст в базите данни Microsoft SQL Server 2000Microsoft SQL Server 2000

Синтаксис на Синтаксис на exprexpr за търсене с за търсене с CONTAINSCONTAINS или или CONTAINSTABLECONTAINSTABLE

• Дума или фразаДума или фраза

• Префикс на дума или фразаПрефикс на дума или фраза

• Дума в близост до другаДума в близост до друга

• Езиково търсене на различни форми на Езиково търсене на различни форми на думатадумата

• Булеви заявкиБулеви заявки

Page 38: Търсене в естествен език

Търсене на текст в базите данни Търсене на текст в базите данни Microsoft SQL Server 2000Microsoft SQL Server 2000

Microsoft SQL Server 2000 Microsoft SQL Server 2000 не може да извършва:не може да извършва:

• Паралелно търсене по Паралелно търсене по fulltext fulltext и обикновен и обикновен индексиндекс

• Символно търсене “Символно търсене “C++”C++”

• Лесно пренасяне на Лесно пренасяне на fulltext fulltext индекси между индекси между сървъри и техния сървъри и техния backupbackup

• Конфигурацията на собствени компоненти за Конфигурацията на собствени компоненти за разбор на думиразбор на думи (Lexer) (Lexer) и филтри и филтри (Filter) (Filter)

Page 39: Търсене в естествен език

Търсене на текст в базите данни Търсене на текст в базите данни Microsoft SQL Server 2000Microsoft SQL Server 2000

Управление на Управление на fulltext fulltext индексите посредством индексите посредством запазените процедуризапазените процедури

• sp_fulltext_catalog (sp_fulltext_catalog (управление на каталозите)управление на каталозите)

• sp_fulltext_databasesp_fulltext_database (инициализира база за (инициализира база за работа с работа с fulltext fulltext каталози)каталози)

• sp_fulltext_servicesp_fulltext_service (конфигурира процесът на (конфигурира процесът на индексиране)индексиране)

• sp_fulltext_tablesp_fulltext_table (добавя или прехва индекси (добавя или прехва индекси върху таблица)върху таблица)

Page 40: Търсене в естествен език

Търсене на текст в базите данни Търсене на текст в базите данни Microsoft SQL Server 2000Microsoft SQL Server 2000

SELECT key, rankSELECT key, rank

FROM FROM

CONTAINSTABLE(t_tree,text,’expr’, 100)CONTAINSTABLE(t_tree,text,’expr’, 100)

SELECT id SELECT id

FROM t_tree FROM t_tree

WHERE WHERE

CONTAINS(text, ‘expr’)CONTAINS(text, ‘expr’)

Page 41: Търсене в естествен език

Търсене на текст в базите данни Търсене на текст в базите данни OracleOracle

Oracle Database 10.1.0.2Oracle Database 10.1.0.2SCORE(id) SCORE(id) CONTAINS(column, ‘expr’[, id]) > 0CONTAINS(column, ‘expr’[, id]) > 0CATSEARCH(column, ‘expr’, ‘structured CATSEARCH(column, ‘expr’, ‘structured

query’) > 0query’) > 0MATCHES(column, text);MATCHES(column, text);

където където ‘expr’ ‘expr’ е израз подържащ булеви изрази е израз подържащ булеви изрази AND, OR, NOT, wildcardAND, OR, NOT, wildcard % и % и __, , NEARNEAR, , ABOUTABOUT

‘‘structured query’ – structured query’ – най-често колона за сортираненай-често колона за сортиране

‘‘text’ text’ – текст използван за класификация– текст използван за класификация

Page 42: Търсене в естествен език

Търсене на текст в базите данни Търсене на текст в базите данни OracleOracle

Oracle Text Oracle Text подържа конфигурация на:подържа конфигурация на:

• DatastoreDatastore за извличане на данни директно, от за извличане на данни директно, от няколко колони (запазена процедура), файл няколко колони (запазена процедура), файл или или URLURL

• Filter Filter (реализиран като запазена процедура)(реализиран като запазена процедура)

• LexerLexer (възможно е и собствена (възможно е и собствена имплементация)имплементация)

Page 43: Търсене в естествен език

Търсене на текст в базите данни Търсене на текст в базите данни OracleOracle

CREATE TABLE t_text (CREATE TABLE t_text (id NUMBER PRIMARY KEY, id NUMBER PRIMARY KEY, title VARCHAR2(4000), title VARCHAR2(4000), text CLOB)text CLOB)

CREATE INDEXCREATE INDEX i_title i_title ONON t_text(title) t_text(title) INDEXTYPE IS CTXSYS.CONTEXTINDEXTYPE IS CTXSYS.CONTEXT

SELECTSELECT id, score(1) id, score(1) FROMFROM t_text t_text WHEREWHERE

CONTAINSCONTAINS((texttext,‘,‘exprexpr',1) > 0',1) > 0

Page 44: Търсене в естествен език

Използване на други алгоритми за търсене в текст

Page 45: Търсене в естествен език

Използване на други алгоритми Използване на други алгоритми за търсене в текстза търсене в текст

Jarkarta Lucene• API API за търсене на текстза търсене на текст• Реализации с отворен код на Реализации с отворен код на Java Java и и .NET.NET• Позволява голяма гъвкавост в процеса на Позволява голяма гъвкавост в процеса на

индексиране и търсенеиндексиране и търсене• Търсене на булеви изрази, близост на думи, Търсене на булеви изрази, близост на думи,

фрази, диапазон стойности (числови и дати)фрази, диапазон стойности (числови и дати)• Конфигурация и имплементация на Конфигурация и имплементация на Lexer Lexer и и

Filter Filter ((Analyzer)Analyzer)• Лесен за вграждане в други приложенияЛесен за вграждане в други приложения

Page 46: Търсене в естествен език

IndexWriterIndexWriter – клас използван при запазване – клас използван при запазване индекс на дискиндекс на диск

Analyzer – Analyzer – клас обединяващ функциите на клас обединяващ функциите на Lexer Lexer и и FilterFilter

Document Document – клас представляващ документ за – клас представляващ документ за индексиране; съдържа индексиране; съдържа name/value name/value колекция колекция от стригове представяща съдържаниетоот стригове представяща съдържанието

Query Query – клас използван за търсене– клас използван за търсене

QueryParser QueryParser – помощен клас за разбор на – помощен клас за разбор на заявката и създване на обект от тип заявката и създване на обект от тип QueryQuery

Използване на други алгоритми Използване на други алгоритми за търсене в текстза търсене в текст

Page 47: Търсене в естествен език

Индексиране на документ:Индексиране на документ:

IndexWriter index = new IndexWriter(myFile, IndexWriter index = new IndexWriter(myFile, myAnalyzer, true);myAnalyzer, true); // задава се // задава се AnalyzerAnalyzer

Document doc = new Document();Document doc = new Document();

doc.add(Field.Text(“field1”,”value1”));doc.add(Field.Text(“field1”,”value1”));

doc.add(Field.Text(“dbid”,”id”doc.add(Field.Text(“dbid”,”id”, , false));false));

index.addDocument(doc); // index.addDocument(doc); // индексиране на индексиране на документадокумента

Използване на други алгоритми Използване на други алгоритми за търсене в текстза търсене в текст

Page 48: Търсене в естествен език

Откриване на документ:Откриване на документ:

Searcher searcher = new Searcher searcher = new IndexSearcher(myFile);IndexSearcher(myFile);

Query myQuery = Query myQuery = QueryParser.parse(“expr”, “field”, QueryParser.parse(“expr”, “field”, myAnalyzer);myAnalyzer);

Hits hits = searcher.search(myQuery);Hits hits = searcher.search(myQuery);

hits.doc(0).get(“dbid”);hits.doc(0).get(“dbid”);

Използване на други алгоритми Използване на други алгоритми за търсене в текстза търсене в текст

Page 49: Търсене в естествен език

Търсене в естествен езикТърсене в естествен език

Въпроси?Въпроси?