Семантический анализ текста istio

Алан-э-Дейл       10.03.2023 г.

Содержание

Становимся профессионалами поиска информации в интернете

Всем привет! В сегодняшней статье я расскажу вам о том, как научиться быстрее и качественнее отыскивать нужную вам информацию. Однажды мне, по долгу службы, пришлось выполнять заказ, информации по которому было совсем мало и найти ее было тяжело. Приходилось перелопачивать пол интернета, чтобы найти нужную информацию. Именно в тот момент, я решил поближе познакомиться с расширенными возможностями поисковых систем. В результате знакомства были найдены интересные способы поиска, которые в дальнейшем очень помогли закончить тот сложный  проект.

Существуют три основных способа поиска информации в Интернет:

  1. Указание адреса страницы.
  2. Передвижение по гиперссылкам.
  3. Обращение к поисковой системе (поисковому серверу).

О последнем пункте и поговорим дальше. В этой статье речь пойдет об известных поисковиках, о принципах их работы и о расширенных возможностях поисковых систем. Вы узнаете некоторые интересные способы поиска и получите массу полезных советов, которые непременно облегчат вам поиск нужной информации в интернете.

Поиск по нескольким словам

Как выяснить для каждой ячейки большого диапазона, присутствует ли в ней хотя бы одно из списка слов? Да так, чтобы слово не просто содержалось внутри строки, в том числе внутри других слов, а находить именно целые слова? А если нужно найти пару сотен слов в десятках тысяч ячеек?

Найти любое слово из списка

Настройка !SEMTools с лёгкостью решает такого рода проблемы. Более того, практически вне зависимости от количества слов, распознавание их наличия происходит очень быстро даже в диапазоне из 10 000 ячеек и более.

Чтобы найти список слов диапазоне ячеек с помощью !SEMTools, нужно:

  1. скопировать в соседний столбец диапазон, в котором мы хотим найти список слов. Это нужно для того, чтобы не стереть исходные данные,
  2. вызвать макрос на панели настройки,
  3. выбрать список слов, которые необходимо найти,
  4. нажать OK.

Макрос дает проверить, есть ли хотя бы одно слово из списка в ячейке.

Конкретные примеры использования

Данная процедура обычно полезна перед двумя другими — извлечь слова из списка и удалить из текста список слов. Почему не производить их сразу? Дело в том, что первый более медленный, а второй не даст понимания, какие ячейки затронула операция удаления.

Есть множество случаев применения данного макроса. Специалисты по контекстной рекламе могут искать маркеры покупки, аренды, отзывы, многие хранят собственные длинные списки минус-слов, наличие которых в запросе означает, что его необходимо не включать в рекламную кампанию.

Если вас интересует, присутствуют ли в прайс-листе товары определенных производителей, список которых у вас уже имеется, или каковы остатки товара на складе по этим позициям, вам также может пригодиться данный макрос.

Найти все слова из списка

Данная процедура производит тот же поиск по словам, но с кардинальным отличием. Ключевое условие — чтобы ВСЕ слова содержались в ячейке, только тогда она возвращает ИСТИНА.

Поиск в заголовках веб-страниц

Заголовки веб-страниц находятся в верхней части браузера и в результатах поиска. Вы можете ограничить свой поиск только заголовками веб-страниц с помощью команды поиска allintitle. Термин allintitle – это поисковый оператор, специфичный для Google, который возвращает результаты поиска, ограниченные поисковыми терминами, найденными в заголовках веб-страниц.

Например, если вы хотите получить результаты поиска только со словосочетанием «теннисный чемпионат», вы должны использовать этот синтаксис: allintitle: теннисный чемпионат

Это вернет результаты поиска Google со словами «теннисный чемпионат» в заголовках веб-страниц.

«Горячий» расширенный поиск от Google. 16 способов

Некоторые методы я уже затрагивал выше, некоторые еще нет. Привожу для полноты весь список.

Исключение из Google поиска

Чтобы исключить из поисковой выдачи какое либо слово, фразу, символ и т.п., достаточно перед ним поставить знак “-” (минус), и оно не появится в результатах поиска. Для примера, я ввёл в строку поиска следующую фразу: “бесплатный хостинг – ru” и в поисковой выдаче нет ни одного .ru сайта, кроме оплаченных рекламных объявлений.

Поиск по синонимам

Используйте символ “~” для поиска схожих слов к выбранному. Например в результате выражения: “~лучшие фильмы -лучшие” вы увидите все ссылки на страницы, содержащие синонимы слова “лучшие”, но ни одно из них не будет содержать этого слова.

Неопределённый поиск

На тот случай, если вы не определились с конкретным ключевым словом для поиска, поможет оператор “*”. Например фраза “лучший редактор * изображений” подберёт лучшие редакторы для всех типов изображений, будь то цифровые, растровые, векторные и т.д.

Поиск на выбор из вариантов

Используя оператор “|”, можно осуществить Google поиск по нескольким сочетаниям фраз, заменяя несколько слов в различных местах. Например, введём фразу “купить чехол | ручку” выдаст нам страницы, содержащие либо “купить чехол”, либо “купить ручку”

Значение слова

Чтобы узнать значение того или иного слова, достаточно ввести в поисковую строку “define:” и после двоеточия искомую фразу.

Поиск по определённому сайту

Чтобы осуществить поиск ключевых слов только по одному сайту, достаточно прибавить к искомой фразе следующий синтаксис – “site:”.

Обратные ссылки

Чтобы узнать расположение ссылок на интересующий сайт, достаточно ввести следующий синтаксис: “links:” и далее адрес интересующего сайта.

Конвертер величин

Поисковая система Google также умеет конвертировать величины по запросу пользователя. Например, нам нужно узнать, сколько составляет 1 кг в фунтах. Набираем следующий запрос: “1 кг в фунтах”

Конвертер валют

Для того, чтобы узнать курс валют по официальному курсу, набираем следующий поисковой запрос: “1 в ”

Время по городу

Если хотите узнать время по какому либо городу, то используйте синтаксис: “time” или русский аналог “время” и название города.

Поиск по типам файлов

Если вам необходимо найти что-то по конкретному типу файла, то у Google есть оператор “filetype:” который осуществляет поиск по заданному расширению файла.

Поиск кэшированной страницы

У Google есть собственные сервера, где он хранит кэшированные страницы. Если нужна именно такая, то воспользуйтесь оператором: “cached:”

Прогноз погоды по городу

Ещё одним оператором поиска у Google является оператор погоды. Достаточно вбить “weather” и город, как вы увидите, будет у вас дождь или нет

Переводчик

Можно переводить слова сразу, не отходя от поисковика. За перевод отвечает следующий синтаксис: “translate into ”

P.S. Комбинируя различные варианты параметров можно очень сильно сократить диапазон поиска и найти то что нужно. Надеюсь, приведенные выше примеры помогут вам в поиске информации.

7 полезных советов при поиске информации

  1. Составлять поисковый запрос нужно так, чтобы максимально сузить количество вариантов в выдаче
  2. Используйте фильтрацию по времени – это позволит найти более-менее актуальную информацию. Благо сейчас все крупные поисковые системы предоставляют расширенный поиск, в котором можно установить диапазон дат.
  3. Корректный вопрос, задаваемый поисковику, должен состоять как минимум из двух ключевых слов тогда поисковику будет гораздо проще отыскать нужную информацию
  4. Для поиска информации используйте разные поисковые машины. Несмотря на то, что все поисковики построены на общих принципах, алгоритмы у них могут различаться. Поэтому может случиться так, что то, что не смог найти Yandex, выдаст Google
  5. Если вы ищете какие-либо товары или услуги в вашем городе, уточняйте регион поиска(например Москва). Это уменьшит количество результатов, но найденные результаты будут более релеванты вашим поисковым запросам
  6. Используйте больше существительных для поиска.
  7. Используйте синонимы, если по запросу не было найдено то, что нужно

Главный фактор успешного и быстрого поиска – это формулировка запроса для поисковой системы. Если вы умеете сообразить, какие нужны ключевые слова для устраивающего вас результата – вы король поиска!

Поиск определенного текста с помощью регулярных выражений

Класс System.Text.RegularExpressions.Regex можно использовать для поиска строк. Такой поиск может отличаться по сложности от самых простых до очень сложных текстовых шаблонов.

В следующем примере кода выполняется поиск слов «the» и «their» в предложении без учета регистра. Статический метод Regex.IsMatch выполняет поиск. В метод передается строка и шаблон поиска. В нашем примере третий аргумент задает поиск без учета регистра. Для получения дополнительной информации см. System.Text.RegularExpressions.RegexOptions.

Шаблон поиска описывает текст для поиска. Следующая таблица описывает каждый элемент шаблона поиска. (В таблице ниже используется один , который в строке C# необходимо экранировать как ).

Шаблон Значение
соответствует тексту «the»
Соответствует 0 или 1 вхождению «eir»
Соответствует пробелу.

Совет

Методы обычно удобнее при поиске точного совпадения со строкой. Регулярные выражения больше подходят при поиске определенных шаблонов в исходной строке.

Как найти

Вордстат — бесплатный сервис поисковой системы Яндекс.

Искать ключевые слова и фразы можно с помощью специальных онлайн-сервисов:

  1. «Яндекс.Вордстат». Инструмент удобнее всего использовать вместе с расширением Yandex Wordstat Helper, которое делает сбор и сортировку ключей более удобными.
  2. Планировщика Google. Бесплатный инструмент позволяет подобрать новые ключевые слова, узнать конкурентность, создать поисковые кампании на основе исследования запросов.
  3. «Букварис». Сервис помогает найти большее количество ключей с указанием частотности в точном соответствии.

Далее необходимо объединить все ключи, собранные с помощью 3 сервисов, занести их в общую таблицу, удалить дубликаты, названия компаний конкурентов, другие регионы и т.д.

Будущая работа™

Мы создали элементарную информационно-поисковую систему всего из нескольких десятков строчек кода Python! Код целиком приведён на Github. Также я написал вспомогательную функцию, загружающую аннотации статей Википедии и создающую указатель. Установите файл requirements, запустите его в выбранной вами консоли Python и получайте удовольствие от работы со структурами данных и операциями поиска.

Данная статья написана с единственной целью — привести пример реализации концепции поиска и продемонстрировать, что поисковые запросы (даже с ранжированием) могут выполняться очень быстро (например, на своём ноутбуке с «медленным» Python я могу осуществлять поиск и ранжирование среди 6,27 миллионов документов). Статью ни в коем случае не следует рассматривать как инструкцию по созданию программного обеспечения промышленного уровня. Моя поисковая машина запускается полностью в памяти ноутбука, но такие библиотеки, как Lucene, используют сверхпроизводительные структуры данных и даже оптимизируют дисковые операции, а такие программные комплексы, как Elasticsearch и Solr, распространяют библиотеку Lucene на сотни, а иногда и тысячи машин.

Но даже наш простенький алгоритм можно существенно улучшить. Например, мы молчаливо предполагали, что каждое поле документа вносит в релевантность одинаковый вклад, но, если поразмыслить, так быть не должно — ведь термин, присутствующий в заголовке, очевидно, должен иметь больший вес, чем термин, встречающийся в содержании аннотации. Другой перспективной идеей может стать более продвинутый синтаксический анализ запроса — должны ли совпадать все термины? только один термин? или несколько? Зная ответы на эти вопросы, можно повысить качество работы поисковых запросов. Также — почему бы не исключить из запроса определённые термины? почему бы не применить операции AND и OR к отдельным терминам? Можно ли сохранить указатель на диск и вывести его, таким образом, за пределы оперативной памяти ноутбука?

Благодаря своей универсальности и распространённости, Python уже который год находится в топе языков программирования и де-факто стал основным языком для работы с данными. Если вы хотите расширить свои компетенции и освоить этот язык под руководством крутых менторов — приходите на курс Fullstack-разработчик на Python.

Узнайте, как прокачаться в других инженерных специальностях или освоить их с нуля:

  1. Аннотация — это, как правило, первый абзац или первая пара предложений статьи в Википедии. Полный объём заархивированного XML-файла составляет приблизительно 796 Мбайт. Если вы захотите самостоятельно поэкспериментировать с кодом, можно воспользоваться доступными архивами меньшего размера (с ограниченным количеством аннотаций); синтаксический разбор и индексирование XML-файла займут довольно большое время и потребуют значительных объёмов памяти. 

  2. Весь набор данных и указатель будут храниться в памяти, поэтому нет нужды также хранить в памяти необработанные данные. 

  3. Много ли преимуществ даёт фильтр выделения основы слова? Это тема для отдельного обсуждения. Применение такого фильтра позволит уменьшить общий размер указателя (то есть уменьшить количество уникальных слов), однако операция выделения основы слова базируется на эвристике, и мы, сами того не желая, можем отсеять потенциально ценную информацию. Например, если слова университет, универсальный, университеты и универсиада усечь до основы универс, мы потеряем способность различать значения этих слов, а это отрицательно скажется на релевантности. Более подробная информация о выделении основы слов (и лемматизации) приведена в этой отличной статье. 

  4. При решении задачи мы используем оперативную память ноутбука. Но на практике применяется другой способ, не связанный с хранением указателя в памяти. Поисковая система Elasticsearch хранит данные в обычном текстовом формате JSON на диске, в самой библиотеке Lucene (базовой библиотеке поиска и индексирования) хранятся только индексированные данные. Многие другие поисковые системы просто возвращают упорядоченный список идентификаторов документов, который затем используется для извлечения и выдачи пользователям данных из базы данных или другого сервиса. Особенно это актуально для крупных корпораций, в которых полное реиндексирование всех данных обходится недёшево. Как правило, в поисковой системе хранятся только данные, связанные с обеспечением релевантности (а не атрибуты, используемые только для презентационных целей).

  5. Для более глубокого понимания алгоритма рекомендую ознакомиться со следующими публикациями: What is TF-IDF? и Term frequency and weighting

Vantage-point tree

Посмотрим, как работает vantage-point tree . Оно напоминает ball-tree, используемый в векторных пространствах. Его структура представляет собой бинарное дерево. Рассмотрим, как оно строится. Мы берем в качестве вершины некоторый объект из множества (vantage-point) и рисуем вокруг него окружность (изображена на рисунке ниже).

Все объекты, находящиеся внутри окружности (то есть на расстоянии от vantage-point), идут в левую часть дерева. Остальные — в правую часть. Далее процедура повторяется для каждого поддерева. Чтобы дерево было сбалансировано, надо стараться выбирать S так, чтобы исходное множество объектов делилось на примерно равные части. Это несложно сделать, если заранее просчитать все расстояния и найти их медиану.

Предположим, мы хотим найти K ближайших соседей к точке (отмечена красным крестиком на рисунке). Мы еще не нашли ни одной точки, поэтому в качестве ближайшего кандидата берем вершину дерева (возможно, потом мы удалим эту точку). Запоминаем значение — текущее расстояние до самого дальнего кандидата. Теперь надо решить, нужно ли нам искать в обоих поддеревьях или достаточно проверить только одно и них.

Так как точка находится внутри нашей окружности, мы должны сначала проверить «внутреннее» поддерево. Находим в этом поддереве синюю точку и обновляем . Надо ли нам проверять «внешнее» поддерево? Мы рассмотрели все точки внутри окружности, но так как (расстояние от X до окружности), за пределами окружности могут существовать более близкие точки. Значит, нам надо проверить «внешнее» поддерево.

Однако если мы уже собрали K ближайших точек, а , то проверять «внешнее» поддерево нет необходимости. Это и обеспечивает выигрыш в производительности по сравнению с полным перебором.

Почему не получается найти нужную информацию в интернете

Итак, всего можно выделить две основные причины.

Первая — то, что вы ищете, попросту отсутствует в сети. Например, если вы учитесь в университете и ищете информацию на какую-то узкоспециализированную тему, вполне возможно, что ничего полезного для себя вы не найдете. Либо вам будут предлагаться материалы на похожие или приближенные к вашей темы, либо вы будете находить превью платного контента, за доступ к которому необходимо будет платить.

И вторая причина отсутствия нужной информации при поиске — это неправильная постановка запроса.

В первом случае мы вам помочь, к сожалению, никак не сможем, тут уж ничего не поделаешь, а вот что можно сделать во втором — сейчас расскажем.

Чем отличается поиск информации в Яндексе и Google для бизнеса

Ладно, шутки в сторону, настало время и серьезных примеров. Для владельцев сайтов, думаю, будет полезно узнать, как отличается выдача в этих поисковиках по важным для них запросам.

У нас была статья, в которой мы уже говорили о нынешней ситуации с выдачей в Яндексе. Что с этим делать и как жить – рассказывали здесь.

Вот, например, выдача по запросу «ремонт авто Москва» в Яндексе:

Куча сервисов Яндекса + реклама.

В Google получше: реклама также есть, но сервисов Яндекса в разы меньше, а значит, и владельцам бизнесов легче пробиться в ТОП.

И подобная ситуация, к сожалению, встречается нередко. Особенно «страдают» такие тематики, как установка натяжных потолков, монтаж пластиковых окон, продажа техники, услуги различных мастеров и т.д.

Поэтому перед продвижением сайта рекомендую сразу проверять выдачу по важным запросам в обеих поисковых системах. Возможно, вам больше подойдет одна из них (только Google или только Яндекс), и вы все силы направите на продвижение сайта именно под нее.

Также Яндекс иногда не может понять, что от него хочет пользователь. Например, вот такая выдача по запросу «заказ такси в Москве без водителя»:

То есть Яндекс увидел слово «такси» и решил, что именно это пользователю и нужно.

В Google другая картина:

Google понял, что от него нужно, в  отличие от Яндекса.

Чётко формулируйте запрос

Прежде всего нужно понять: что именно мы хотим узнать? Необходимо сформулировать тему как можно более узко и задать максимально конкретный вопрос.

Например, по запросу «Тесла» Яндекс выдаст информацию как об учёном, так и о марке автомобиля. Запрос «Никола Тесла» покажет все сведения о знаменитом физике. А «Никола Тесла изобретения» ответит на конкретный вопрос: какой вклад в науку он сделал.   

Если с первой попытки не получилось найти нужные данные  — не отчаивайтесь. Внимательно посмотрите на заголовки в выдаче и постарайтесь понять, как переформулировать запрос, чтобы поисковик вас понял. Возможно, помогут синонимы или пара уточняющих слов. Подсказки, которые возникают в поисковой строке при наборе текста, также могут натолкнуть на мысль, как сделать запрос точнее.

Важно понимать, что спросить поисковик — не то же самое, что спросить человека. Нейросети всё лучше учатся понимать людей: строчные и заглавные буквы, язык раскладки, опечатки и орфографические ошибки уже не являются для них проблемой

Но чтобы выдача соответствовала цели, нужно правильно подобрать ключевые слова. 

Релевантность

С помощью элементарных команд Python мы создали довольно быстро работающую поисковую систему, но остался один аспект, которого явно не хватает в нашей маленькой поисковой машине, а именно не учтён принцип релевантности. Сейчас программа поиска составлена таким образом, что пользователь получает неупорядоченный список документов и должен сам выбирать из полученного списка действительно нужные ему документы. Но, если результатов очень много, справиться с такой задачей не под силу никакому пользователю (в нашем примере OR программа выдала почти 50 000 результатов).

Вот тут-то и пригодится алгоритм ранжирования по релевантности, то есть алгоритм, который присваивал бы каждому документу собственный ранг — насколько точно документ соответствует запросу, и затем упорядочивал бы полученный список по таким рангам. Самый примитивный и простой способ присвоения ранга документу при выполнении запроса состоит в том, чтобы просто подсчитать, как часто в таком документе упоминается конкретное слово. Идея вроде бы логичная: чем чаще в документе упоминается термин, тем больше вероятность того, что это именно тот документ, который мы ищем!

Частота вхождения терминов

Расширим наш класс данных Abstract, чтобы можно было вычислять и сохранять частоту вхождения терминов в процессе индексирования. Соответственно, если нам потребуется ранжировать наш неупорядоченный список документов, у нас будет для этого вся нужная информация:

При индексировании должен осуществляется подсчёт частот вхождения терминов:

Внесём изменения в функцию поиска таким образом, чтобы к документам результирующего набора можно было применить ранжирование. Выборку документов будем осуществлять с помощью одного и того же логического запроса из указателя и базы данных документов, а затем для каждого документа такого результирующего множества подсчитаем, сколько раз встречается в этом документе каждый термин.

Обратная частота документов

Полученная функция работает уже намного лучше, но у нее всё равно имеются определённые недостатки. Мы подразумевали, что при оценке релевантности запроса все термины запроса имеют один и тот же вес. Но, как нетрудно догадаться, при определении релевантности некоторые термины имеют либо крайне малую, либо вообще нулевую различающую способность; например, в наборе из большого количества документов, относящихся к пиву, термин «пиво» будет встречаться практически в каждом документе (ранее мы уже пытались обойти эту проблему, исключив из указателя 25 самых распространённых английских слов). Поиск слова «пиво» приведёт к тому, что мы получим лишь маловразумительный набор хаотично упорядоченных документов.

Чтобы решить проблему, добавим в наш алгоритм определения релевантности ещё один компонент, занижающий в итоговом результате вес терминов, очень часто встречающихся в указателе. В принципе, можно было бы использовать значение частоты вхождения термина (то есть насколько часто такой термин встречается во всех документах), однако на практике вместо этого значения используется значение частоты документов (то есть какое количество документов в указателе содержат данный термин). Поскольку наша задача заключается в ранжировании именно документов, формировать статистику имеет смысл на уровне документов.

Обратная частота документов для термина определяется делением количества документов (N) в указателе на количество документов, содержащих термин, и взятием логарифма полученного частного.

Обратная частота документов (IDF); формула взята из https://moz.com/blog/inverse-document-frequency-and-the-importance-of-uniqueness

При ранжировании значение частоты термина умножается на значение обратной частоты документа, и, следовательно, документы, в которых присутствуют термины, редко встречающиеся в наборе документов, будут более релевантными . Значение обратной частоты документов можно легко рассчитать по указателю:

Поиск текста по нескольким файлам в Notepad++

В данной статье будет показано, как с помощью этой программы можно найти фразу среди нескольких документов.

К примеру, если вспомнилась какая-нибудь цитата из книги, но никак не удается вспомнить, из какой именно, можно воспользоваться поиском по тексту сразу среди нескольких книг.

Шаг 1. Поместите нужные текстовые файлы (поддерживаются любые текстовые форматы, кроме закрытых, например, MS Word) в один каталог. В данном примере мы поместили в общую папку несколько книг:

 Шаг 2. Откройте текстовый редактор Notepad++.

Шаг 3. Откройте меню «Поиск» — «Найти в файлах» либо нажмите «Ctrl+Shift+F». Откроется окно:

Шаг 4. В поле «Найти» введите фразу, которую требуется найти в текстовых файлах.

Шаг 5. Затем нажмите кнопку с многоточием справа от поля «Папка» и укажите каталог, в котором находятся файлы, по которым будет выполняться поиск.

Текстовый редактор Notepad++ умеет также искать и по файлам во вложенных папках.

Для этого должна стоять галочка напротив пункта «Во всех подпапках».

Если необходимо учитывать регистр букв в поисковой фразе (то есть программа будет находить текст точно так, как указано в поле «Найти»), то убедитесь, что галочка «Учитывать регистр» установлена.

В данном случае окно «Найти в файлах» было заполнено так:

Шаг 6. Нажмите кнопку «Найти все». Если в указанном каталоге содержится много текстовых файлов, программа на некоторое время может «зависнуть», т. к. процесс поиска никак не отображается. Это нормально, необходимо просто подождать.

Процесс поиска текста в файлах в программе Notepad++

Попробуйте несколько поисковых систем

Не впадайте в рутину использования одной поисковой системы для всех ваших поисковых запросов. Каждая поисковая система возвращает разные результаты. Кроме того, существует множество поисковых систем, которые фокусируются на определенных нишах: игры, блоги, книги, форумы и т.д.

Чем внимательнее вы будете выбирать поисковую систему, тем успешнее будут ваши поиски. Проверьте этот список поисковых систем, чтобы использовать в следующий раз, когда вы что-то ищете.

У вас будет большой соблазн воспользоваться вашей любимой поисковой системы и использовать только самые известные функции; тем не менее, большинство поисковых систем имеют широкий спектр расширенных опций поиска, инструменты и сервисы, которые позволяют здорово экономить время. Всё это может сделать ваши поиски более продуктивными.

Кроме того, если вы только начинаете изучать, как искать в интернете, легко оказаться перегруженным огромным количеством информации, которая доступна вам, особенно если вы ищете что-то очень конкретное. Не сдавайтесь! Продолжайте пробовать, и не бойтесь пробовать новые поисковые системы, новые комбинации фраз, новые методы веб-поиска и т.д.

Гость форума
От: admin

Эта тема закрыта для публикации ответов.