slide1
Download
Skip this Video
Download Presentation
Търсене в естествен език

Loading in 2 Seconds...

play fullscreen
1 / 49

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


  • 124 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Търсене в естествен език' - sinead


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
slide1

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

Васил Момчев

Онтотекст

academy.devbg.org

www.devbg.org

slide2
Цел на лекцията
  • Разбиране на проблемите свързани с търсенето в текстови данни
  • Запознаването с основни алгоритми за търсене в текст и тяхното оптимизиране
  • Примерни реализации на търсене в текст в основните бази данни и тяхното съпоставяне
  • Реализация на търсене на текст извън база данни
slide3
Основен алгоритъм за търсенето в текст
  • Въведение
  • Основен алгоритъм за търсенето на текстови даннии построяване на inverted index
  • Методи за оптимизирането скоростта на inverted index
  • Търсене на текст в базите данни – MySQL, Microsoft SQL Server и Oracle
  • Използване на други алгоритми за търсене в текст
slide4
Въведение

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

slide5
Въведение

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

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

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

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

slide6
Въведение

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

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

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

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

slide7
Въведение

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

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

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

slide8
Въведение

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

  • Резултатност (effectiveness)
    • точност на оценяване (precision) брой точни / брой върнати документи
    • точност на връщане (recall) брой точни / общ брой точни документи
  • Производителност (efficiency)
slide10
Основен алгоритъм за търсенето на текстови данни

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

  • Търсене на документ по термин (често)
  • Изтриване на документ (рядко)
  • Промяната съдържанието на документ (рядко)
  • Добавяне на нови документи (рядко)
slide11
Основен алгоритъм за търсенето на текстови данни

Пример за inverted index:

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

гора (1);

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

къща (2);

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

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

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

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

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

  • Inverted file index – съдържа списък на всички термини и документите, в които се съдържат
  • Full inverted index – съдържа списък на всички термини, документите и позициите, в които се съдържат
  • Inverted index с честота на срещане на термините в документите– съдържа списък на всички термини и честотата им на срещане в документите
slide13
Основен алгоритъм за търсенето на текстови данни

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

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

t1 (d1), (d2), …

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

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

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

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

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

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

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

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

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

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

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

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

  • B-дърво

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

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

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

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

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

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

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

  • Hashtable

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

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

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

  • Ефективно търсене на термин или поредица от термини срещу документ
  • Определя тежестта на термините според тяхната честота на срещане
  • Определя тежестта на документите според дължината на текст
slide20
Основен алгоритъм за търсенето на текстови данни

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

  • Необходимост на значителни ресурси за генерирането
  • Големина на индексите, която може да надвишава и размера на самата индексирана информация
slide21
Основен алгоритъм за търсенето на текстови данни

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

  • Datastore
  • Filter
  • Sectioner
  • Lexer
  • Indexing engine
slide23
Методи за оптимизиране скоростта на 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% от документите

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

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

Търсене на текст в базите данни – 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_textWHERE CONTAINS(text,‘expr\',1) > 0

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

Jarkarta Lucene

  • API за търсене на текст
  • Реализации с отворен код на Java и .NET
  • Позволява голяма гъвкавост в процеса на индексиране и търсене
  • Търсене на булеви изрази, близост на думи, фрази, диапазон стойности (числови и дати)
  • Конфигурация и имплементация на Lexer и Filter (Analyzer)
  • Лесен за вграждане в други приложения
slide46
Използване на други алгоритми за търсене в текст

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

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

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

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

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

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

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

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); // индексиране на документа

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

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

Searcher searcher = new IndexSearcher(myFile);

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

Hits hits = searcher.search(myQuery);

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