На главную О компании Продукты Технологии Публикации Партнерам in English: in English
На главную

   Помощь
Главная
Продукты
Общий форум для всех продуктов

RCO Law Reference Extractor SDK











Расширения стандартных решений
RCO for Oracle: поиск на русском языке
RCO for BackOffice: поиск на русском языке



Инструментарий разработчика
RCO Fact Extractor SDK
RCO Text Categorization Engine
RCO Address Parser
RCO Database Record Cleaner
RCO Morphology SDK
RCO Morphology Professional SDK
RCO Information Extraction Service



Приложения RCO Fact Extractor SDK
RCO Deduplicator SDK
RCO TopExtractor SDK
RCO Glossary Maker SDK
RCO Block Parser SDK
RCO Law Reference Extractor SDK



Инструментарий аналитика
RCO Fact Extractor Desktop
RCO Zoom



Архив продуктов (более не поддерживаются)
RCO Syntactic Engine SDK
RCO Semantic Network SDK
RCO Pattern Extractor SDK
RCO Entity Extractor SDK




Форум

Manowar

 05.07.04, 13:46
Стоп слова - как их определить?
Подскажите пожалуйста каким образом можно программно определить слова, распознаваемые RCO как стоп-слова? Сейчас я перед передачей строки поиска в запрос ручками вырезаю все слова с длиной < 4. Можно ли каким-то образом оптимизировать это и удалять из запроса действительно только стоп слова?
Ответить

Плешко Владимир

 05.07.04, 14:26
re: Стоп слова - как их определить?
Укажите, пожалуйста, о каком продукте идет речь: RCO for Oracle или RCO for Backoffice.
Ответить

Manowar

 05.07.04, 14:29
re: re: Стоп слова - как их определить?
>Укажите, пожалуйста, о каком продукте идет речь: RCO for Oracle или RCO for Backoffice.
RCO for BackOffice. Поиск ведется по данным в SQL Server.
Ответить

Плешко Владимир

 05.07.04, 17:47
re: re: re: Стоп слова - как их определить?
Сразу короткий ответ: готовыми средствами mssearch или mssql - нельзя.

Теперь длинный ответ:

В разделе документации "Редактирование списка стоп-слов" приведена информация по расположению и редактированию списка стоп-слов. Все слова запроса, входящие в этот список, mssearch молча уничтожает.

Более того, если в листе дерева запроса (предикат CONTAINS) оказались только стоп-слова, mssearch выдаст ошибку "A clause of the query contained only ignored words.". Напрашивается вариант, ловить ошибку на этапе отображения и выводить, что ничего не найдено. Так делают довольно часто.

Самый простой способ избежать этой ошибки - использовать предикат FREETEXT. Минусы - поиск всегда будет идти со связкой ИЛИ. Этот и следующий варианты - для ленивых.

Еще способ - очистить файл стоп-слов (noise.rus). Тогда стоп-слова не будут удаляться из запроса и из индекса. На небольших объмах (до 10 тыс документов) вы это не заметите. Работать будет, но это не очень спортивно.

Если подходить к проблеме основательно, то стоило бы написать com-объект или xp_... для mssql, который бы через реестр находил бы список стоп-слов для заданного языка, загружал бы его, разбирал бы запрос, реализуя язык запросов вида (+, -, "" как в поисковых машинах) или принимал бы доп. параметр (и, или, фраза), или принимал бы запрос на языке mssearch (oledb диалект, что используется в mssql), корректно бы его преобразовывал, удаляя ветви, состоящие целиком из стоп-слов, да еще бы выдавал в качестве побочного эффекта стоп-слова, удаленные из запроса, и тогда такому объекту цены бы не было, в смылсе благодарности от пользователей (http://www.sql.ru/forum/actualtopics.aspx?search=noise&submit=%CD%E0%E9%F2%E8&bid=1).

К слову, в Oracle так и сделано - ветки, состоящие целиком из стоп-слов, удаляются. Хотя и там нельзя получить информамию, какие слова были удалены из запроса.

Если ms в очередной версии своего поиска не решит эту проблему, поставим себе в план.
Ответить
Новое сообщение






Контакты

тел./факс: +7 495 287-9887    e-mail: info@rco.ru