17.4 CTX_DOCパッケージを使用したセンチメント分析の実行
CTX_DOC
パッケージのプロシージャを使用してドキュメント・セット内の単一のドキュメントでセンチメント分析を実行します。ドキュメントごとに、ドキュメント全体で1つのセンチメント・スコアを決定するか、ドキュメント内のトピックごとに個別のセンチメント・スコアを決定できます。
センチメント分析を実行する前に、ドキュメント・セットでコンテキスト索引を作成する必要があります。次のコマンドでは、camera_reviews
表に含まれているドキュメント・セットでcamera_revidx
コンテキスト索引が作成されます。
create index camera_revidx on camera_reviews(review_text) indextype is
ctxsys.context parameters ('lexer mylexer stoplist ctxsys.default_stoplist');
CTX_DOC
パッケージでセンチメント分析を実行するには、次のいずれかの方法を使用します。
例17-2 ドキュメントの単一センチメント・スコアの取得
次の例では、clsfier_camera
センチメント分類子を使用してドキュメント全体に対する単一の集計センチメント・スコアを提供します。センチメント分類子が作成およびトレーニングされました。ドキュメント・セットを含む表には、camera_revidx
コンテキスト索引があります。センチメント分析を実行する必要のあるドキュメント表内のドキュメントのdoc_id
は49です。センチメント・スコアが生成されるトピックは'Nikon'です。
select ctx_doc.sentiment_aggregate('camera_revidx','49','Nikon','clsfier_camera') from dual;
CTX_DOC.SENTIMENT_AGGREGATE('CAMERA_REVIDX','49','NIKON','CLSFIER_CAMERA')
--------------------------------------------------------------------------
74
1 row selected.
例17-3 デフォルトの分類子を使用した単一のセンチメント・スコアの取得
次の例では、ドキュメントのセンチメント分類子を使用してドキュメント全体の集計センチメント・スコアを提供します。ドキュメント・セットを含む表には、camera_revidx
コンテキスト索引があります。センチメント分析を実行する必要のあるドキュメント表内のドキュメントのdoc_id
は1です。
select ctx_doc.sentiment_aggregate('camera_revidx','1') from dual;
CTX_DOC.SENTIMENT_AGGREGATE('CAMERA_REVIDX','1')
--------------------------------------------
2
1 row selected.
例17-4 ドキュメント内の各トピックのセンチメント・スコアの取得
次の例では、clsfier_camera
センチメント分類子を使用してドキュメント内の各セグメントのセンチメント・スコアを生成します。センチメント分類子が作成およびトレーニングされました。ドキュメント・セットを含む表には、camera_revidx
コンテキスト索引があります。センチメント分析を実行する必要のあるドキュメント表内のドキュメントのdoc_id
は49です。センチメント・スコアが生成されるトピックは'Nikon'です。分析結果が移入されるrestab
結果表は、スニペット(CLOB
)列とスコア(NUMBER
)列を使用して作成されました。
exec ctx_doc.sentiment('camera_revidx','49','Nikon','restab','clsfier_camera', starttag=>'<<', endtag=>'>>');
SQL> select * from restab;
SNIPPET
--------------------------------------------------------------------------------
SCORE
----------
It took <<Nikon>> a while to produce a superb compact 85mm lens, but this time they finally got it right.
65
Without a doubt, this is a fine portrait lens for photographing head-and-shoulder portraits (The only lens which is optically better is
<<Nikon>>'s legendary 10
5mm f2.5 Nikkor lens, and its close optical twin, the 105mm f2.8 Micro Nikkor.
75
Since the 105mm f2.5 Nikkor lens doesn't have an autofocus version, then this might be the perfect moderate telephoto lens for owners of
<<Nikon>> autofocus
SLR cameras.
84
3 rows selected.
例17-5 ドキュメント内のトピックのセンチメント・スコアの取得
次の例では、tdrbrtsent03_cl
センチメント分類子を使用してドキュメント内の各セグメントのセンチメント・スコアを生成します。センチメント分類子が作成およびトレーニングされました。ドキュメント・セットを含む表には、tdrbrtsent03_idx
コンテキスト索引があります。センチメント分析を実行する必要のあるドキュメント表内のドキュメントのdoc_id
は1です。センチメント・スコアが生成されるトピックは'movie'です。分析結果が移入されるtdrbrtsent03_rtab
結果表は、スニペット列とスコア列を使用して作成されました。
SQL> exec ctx_doc.sentiment('tdrbrtsent03_idx','1','movie','tdrbrtsent03_rtab','tdrbrtsent03_cl');
PL/SQL procedure successfully completed.
SQL> select * from tdrbrtsent03_rtab;
SNIPPET
--------------------------------------------------------------------------------
SCORE
----------
the <b>movie</b> is a bit overlong , but nicholson is such good fun that the running time passes by pretty quickly
-62
1 row selected.
関連項目:
-
『Oracle Textリファレンス』の
CTX_DOC.SENTIMENT_AGGREGATE
に関する説明 -
『Oracle Textリファレンス』の
CTX_DOC.SENTIMENT
に関する説明