テキスト解析 アクションセット: 詳細
解析、結果の累積、スペルミスの処理、ドキュメントのスコアリングにワードベクトルモデルを適用するアクションを提供します
テキスト解析アクションセットの概要
テキスト解析アクションセットは、入力テキストの処理と使用に関連するいくつかの重要な機能を提供します。このアクションセットの中心的なアクションは、tpParseアクションです。テキスト分析の特徴を抽出し、その特徴を1行に1つずつ含むテーブルを作成します。
テキスト解析アクションセットの残りのアクションは、tpParseアクションの出力を処理して、追加情報を生成します。tpAccumulateアクションは、tpParseアクションの特徴を組み合わせて、term-by-documentテーブルと語の要約テーブルを形成し、tpSpell、tmSVD、tmCoccurアクションなどの他のアクションでそれらを使用できるようにします。tpSpellアクションを使用して、tpParseアクションとtpAccumulateアクションによって処理されるドキュメントコレクション内のスペルミスのワードを修正できます。最後に、tpWordVectorアクションは、Word2vecまたはGloveアルゴリズムによって作成されたものなどの外部ワード埋め込みを使用して、tpParseアクションからトークン化された語を数値形式に変換します。
tpParseアクションの使用
tpParseアクションの概要
tpParseアクションの主な入力は、tableパラメーターで指定されたドキュメントテーブルです。この入力テーブルには、処理するテキストを含む1つの列と、一意のドキュメント識別子(ID)を持つ2番目の列が必要です。このアクションの主な出力は、offsetパラメーターで指定されたテーブルです。このテーブルには、テキストから抽出されたすべてのトークンと、各トークンに関する追加情報が含まれています。次の言語特徴に関連するパラメーターを使用すると、ユーザーは出力オフセットテーブルに書き込まれる特徴を制御できます。
- トークン化
- 見出し語化
- 品詞タグ付け
- 名詞グループ抽出
- デフォルトまたはカスタマイズされた停止リストおよび開始リスト
- エンティティの解析
- マルチワードトークン
- 類義語リスト
- 語の重み付け
tpParseアクションの出力オフセットテーブル
次の列が出力オフセットテーブルにあります。
- 語: テキストから抽出されるトークン語。
- 役割: 語に関連付けられている品詞またはエンティティの種類。
- 複合タグ: 語の詳細な品詞タグ。outComplexTagパラメーターの値が
TRUEの場合、このタグはテーブルに含まれます。 - 属性: 語がエンティティである場合を除いて、語を構成する個々の文字の種類を示します。次の値を使用できます。
- 0: 語がエンティティであることを示します。
- 1: すべての文字がアルファベットであることを示します。
- 2: 語が句読点であることを示します。
- 3: すべての文字が数字であることを示します。
- 4: 使用されていません。
- 5: 語の文字が種類の混合であることを示します。
- 親: 語が語幹や類義語などの代表的な親にマップされているかどうかを示します。
- 開始: 指定された語のテキスト列の開始バイトオフセットを提供します。
- 終了: 指定された語のテキスト列の終了バイトオフセットを提供します。
- 文: 語が含まれる文の番号を識別します。各ドキュメントの文には、1から順番に番号が付けられます。
- 段落: この列は将来使用するためのものです。現在、段落はtpParseアクションによって識別されないため、この列の値は常に0です。
- ドキュメント: 入力ドキュメントのドキュメントID。
例については、tpParseアクションを使用したテキスト解析と複合品詞タグの表層化を参照してください。
tpParseアクションでの役割の使用
taggingパラメーターがTRUEに設定されている場合、出力オフセットテーブルには、トークン化された各語の品詞タグを含む役割列が含まれます。品詞タグの完全なリストについては、品詞タグ (SAS Visual Text Analytics: ユーザーガイド)を参照してください。
品詞タグに加えて、nlpPersonやnlpNounGroupなどの事前定義されたエンティティまたはカスタムエンティティが見つかると、オフセットテーブルの役割列がエンティティの種類を識別して返します。さまざまな種類のエンティティが次の方法でオンになります。
- 事前定義済みエンティティは、entitiesパラメーターが
STDに設定されている場合に抽出されます。 - 名詞グループは、nounGroupsパラメーターが
TRUEに設定されている場合に検出されます。 - ユーザー独自のコンセプトルールによって定義されたカスタムエンティティは、litiパラメーターを使用して含めることができます。カスタムコンセプトの作成の詳細については、カスタムコンセプトの作成 (SAS Visual Text Analytics: ユーザーガイド)を参照してください。
tpParseアクションでの複合タグの使用
outComplexTagパラメーターがTRUEに設定されている場合、2番目のより詳細な品詞タグがComplexTag列の出力オフセットテーブルに書き込まれます。複合タグには、A.f.s (形容詞女性単数形)のように、性や数などの情報が含まれています。識別される言語と語によっては、複合タグと役割の品詞タグが同一になる場合があります。複雑なタグの候補は言語によって異なります。
tpAccumulateアクションとMPPモードを使用する場合は、outComplexTagパラメーターの値をTRUEに設定します。複合タグが使用可能な場合、tpAccumulateアクションは、より効率的な方法でその処理をグリッド全体に分散させることができます。
tpAccumulateアクションの使用
tpAccumulateアクションの概要
tpAccumulateアクションは、tpParseアクションのオフセットテーブルから要約テーブルを作成します。親テーブルと語テーブルを主要な出力として生成します。親テーブルには、ドキュメントごとの要約が含まれ、すべてのドキュメントの重み付き語頻度がリストされます。語テーブルには、コレクション内にある個別の語に関する情報が含まれています。
tpAccumulateアクションの出力親テーブル
出力親テーブルには、_TERMNUM_、_DOCUMENT_、および_COUNT_の3つの列が含まれています。_TERMNUM_列には、語のIDが含まれています。これは、TERMSパラメーターによって生成されるデータセットのキー列に対応します。_DOCUMENT_列には、ドキュメントのIDが含まれています。_COUNT_列には、語カウントが含まれます。(これらの語カウントは、アクションパラメーターの選択に基づいて重み付けされる場合があります。)
tpAccumulateアクションの出力語テーブル
次の列が語テーブルにあります。
- 語: テキストに出現する語の小文字バージョンを提供します。
- 役割: 語の品詞またはエンティティの種類を提供します(この列には、taggingパラメーターが無効になっている場合でもエンティティの種類が表示されます)。
- 属性: 語を構成する文字を示します。可能な属性は次のとおりです。
- アルファ: アルファベット文字のみが含まれる
- 混合: 他の属性の組み合わせが含まれる
- 数字: 数字のみが含まれる
- 句読点: 句読文字が含まれる
- エンティティ: 識別されたエンティティが含まれる
- 頻度: ドキュメントコレクション全体の語の頻度を提供します。
- ドキュメントの数: 語を含むドキュメントの数を提供します。
- 保持: 用語の保持ステータスを提供します。値
Yは、語が分析のために保持されることを示し、値Nは、語が分析の後の段階で削除されることを示します。デフォルトでは、TERMSデータセットが妥当なサイズであることを保証するために、値がYの語のみがTERMSデータセットに保持されます。 - 語の番号: 割り当てられた語の番号を提供します(解析されたドキュメント内の一意の語と親にはそれぞれ一意のKey値があります)。
- 親: 語の親のKey値、または"." (ピリオド)を提供します。
- 語に親がある場合、この変数はその親の語の番号を示します。
- 語に親がない場合、この値は"." (ピリオド)です。
- Key、Parent、およびParent_idの値が同一である場合、親はそれ自体として発生します。
- ParentとParent_idの値が同一であるが、Keyとは異なる場合、そのオブザベーションは子です。
- 親ID: 語の親のIDを提供します。親がない場合、値はそれ自体の語の番号です。
- Is Parent: 親、子、またはどちらでもないという語のステータスを示します。
- "+" (プラス記号)は、その語が親であることを示します。
- "." (ピリオド)は、その語が子であることを示します。
- 欠損値は、その語が親でも子でもないことを示します。
- 重み: 語の重みを提供します。
tpAccumulateアクションでの複合タグの使用
complexTagパラメーターの値がTRUEに設定され、入力オフセットテーブルにComplexTag列が含まれている場合、tpAccumulateアクションはこの情報を使用して、MPP配置のパフォーマンスを向上させます。この場合、グリッド内の各ノードで語カウントを集めて小計してから、それをグリッド全体の合計にまとめます。complexTagパラメーターがFALSEに設定されている場合、語カウントは中心グリッドノードに集められ、累積プロセスの最後に合計されます。ComplexTag列の追加の詳細では、異なるコンテキストで見つかった同じワードの語のペアレンティングのニュアンスが捕捉されます。場合によっては、パフォーマンスが向上しないことがあるため、このオプションを試して、データの処理が高速かどうかを判断することをお勧めします。
tpAccumulateアクションで停止リストまたは開始リストをオーバーライドする
tpAccumulateのoverrideパラメーターでは、開始リストまたは停止リストの設定にかかわらず保持または除外する語を含むCAS入力テーブルを指定します。テーブルにはTerm (varchar)変数とKeep (integer)変数が必要です。Keep変数は、0 (除外)または1 (保持)のいずれかにする必要があります。Role (varchar)変数はオプションです。入力オーバーライドテーブルの形式は、次のようになります。

tpAccumulateアクションでは、オーバーライド入力テーブルの親の語のみが使用されます。(子の語はスキップされます。)したがって、子の語が停止リストまたは開始リストテーブルで見つかった場合、tpAccumulateアクションはこの語をスキップし、残りの語を続行します。したがって、停止リストまたは開始リストテーブルの親の語のみがtpAccumulateアクションで機能します。
類義語リストの使用
SAS Visual Text Analytics 8.3およびそれ以前のリリースでは、分散累積を使用する場合、類義語リストの語は子の語にのみ適用されます。したがって、類義語リストの子の語は、Termsテーブルの子の語に対応します。
SAS Visual Text Analytics 8.4では、類義語リストの子の語がTermsテーブルの親の語と同じ役割である場合、Termsテーブルの親の語とそのすべての子の語が類義語リストの親の語の下に表示されます。類義語リストの子の語がTermsテーブルの子の語と一致する場合、Termsテーブルの子の語のみが類義語リストの親の語の下に表示されます。
類義語リストに、ある親にステミングする語リストの子の語と、別の親にステミングする語リストの親の語がある場合、子の語がある類義語リストの行は無視されます。類義語リストの行で、子の語と親の語の間に循環する依存関係が生じている場合、その行は無視されます。
tpSpellアクションの使用
tpSpellアクションの概要
tpSpellアクションでは、スペル解析結果をチェックし、結果を精査します。tpSpellアクションは、tpParseアクションの出力オフセットテーブルを処理して、次に示すスペル修正のテーブルを生成します。

tpSpellアクションは、ワード頻度とスペルの類似度を使用して、語のスペルミスを示唆します。頻繁に出現する語は正しいと見なされますが、まれであるが頻繁な語に近いスペルの語はスペルミスと見なされます。
tpSpellアクションのアルゴリズムの詳細
tpSpellアクションで実行されるステップは次のとおりです。
- 候補の抽出: tpSpellアクションは、トリプルterm-role-parentのドキュメントの数(numdocs)を計算します。たとえば、
algorithms-N-algorithmは4ドキュメントに5回表示されます。このとき、トリプルのドキュメントの数は4です。minParentsパラメーターの値を3と仮定します。ドキュメントの数は、minParentsパラメーターの値以上です。つまり、algorithms-N-algorithmのトリプルは、正しいスペルのワード候補になる可能性があり、リストに追加されます。algorithzs-N-algorithzsのトリプルのドキュメントの数は1です。maxChildrenパラメーターの値を2と仮定します。ドキュメントの数は、maxChildrenパラメーターの値以下です。つまり、algorithzs-N-algorithzsのトリプルは、スペルミスのワード候補になる可能性があり、リストに追加されます。トリプルは、minParentsとmaxChildrenのパラメーターの値で指定された制限を満たす場合、正しいスペルのワード候補とスペルミスのワード候補の両方になる可能性があります。tpSpellアクションは、入力テーブルを読み取り、正しいスペルのワード候補リストとスペルミスのワード候補リストを生成します。 - 候補の比較: tpSpellアクションは、スペルミスのリスト内のワードをすべてチェックし、正しいスペルのリスト内のワードをすべてチェックします。そして、スペルミスのワード候補と正しいスペルのワード候補を比較し、その間の距離を計算します。正しいスペルのリストにN個の候補があり、スペルミスのリストにM個の候補がある場合、N*M回比較します。
与えられたスペルミスの候補と、与えられた正しいスペルの候補について、その間の距離を計算して比較します。たとえば、ワード
'algorithzs'は、与えられたスペルミスの候補であり、ワード'algoxxxthzs'は、リスト内の正しいスペルの候補です。'algorithzs'と'algoxxxthzs'の間の距離は20です。maxSpellDistパラメーターの値を15と仮定します。値20は値15よりも大きいです。したがって、'algoxxxthzs'が'algorithzs'の正しいスぺルである可能性はありません。ワード
'algorithm'は、リスト内の正しいスペルの候補です。'algorithzs'と'algorithm'の間の距離は10です。値10は、maxSpellDistパラメーターの値よりも小さいです。したがって、'algorithm'は'algorithzs'の正しいスぺルである可能性があります。ワード
'algorithxs'は、リスト内の正しいスペルの候補です。'algorithzs'と'algorithxs'の間の距離は5です。値5は値10よりも小さいです。したがって、'algorithxs'は、'algorithm'と比較して、'algorithzs'のより正しいスペルになります。ワード
'algorithms'は、リスト内の正しいスペルの候補です。'algorithzs'と'algorithms'の間の距離は5です。'algorithzs'と'algorithms'の間の距離は、'algorithzs'と'algorithxs'の間の距離に等しくなります。'algorithms'のドキュメントの数が4、'algorithxs'のドキュメントの数が3と仮定します。したがって、'algorithms'は、'algorithxs'と比較して、'algorithzs'のより正しいスペルになります。tpSpellアクションは、前述のロジックを使用して、正しいスペルのリスト内の候補をすべて処理し、
'algorithzs'の最適な候補を取得します。最適な候補が'algorithms'だと仮定します。これにより、'algorithzs'の親('algorithzs')が'algorithms'の親('algorithms')になるように修正されます。tpSpellアクションは、語自体の修正はしません。最適な候補がない場合は修正しません。別の例を考えてみましょう。ワード
'colourful'は、与えられたスペルミスの候補です。dictパラメーターでは、_Term_という名前の列を含む入力テーブルを指定します。テーブルにワード'colourful'があり、dictPenaltyパラメーターの値は2です。正しいスペルの候補は'colorful'です。'colourful'と'colorful'の間の距離は12です。'colourful'は辞書テーブルにあるため、距離にdictPenaltyパラメーター値を掛ける必要があります。修正後の距離である24は、maxSpellDistパラメーター値よりも大きいです。したがって、'colorful'が'colourful'の正しいスぺルである可能性はありません。別の例を考えてみましょう。語
'fire engine'は、与えられたスペルミスの候補です。multiWordPenaltyパラメーターの値は2です。正しいスペルの候補は'fire-engine'です。'fire engine'と'fire-engine'の間の距離は13です。'fire engine'にはスペースが含まれているため、距離にmultiWordPenaltyパラメーターの値を掛ける必要があります。修正後の距離である26は、maxSpellDistパラメーターの値よりも大きいです。したがって、'fire-engine'が'fire engine'の正しいスぺルである可能性はありません。別の例を考えてみましょう。ワード
'principle'は、与えられたスペルミスの候補であり、その役割はNです。diffRoleパラメーターの値はfalseです。正しいスペルの候補は'principal'であり、その役割はADJです。語'principal'は、役割が異なるため、'principle'の正しいスペルである可能性はありません。tpSpellアクションは、前述のロジックを使用して、スペルミスのワードをすべて処理し、その親の値を修正します。出力テーブルは次の形式に従います。

_Parent_変数のコンテンツが変更されます。その他の変数のコンテンツは、入力テーブルと同じです。
tpWordVectorアクションの使用
tpWordVectorアクションの概要
tpWordVectorアクションでは、ワードベクトルモデルを適用してドキュメントをスコアリングします。tpParseアクションの出力とワードベクトルモデルを使用して、スコアリング結果を含む出力CASテーブルを生成します。
tpWordVectorアクションのメモリに関する考慮事項
tpWordVectorアクションでは、N x (W x M)テーブルが作成されます。ここで、Nは文の数、Wは埋め込みの長さ、Mは最長のドキュメントの長さです。これにより、1つのドキュメントでも非常に長い、大きなデータセットを含む大きなテーブルが作成される可能性があります。たとえば、埋め込みサイズが100で最大文長が215の100万件のレビューは、大きすぎて1台または数台のマシンでもメモリに収まりません。実際に行われる計算量と比較して、不釣り合いに大量のマシンが必要になります。多数のマシンで実行すると、リカレントニューラルネットワーク(RNN)でより大きなミニバッチサイズが使用され、信頼性が低下します。
tpWordVectorアクションによって作成されたテーブルが消費するメモリ量を推定する式は次のとおりです。
M=N*L*E
この式で、Mは消費されるメモリ(推定値として単位なしで与えられる)、Nは文の数(rows)、Lは最長の文のトークンの数(max_length)、Eは埋め込みのサイズ(embedding_size)です。