6

scikit-learn には、機械学習用の非常に使いやすい Python モジュールがあります。

ラベルと入力データが単語と注釈である自然言語処理 (NLP) 用に SVM タガーをトレーニングしようとしています。入力タプルとして double/integer データを使用するのではなく、品詞のタグ付けなど[[1,2], [2,0]]、私のタプルは次のようになります[['word','NOUN'], ['young', 'adjective']]

文字列タプルでSVMを使用する方法の例を誰か教えてください。ここで提供されるチュートリアル/ドキュメントは、整数/倍精度入力用です。http://scikit-learn.org/stable/modules/svm.html

4

2 に答える 2

12

ほとんどの機械学習アルゴリズムは、float のベクトルである入力サンプルを処理し、サンプルのペア間の距離が小さい (多くの場合ユークリッド)ことは、2 つのサンプルが目前の問題に関連する方法で類似していることを意味します。

エンコードするフロート機能の適切なセットを見つけるのは、機械学習の実践者の責任です。このエンコーディングはドメイン固有であるため、すべてのアプリケーション ドメイン (さまざまな NLP タスク、コンピューター ビジョン、トランザクション ログ分析など) で機能する生データからその表現を構築する一般的な方法はありません。機械学習モデリング作業のこの部分は、特徴抽出と呼ばれます。多くの手作業が必要な場合、これはしばしば機能エンジニアリングと呼ばれます。

特定の問題のために、scikit-learnのDictVectorizer 機能抽出ヘルパー クラスを使用して、文内の関心のある単語の周囲の単語のウィンドウの POS タグ (名前付きエンティティ検出などのシーケンス タグ付けなど) を適切にエンコードできます。

于 2012-10-18T08:46:52.137 に答える
4

これは scikit や Python に関する質問ではなく、SVM に関する一般的な問題です。

SVM のデータ インスタンスは、ある種のスカラー(通常は実数) のベクトルとして表す必要があります。したがって、カテゴリ属性は、SVM に含める前に、まずいくつかの数値にマップする必要があります。

一部のカテゴリ属性は、より自然に/論理的に何らかのスケール (緩やかな「メトリック」) にマッピングするのに役立ちます。たとえば、プライオリティ フィールドの値が (「急がない」、「標準配送」、「緊急」、および「最も緊急」) の (1, 2, 3, 5) マッピングは意味がある場合があります。もう 1 つの例は、赤、緑、青のコンポーネントなどの 3 つの次元にそれぞれ 1 つずつマッピングできる色の場合です。
他の属性には、スケールへの近似論理マッピングさえも許可するセマンティックがありません。次に、これらの属性のさまざまな値に、SVM の 1 つ (場合によっては複数) の次元で任意の数値を割り当てる必要があります。当然のことながら、SVM にこれらの任意の「非メトリック」ディメンションが多数ある場合、アイテムを適切に分類する効率が低下する可能性があります。これは、SVM の動作に暗示される距離計算とクラスタリング ロジックの意味的な関連性が低いためです。

この観察結果は、アイテムに非数値または非「メトリック」ディメンションが含まれている場合に SVM をまったく使用できないという意味ではありませんが、特徴の選択と特徴のマッピングは、一般に分類器、特に SVM の非常に機密性の高いパラメーターであることを思い出してください。 .

POSタグ付けの特定のケースでは...ラベル付きコーパスのどの属性を使用するか、およびこれらを数値にマッピングする方法について、現時点で困惑しています。私は、SVMToolが SVM を使用して非常に効率的な POS タガーを生成できることを知っています。また、いくつかの学術論文でも SVM に基づくタガーについて説明しています。ただし、タグ付けの他のアプローチ (HMM や最大エントロピーなど) についてはよく知っています。

于 2012-10-18T03:03:12.577 に答える