powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Классификация текстовых документов с помощью Oracle Data Mining и Oracle Text
4 сообщений из 4, страница 1 из 1
Классификация текстовых документов с помощью Oracle Data Mining и Oracle Text
    #36341912
Dmitrych-G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поставлена задача классификация документов средствами Oracle Text и Oracle Data Mining.
В базе инфа о документах хранится в одной таблице, содержимое документов в другой в поле CLOB, крутится база на 11gR1 под виндой.

Делаю все на PL/SQL по сэмплам отсюда .
Там есть пример когда для классификации используется таблица с разнородными колонками, в числе которых и текст, приведен пример для метода SVM (опорных векторов), я же использую только колонку с текстом для классификации.
Выделяю строки с содержимом документов для обучения в отдельную таблицу, создаю индекс CTXSYS.CONTEXT с такими параметрами:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    CTX_DDL.CREATE_PREFERENCE('my_LEXER', 'BASIC_LEXER');
    ctx_ddl.set_attribute('my_LEXER','INDEX_STEMS','ENGLISH'); 
    ctx_ddl.set_attribute('my_LEXER','index_text','YES');       
    
    CTX_DDL.CREATE_PREFERENCE('my_WORDLIST', 'BASIC_WORDLIST');
    ctx_ddl.set_attribute('my_WORDLIST','stemmer','ENGLISH');
    ctx_ddl.set_attribute('my_WORDLIST','substring_index','FALSE');
    ctx_ddl.set_attribute('my_WORDLIST','prefix_index','FALSE');
    
    CTX_DDL.CREATE_STOPLIST('my_STOPLIST','BASIC_STOPLIST');
Ну и далее, выделение термов и создание таблицы с колонкой NESTED_TABLE, содержащей термы для каждого документа и колонкой c целевым значением категории (target_column). В итоге табличка для построения модели имеет вид:
Код: plaintext
1.
2.
3.
4.
5.
CREATE TABLE "TEXT_BUILD_NESTED" 
	("DOC_ID" NUMBER( 6 , 0 ) NOT NULL ENABLE,		-- ID документа
	"CAT_ID" NUMBER, 				-- ID категории документа
	"DOC_TEXT" "SYS"."DM_NESTED_NUMERICALS" )  	-- термы (слова), выдранные из текста документа
	NESTED TABLE "DOC_TEXT" STORE AS "BUILD_TEXT" RETURN AS VALUE
Далее происходит построение модели классификации:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    DBMS_DATA_MINING.CREATE_MODEL(
      model_name => 'Classification_model'
      mining_function => dbms_data_mining.classification,
      data_table_name => 'text_build_nested',
      case_id_column_name => 'doc_id',
      target_column_name => 'cat_id',
      settings_table_name => 't_settings');
Таблица t_svmc_settings заполнена следующими настройкми:
Код: plaintext
1.
2.
3.
4.
    INSERT INTO t_settings VALUES
      (dbms_data_mining.algo_name, dbms_data_mining.algo_support_vector_machines);
    INSERT INTO t_settings VALUES 
      (dbms_data_mining.svms_kernel_function,dbms_data_mining.svms_linear);
Модель строится. Затем, подготовив должным образом текст документов для классификации (по аналогии с подготовкой данных для обучения, с тем же текстовым индексом), применяем модель к набору документов.
В итоге классификация текстов работает, и довольно неплохо, надо сказать.

Но стоит только поменять настройки для построение модели методом Naive bayes:
Код: plaintext
1.
2.
3.
4.
    INSERT INTO t_settings VALUES
      (dbms_data_mining.algo_name, dbms_data_mining.algo_naive_bayes);
    INSERT INTO t_settings VALUES
      (dbms_data_mining.clas_priors_table_name,'category_priors');
И получается то, что при классификации, документ относится ко всем категориям с равной вероятностью (по сути классификация не работает).

Если же классифицировать не по текстовому полю, а по другим значениям (например, number и т.п.), работает как классификация методом опорных векторов, так и наивным байесом. Причем в "Oracle® Data Mining Concepts 11g Release 1 (11.1) B28129-04" указывается что вроде как Oracle Data Mining должен поддерживать классификацию текста методом Naive Bayes, a Oracle Text нет... (может тут где-то собака зарыта, но ведь использую я пакет DBMS_DATA_MINING):

Mining Function Oracle Data Mining Oracle Text
Classification Text or mixed data can be mined using SVM, Text can be mined using SVM,
GLM, or Naive Bayes decision trees, or user-defined rules

Может кто нибудь сталкивался с подобным!? Не уверен что привел достаточно подробные сведения, но могу уточнить... В частности интересует вопрос, работает ли вообще у кого-нибудь классификация текста наивным байесом? Уже исхитрялся и так и эдак, а он все равно равновероятный результат выдает, стоит только оставить для построения модели чисто текстовые данные.
...
Рейтинг: 0 / 0
Классификация текстовых документов с помощью Oracle Data Mining и Oracle Text
    #36505474
Dmitrych-G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Итак, решение было найдено еще в начале января, только вот руки не доходили написать сообщение:) Может кто-то найдет через поисковик...

Дело оказалось в глючной версии оракла 11.1.0.6, на 11.1.0.7 тот же самый код для построения модели классификации методом Байеса, без каких-либо изменений, прекрасно работает. Модель строится с вменяемыми коэффициентами для термов и нормально классифицирует тексты. Вот так.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Классификация текстовых документов с помощью Oracle Data Mining и Oracle Text
    #38360850
tociacla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, уважаемый Dmitrych-G !
Извините пожалуйста за оффтоп, но не могли бы Вы предоставить более полный пример построения SVM модели в Oracle запросом? В частности, я не понимаю, что нужно указать в качестве settings_table_name: какая это должна быть таблица, с какими полями, с какими данными? Может быть, Вы можете скинуть ссылку на какое-либо руководство? Ничего не могу нагуглить((((
Заранее спасибо!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Классификация текстовых документов с помощью Oracle Data Mining и Oracle Text
    #40028101
ZiB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ZiB
Гость
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Классификация текстовых документов с помощью Oracle Data Mining и Oracle Text
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]