1 / 49

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

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

sinead
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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Цел на лекцията • Разбиране на проблемите свързани с търсенето в текстови данни • Запознаването с основни алгоритми за търсене в текст и тяхното оптимизиране • Примерни реализации на търсене в текст в основните бази данни и тяхното съпоставяне • Реализация на търсене на текст извън база данни

  3. Основен алгоритъм за търсенето в текст • Въведение • Основен алгоритъм за търсенето на текстови даннии построяване на inverted index • Методи за оптимизирането скоростта на inverted index • Търсене на текст в базите данни – MySQL, Microsoft SQL Server и Oracle • Използване на други алгоритми за търсене в текст

  4. Въведение Основни видове търсене

  5. Въведение Основни изисквания към търсенето на текстова информация Търсене на думи, а не substring Пример: “London police release photos of terror suspects” “lease” не трябва да бъде откриван при търсенето в текст, за разлика от при substring търсене

  6. Въведение Основни изисквания към търсенето на текстова информация Езиково и символно търсене Пример езиково търсене: Думата “mouse”, трябва да бъде откривана във всичките си езикови форми “mouse”, “mice”... Пример символно търсене: “C++”

  7. Въведение Основни изисквания към търсенето на текстова информация Оценяване на резултатите Търсенето на думи, за разлика от търсенето на string не е точно дефинирано

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

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

  10. Основен алгоритъм за търсенето на текстови данни Без значение от подхода е необходима структура от данни, която ефективно да извършва • Търсене на документ по термин (често) • Изтриване на документ (рядко) • Промяната съдържанието на документ (рядко) • Добавяне на нови документи (рядко)

  11. Основен алгоритъм за търсенето на текстови данни Пример за inverted index: “Зелена гора”, “Червена къща”, “Зелена ябълка”, “Червена ябълка” гора (1); зелена (3);(1); къща (2); червена (4);(2); ябълка (4);(3); в скоби документите в които се среща ключовата дума

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

  13. Основен алгоритъм за търсенето на текстови данни Приложение на различните inverted index: • Термин -> Документ (за булеви заявки) t1 (d1), (d2), … • Термин -> Документ; Честота на термин в документа (по-добра резултатност) t1 (d1, tf1), (d2, tf2), … • Термин -> Документ; Позиция (търсене на фрази и търсене по близост) t1(d1, p1), (d2, p2), …

  14. Основен алгоритъм за търсенето на текстови данни 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

  15. Основен алгоритъм за търсенето на текстови данни Различни реализации на inverted index, като структура от данни • Сортиран списък +бърз за създаване+бърз за търсене-много бавен за промяна на информацията

  16. Основен алгоритъм за търсенето на текстови данни Различни реализации на inverted index, като структура от данни • B-дърво + бърз за търсене-създаването и промяната не може да бъде разпределена- сложна имплементация

  17. Основен алгоритъм за търсенето на текстови данни Различни реализации на inverted index, като структура от данни • Поредица от малки сегментни индекси +бързи за създаване+бързи за промяна на информацията-по-бавни за търсене

  18. Основен алгоритъм за търсенето на текстови данни Различни реализации на inverted index, като структура от данни • Hashtable + бърз за създаване, промяна и търсене- несортиран речник (трудности при търсене на wildcard и обединение на индекси)

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

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

  21. Основен алгоритъм за търсенето на текстови данни Общ процес на индексиране • Datastore • Filter • Sectioner • Lexer • Indexing engine

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

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

  24. Методи за оптимизиране скоростта на inverted index Няколко начина за оптимизиране скоростта на търсене: • Използване на различни preprocess стъпки за елиминиране на често срещани думи • Компресиране на данните • Компресиране на информацията за термините • Компресиране на информацията за срещането на термините • Елиминирани на части от заявката

  25. Методи за оптимизиране скоростта на inverted index Използване на различни preprocess стъпки за елиминиране на често срещани думи – стоп думи Стоп думите могат да намалят размерът на inverted index около на 50%. Думата “the” се среща около 7% в текст на английски!

  26. Методи за оптимизиране скоростта на 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

  27. Методи за оптимизиране скоростта на inverted index Компресиране на информацията за срещането на термините Документът Di е представен като Di – Di-1 ... 5600; 5679; 5684; 5685; 5780 … ... 79; 5; 1; 5; … • Числата се записват с по малко битове • Намалява големината на списъците с 10-15%

  28. Методи за оптимизиране скоростта на inverted index Компресиране на данните води до: Предимства • Намаляване големината на индексите • Драстично намаляване броя на дисковите операции Недостатъци • Увеличава се значително времето за създаване на индекс

  29. Методи за оптимизиране скоростта на inverted index Елиминирани на части от заявката Термин1, Термин2, ... Термин N Сортират се по-честота на срещане на термина (значимост) Термин 1 – 100% от документите Термин 2 – 80 % от документите Термин 3 – 60% от документите Възможност за определяне на стоп думи без статичното им задаване

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

  31. Търсене на текст в базите данни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 израз съдържащ: +задължителнаДума -неприсъстващаДума <думаСпонисъкРанк >думаСповисокРанк (група думи) ~отирцаниепрефикс* “фраза“

  32. Търсене на текст в базите данниMySQL 4.1 Boolean search mode • Резултатите не са сортирани по score • Score може да приема стойности от 1 до броя на откритите думите (възможно е score да бъде изчисляван с различен израз от изразът за търсене) • Няма ограничение за честотата на срещане на думите

  33. Търсене на текст в базите данни MySQL 4.1 MySQL не може да извършва: • Езиково търсене “test” != “tests” и символно търсене “C++” • Търсене на думи равни или по-малки от 3 символа по подразбиране • Да открива думи, които се срещат в повече от половината записи • Паралелно търсене в fulltext и обикновен индекс • Конфигурацията на собствени компоненти за разбор на думи (Lexer) и филтри (Filter)

  34. Търсене на текст в базите данни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;

  35. Търсене на текст в базите данни MySQL 4.1 SELECT id, MATCH (col1[,col2…]) AGAINST (‘exp1') AS score FROM articles WHERE MATCH (col1[,col2…]) AGAINST (‘exp1')

  36. Търсене на текст в базите данни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 може да приема стойност на колона или * (всички колони за таблицата)

  37. Търсене на текст в базите данни Microsoft SQL Server 2000 Синтаксис на expr за търсене с CONTAINS или CONTAINSTABLE • Дума или фраза • Префикс на дума или фраза • Дума в близост до друга • Езиково търсене на различни форми на думата • Булеви заявки

  38. Търсене на текст в базите данни Microsoft SQL Server 2000 Microsoft SQL Server 2000 не може да извършва: • Паралелно търсене по fulltext и обикновен индекс • Символно търсене “C++” • Лесно пренасяне на fulltext индекси между сървъри и техния backup • Конфигурацията на собствени компоненти за разбор на думи (Lexer) и филтри (Filter)

  39. Търсене на текст в базите данни Microsoft SQL Server 2000 Управление на fulltext индексите посредством запазените процедури • sp_fulltext_catalog (управление на каталозите) • sp_fulltext_database (инициализира база за работа с fulltext каталози) • sp_fulltext_service (конфигурира процесът на индексиране) • sp_fulltext_table (добавя или прехва индекси върху таблица)

  40. Търсене на текст в базите данни Microsoft SQL Server 2000 SELECT key, rank FROM CONTAINSTABLE(t_tree,text,’expr’, 100) SELECT id FROM t_tree WHERE CONTAINS(text, ‘expr’)

  41. Търсене на текст в базите данни 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’ – текст използван за класификация

  42. Търсене на текст в базите данни Oracle Oracle Text подържа конфигурация на: • Datastore за извличане на данни директно, от няколко колони (запазена процедура), файл или URL • Filter (реализиран като запазена процедура) • Lexer (възможно е и собствена имплементация)

  43. Търсене на текст в базите данни 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

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

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

  46. Използване на други алгоритми за търсене в текст IndexWriter – клас използван при запазване индекс на диск Analyzer – клас обединяващ функциите на Lexer и Filter Document – клас представляващ документ за индексиране; съдържа name/value колекция от стригове представяща съдържанието Query – клас използван за търсене QueryParser – помощен клас за разбор на заявката и създване на обект от тип Query

  47. Използване на други алгоритми за търсене в текст Индексиране на документ: 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); // индексиране на документа

  48. Използване на други алгоритми за търсене в текст Откриване на документ: Searcher searcher = new IndexSearcher(myFile); Query myQuery = QueryParser.parse(“expr”, “field”, myAnalyzer); Hits hits = searcher.search(myQuery); hits.doc(0).get(“dbid”);

  49. Търсене в естествен език Въпроси?

More Related