INFORMATION
テクノロジ

サブスクリプションの固有表現抽出機能

阿部 慎一朗 著

はじめに

サブスクリプションに搭載される固有表現抽出機能について紹介します。

固有表現抽出機能 とは?

近々にリリースされるサブスクリプション1.3.0では、ルールベースの固有表現抽出をおこなうTokenizerとUpdateRequestProcessorが追加されます。 固有表現抽出とは、人名、地名、組織名などの固有名詞を、属性付きで自然言語の文書から抽出するタスクです。 固有名詞やキーワードを辞書に登録することで、辞書に記載した単語だけをコンテンツから抽出して、任意フィールドに格納することができます。この任意フィールドを使ってファセット表示をすることができます。

参考JavadocKnownWordsTokenizerFactory
参考JavadocKnownWordsExtractUpdateProcessorFactory

固有表現抽出をSolrと組み合わせると、特にフィールドの少ない企業内検索に多大な威力を発揮します。企業ドメインの専門用語や固有表現をあらかじめ抽出しておくことで、ユーザはその専門用語を使ってドキュメントの絞り込みができるようになります。

KnownWordsExtractUpdateProcessorFactoryの使い方

solrconfig.xmlへの登録方法を簡単にご紹介します。

  <updateRequestProcessorChain name="known">
    <processor class="com.rondhuit.solr.update.KnownWordsExtractUpdateProcessorFactory">
      <str name="src">statement</str>
      <lst name="dest">
	<str name="fields">plan_sm</str>
	<str name="words">dic-plans.txt</str>
      </lst>
    </processor>
    <processor class="solr.UniqFieldsUpdateProcessorFactory">
      <str name="fieldName">plan_sm</str>
    </processor>
    <processor class="solr.RunUpdateProcessorFactory" />
    <processor class="solr.LogUpdateProcessorFactory" />
  </updateRequestProcessorChain>

srcパラメータのstatementフィールドの文字列に対して、固有表現抽出を行います。 destパラメータでplan_smフィールドのデータ値が、文書登録時にKnownWordsExtractUpdateProcessorを使って作成されます。wordsパラメータで、固有表現を記載した辞書を指定します。 なおsrcやdestは複数のフィールド名やファイル名を指定できます。

検索対象ドキュメントをインデクシングすると、インデクシングの前処理で、固有表現抽出を行って、指定フィールドに固有名詞が登録される仕組みとなっています。検索では、この指定フィールドを使ってファセットを構成します。



弊社の検索窓のファセット条件をご確認ください(参考リンク)。 画面右側のファセット条件では、「クラス名で絞り込む」というものが追加されています。これは、上記の固有表現抽出を実現したものです。固有表現としてLucene/Solrのクラス名を辞書登録し、弊社サイトのhtmlページやLuceneブログやサブスクリプションのJavadocなどのコンテンツから、クラス名を任意フィールドに抽出、そしてファセットナビゲーションリンクを構成しています。

まとめ

人名、組織名、プロジェクト名、製品名、商品名、キャラクター名など、コンテンツの中には固有表現がたくさん入っていると思います。これをファセット絞込みを使ってダイナミックにドリルダウンして、目的のドキュメントにたどり着くことができます。役に立つ機能になりますのでご利用をご検討いただければと思います。



トレーニングコース

ロンウイットのトレーニングは、Lucene/Solrの経験豊富なコミッターの
監修のもと開発されたハンズオン(実習)形式のコースです。

セミナー

ロンウイットのApache Software Foundationコミッターが、情報検索の基礎、自然言語処理、そして、ユーザにとっての効果についてご説明させていただきます。