Търсене в естествен език
This presentation is the property of its rightful owner.
Sponsored Links
1 / 49

Търсене в естествен език PowerPoint PPT Presentation


  • 97 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

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

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


3715367

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

Васил Момчев

Онтотекст

academy.devbg.org

www.devbg.org


3715367

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

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

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

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

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


3715367

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

  • Въведение

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

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

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

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


3715367

Въведение

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


3715367

Въведение

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

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

Пример: “London police release photos of terror suspects”

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


3715367

Въведение

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

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

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

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


3715367

Въведение

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

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

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


3715367

Въведение

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

  • Резултатност (effectiveness)

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

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

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


3715367

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


3715367

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

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

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

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

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

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


3715367

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

Пример за inverted index:

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

гора (1);

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

къща (2);

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

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

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


3715367

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

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

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

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

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


3715367

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

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

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

    t1 (d1), (d2), …

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

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

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

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


3715367

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

For each document d in the collection

Begin

numSubSet = 1

While memory exists:

For each term t in document d

Find term t in the term dictionary

If term t exists, add a node to its posting list

Otherwise, add term t to the term dictionary

Write SubSet of Inverted index to disk

numSubSet = numSubSet + 1

Free memory

End

For I = 1 to numSubSet

Merge SubSet I with Inverted Index


3715367

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

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

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

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


3715367

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

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

  • B-дърво

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


3715367

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

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

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

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


3715367

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

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

  • Hashtable

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


3715367

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

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

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

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

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


3715367

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

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

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

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


3715367

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

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

  • Datastore

  • Filter

  • Sectioner

  • Lexer

  • Indexing engine


3715367

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


3715367

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


Inverted index

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

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

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

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

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

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

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


Inverted index1

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

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

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

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


Inverted index2

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

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

consider; considerable; considerably; considerate; considerateness; consideration; considering;conservancy; conservation; conservationist; conservatism; conservative

consider[4]able[4]ably[3]are[7]ateness[5]ation[3]ing

converva[3]ncy[4]tion[7]tionist[4]tism[4]tive


Inverted index3

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

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

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

... 5600; 5679; 5684; 5685; 5780 …

... 79; 5; 1; 5; …

  • Числата се записват с по малко битове

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


Inverted index4

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

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

Предимства

  • Намаляване големината на индексите

  • Драстично намаляване броя на дисковите операции

    Недостатъци

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


Inverted index5

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

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

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

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

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

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

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

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


3715367

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

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


Mysql 4 1

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

MySQL 4.1

MATCH (col1,col2,...) AGAINST (expr [IN BOOLEAN MODE | WITH QUERY EXPANSION])

където:

  • col1, col2 ... colN са колони от тип char, varchar или text на таблица от тип MyISAM

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


Mysql 4 11

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

Boolean search mode

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

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

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


Mysql 4 12

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

MySQL не може да извършва:

  • Езиково търсене “test” != “tests” и символно търсене “C++”

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

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

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

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


Mysql 4 13

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

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

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

REPAIR TABLE t_text QUICK;


Mysql 4 14

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

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

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


Microsoft sql server 2000

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

Microsoft SQL Server 2000Fulltext Service

  • CONTAINS(column,’expr’)

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

  • FREETEXT(column,’expr’)

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

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


Microsoft sql server 20001

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

Синтаксис на expr за търсене с CONTAINS или CONTAINSTABLE

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

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

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

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

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


Microsoft sql server 20002

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

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

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

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

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

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


Microsoft sql server 20003

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

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

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

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

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

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


Microsoft sql server 20004

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

SELECT key, rank

FROM

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

SELECT id

FROM t_tree

WHERE

CONTAINS(text, ‘expr’)


Oracle

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

Oracle Database 10.1.0.2

SCORE(id)

CONTAINS(column, ‘expr’[, id]) > 0

CATSEARCH(column, ‘expr’, ‘structured query’) > 0

MATCHES(column, text);

където ‘expr’ е израз подържащ булеви изрази AND, OR, NOT, wildcard % и _, NEAR, ABOUT

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

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


Oracle1

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

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

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

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

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


Oracle2

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

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

CREATE INDEX i_title ON t_text(title) INDEXTYPE IS CTXSYS.CONTEXT

SELECT id, score(1) FROM t_textWHERECONTAINS(text,‘expr',1) > 0


3715367

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


3715367

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

Jarkarta Lucene

  • API за търсене на текст

  • Реализации с отворен код на Java и .NET

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

  • Търсене на булеви изрази, близост на думи, фрази, диапазон стойности (числови и дати)

  • Конфигурация и имплементация на Lexer и Filter (Analyzer)

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


3715367

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

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

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

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

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

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


3715367

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

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

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

Document doc = new Document();

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

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

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


3715367

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

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

Searcher searcher = new IndexSearcher(myFile);

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

Hits hits = searcher.search(myQuery);

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


3715367

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

Въпроси?


  • Login