Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 FREETEXT - как это работает?  [new]
tester2000
Member

Откуда:
Сообщений: 534
Всем доброго времени суток.
Помогите разобраться. В боле описание предиката FREETEXT - "This predicate searches for values that match the meaning and not just the exact wording of the words in the search condition."
Кто-нибудь может объяснить, каким образом происходит количественная оценка meaning? Как оценивается смысловая составляющая фразы? Это прям революция какая-то в искусственном интеллекте.
28 янв 14, 22:57    [15485291]     Ответить | Цитировать Сообщить модератору
 Re: FREETEXT - как это работает?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Там же ниже описано
freetext_string is wordbroken, stemmed, and passed through the thesaurus.
Никакого ИИ, сплошь рукотворные алгоритмы.
29 янв 14, 10:18    [15486517]     Ответить | Цитировать Сообщить модератору
 Re: FREETEXT - как это работает?  [new]
tester2000
Member

Откуда:
Сообщений: 534
Glory, спасибо за ответ.
Как я понял freetext_string is wordbroken, stemmed, and passed through the thesaurus. - это описание действий над поисковой фразой. Собственно то, что демонстрирует функция sys.dm_fts_parse.
Уточню вопрос. Выборка по CONTAINS(* 'FORMSOF(INFLECTIONAL, ВЕЛОСИПЕД)') и FREETEXT(*,'ВЕЛОСИПЕД') вернет аналогичные результаты?
29 янв 14, 10:59    [15486775]     Ответить | Цитировать Сообщить модератору
 Re: FREETEXT - как это работает?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
tester2000
Glory, спасибо за ответ.
Как я понял freetext_string is wordbroken, stemmed, and passed through the thesaurus. - это описание действий над поисковой фразой. Собственно то, что демонстрирует функция sys.dm_fts_parse.
Уточню вопрос. Выборка по CONTAINS(* 'FORMSOF(INFLECTIONAL, ВЕЛОСИПЕД)') и FREETEXT(*,'ВЕЛОСИПЕД') вернет аналогичные результаты?


в частном случае - да, в общем - нет.

Например, если использовать тезаурус и добавить для слова "велосипед" синоним "бентли", то freetext вернет также и записи с вхождением "бентли", а contains(...inflectional не вернет их.
29 янв 14, 11:07    [15486813]     Ответить | Цитировать Сообщить модератору
 Re: FREETEXT - как это работает?  [new]
tester2000
Member

Откуда:
Сообщений: 534
Winnipuh, спасибо.
Нет, именно без использования тезауруса.
29 янв 14, 11:08    [15486823]     Ответить | Цитировать Сообщить модератору
 Re: FREETEXT - как это работает?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
tester2000
Winnipuh, спасибо.
Нет, именно без использования тезауруса.


в вашем примере - да, но в общем случае, как было сказано - есть отличия

http://technet.microsoft.com/ru-ru/library/ms176078.aspx
29 янв 14, 11:12    [15486843]     Ответить | Цитировать Сообщить модератору
 Re: FREETEXT - как это работает?  [new]
tester2000
Member

Откуда:
Сообщений: 534
Ага, спасибо, собственно как и сказал Glory - никакого ИИ.
А можете ответить на еще вопрос.
SELECT * FROM sys.dm_fts_parser('FORMSOF( INFLECTIONAL, "ЗАПЧАСТИ" )', 1049, 0, 0)
В результате отсутвует лемма "ЗАПЧАСТЬ". Я понимаю, что корпус русского языка включить в MSSQL вряд ли получиться, но это явная ошибка стеммера.
Как это можно исправить? В боле есть информация о подключении пользовательских словарей, но она очень скудная.
29 янв 14, 11:19    [15486890]     Ответить | Цитировать Сообщить модератору
 Re: FREETEXT - как это работает?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
tester2000
Ага, спасибо, собственно как и сказал Glory - никакого ИИ.
А можете ответить на еще вопрос.
SELECT * FROM sys.dm_fts_parser('FORMSOF( INFLECTIONAL, "ЗАПЧАСТИ" )', 1049, 0, 0)
В результате отсутвует лемма "ЗАПЧАСТЬ". Я понимаю, что корпус русского языка включить в MSSQL вряд ли получиться, но это явная ошибка стеммера.
Как это можно исправить? В боле есть информация о подключении пользовательских словарей, но она очень скудная.


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

Я так и делаю, иначе задолбут своими пожеланиями. Вы же видите - майкрософт не заморачивается ;-)
29 янв 14, 11:23    [15486911]     Ответить | Цитировать Сообщить модератору
 Re: FREETEXT - как это работает?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
а так работает?

SELECT * FROM sys.dm_fts_parser(N'FORMSOF( INFLECTIONAL, "ЗАПЧАСТИ" )', 1049, 0, 0)
29 янв 14, 11:24    [15486921]     Ответить | Цитировать Сообщить модератору
 Re: FREETEXT - как это работает?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Winnipuh
а так работает?

SELECT * FROM sys.dm_fts_parser(N'FORMSOF( INFLECTIONAL, "ЗАПЧАСТИ" )', 1049, 0, 0)


точнее, если так то работает вроде и для ед. и мн. числа

SELECT * FROM sys.dm_fts_parser(N'FORMSOF( INFLECTIONAL, "ЗАПЧАСТЬ" )', 1049, 0, 0)


Ну так реализовано, т.е. для ед. числа будут обработаны и ед. и мн. А если юзер осознанно дает мн. число - тогда только оно
29 янв 14, 11:26    [15486936]     Ответить | Цитировать Сообщить модератору
 Re: FREETEXT - как это работает?  [new]
tester2000
Member

Откуда:
Сообщений: 534
Нет))
Вариант с тезаурусом я уже думал, только как я понял, при подключении тезауруса отваливается стемминг. Если это так, то в тезаурус необходимо будет включать также и морформы - но это сработает.
29 янв 14, 11:27    [15486946]     Ответить | Цитировать Сообщить модератору
 Re: FREETEXT - как это работает?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
tester2000
Нет))
Вариант с тезаурусом я уже думал, только как я понял, при подключении тезауруса отваливается стемминг. Если это так, то в тезаурус необходимо будет включать также и морформы - но это сработает.


судя по тому, что разное поведения для слова 'запчасти' и 'части' (тут честно), видимо бага в реализации русского языка
29 янв 14, 11:30    [15486959]     Ответить | Цитировать Сообщить модератору
 Re: FREETEXT - как это работает?  [new]
tester2000
Member

Откуда:
Сообщений: 534
Winnipuh, раз пошла такая насыщенная беседа.
Вы можете проккоментировать вот это http://msdn.microsoft.com/ru-ru/library/hh231252.aspx ?
Что понимается под собственный файл словаря ?
29 янв 14, 11:36    [15486996]     Ответить | Цитировать Сообщить модератору
 Re: FREETEXT - как это работает?  [new]
Glory
Member

Откуда:
Сообщений: 104760
tester2000
Что понимается под собственный файл словаря ?

Это неправильный перевод
changing custom dictionary files имхо переводится как "изменение файлов пользовательского словаря"
29 янв 14, 11:39    [15487012]     Ответить | Цитировать Сообщить модератору
 Re: FREETEXT - как это работает?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
tester2000
Winnipuh, раз пошла такая насыщенная беседа.
Вы можете проккоментировать вот это http://msdn.microsoft.com/ru-ru/library/hh231252.aspx ?
Что понимается под собственный файл словаря ?


Не могу, поскольку я не использую, зажат версиями, т.е. не могу использовать то, что есть только в 2012, мне нужна совместимость с 2008.
Хотя тема интересная, возможно то, что вам надо.
Но вы же понимаете, можете получить побочные эффекты.
29 янв 14, 11:40    [15487014]     Ответить | Цитировать Сообщить модератору
 Re: FREETEXT - как это работает?  [new]
tester2000
Member

Откуда:
Сообщений: 534
Glory, значит поддержка пользовательских словарей существует? Если да, ими можно корректировать ошибки стеммера?
29 янв 14, 11:42    [15487029]     Ответить | Цитировать Сообщить модератору
 Re: FREETEXT - как это работает?  [new]
Glory
Member

Откуда:
Сообщений: 104760
tester2000
значит поддержка пользовательских словарей существует?

Это вопрос с подвохом ?
"Можно настроить работу средства разбиения по словам для определенного языка, создав для этого языка собственный файл словаря. " В оригинале - creating a language-specific custom dictionary file.
29 янв 14, 11:46    [15487053]     Ответить | Цитировать Сообщить модератору
 Re: FREETEXT - как это работает?  [new]
tester2000
Member

Откуда:
Сообщений: 534
Glory, типа того. Просто мне не очень нравиться, что в качестве примера указан линк на SharePoint. На мой взгляд это говорит о том, что функционал как минимум непопулярен.
29 янв 14, 11:48    [15487072]     Ответить | Цитировать Сообщить модератору
 Re: FREETEXT - как это работает?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
tester2000
Glory, типа того. Просто мне не очень нравиться, что в качестве примера указан линк на SharePoint. На мой взгляд это говорит о том, что функционал как минимум непопулярен.


просто используются те же сервисы.

Кстати, почитайте, я не совсем понимаю, как помогут эти словари в вашем случае

The following two examples describe typical word breaker behavior and how an entry in the custom dictionary can affect that behavior.
A word breaker might break the token “IT&T” immediately before and after the ampersand (&), resulting in the three tokens “IT”, “&”, and “T”. However, if the token “IT&T” is in the custom dictionary of the same language as the word breaker that is being used, the word breaker does not break that token (at crawl time or query time). If “IT&T” is in the custom dictionary, and if a document does not contain "IT" or "T" but does contain "IT&T", a query that contains "IT" or "T" but not "IT&T" does not return that document in the results set.

Terms like Chemical Abstracts Service (CAS) registry numbers can be affected by word breakers. For example, word breakers typically split numbers that appear before or after a hyphen or other special character from the rest of the number. For example, the CAS registry number for oxygen is 7782-44-7. After word-breaker processing, this CAS registry number is broken into three parts: the numbers 7782, 44, and 7. Adding the CAS registry numbers that appear in a corpus to a custom dictionary directs the search system to index each number without breaking it into parts.

и далее там же....
29 янв 14, 11:51    [15487092]     Ответить | Цитировать Сообщить модератору
 Re: FREETEXT - как это работает?  [new]
Glory
Member

Откуда:
Сообщений: 104760
tester2000
На мой взгляд это говорит о том, что функционал как минимум непопулярен.

Особенно если почитать про собственно процесс создания словаря
1. Запустите текстовый редактор и откройте новый файл
....
N. Сохраните файл в нужную директорию
29 янв 14, 11:53    [15487105]     Ответить | Цитировать Сообщить модератору
 Re: FREETEXT - как это работает?  [new]
tester2000
Member

Откуда:
Сообщений: 534
Если пользовательский словарь можно использовать ТОЛЬКО для разбиения - то корректировать им ошибки стемминга не получиться.
Про текстовый файл читал. Это как раз и смутило. Особенно с учетом того, что словарь стоп-слов, тезаурус описаны подробно, а словарь пользовательских слов, который также влияет на парсинг, - фактически никак.
29 янв 14, 12:10    [15487211]     Ответить | Цитировать Сообщить модератору
 Re: FREETEXT - как это работает?  [new]
tester2000
Member

Откуда:
Сообщений: 534
Всем большое спасибо за помощь в ответах на вопросы!) Тему можно закрыть.
29 янв 14, 12:57    [15487605]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить