2013-08-20 11 views
7

SVMライトを使用して2つのクラスのいずれかでドキュメントを分類する分類子を作成しようとしています。私はすでに分類子を訓練し、テストしており、モデルファイルはディスクに保存されています。ここでは、このモデルファイルを使用して、完全に新しい文書を分類したいと考えています。このための入力ファイル形式は何でしょうか?それはプレーンテキストファイル(私はそれが動作するとは思わない)または任意のクラスラベルと機能の重みなしでテキストファイルに存在する機能の単なるリストにすることができます(その場合は、訓練中の特徴ベクトルの特徴)または他の形式ですか?SVMライトを使用した分類のファイルフォーマット

答えて

6

訓練および試験ファイル、同じ形式次の形式の行の各インスタンスの結果でなければならない:例えば

<line> .=. <target> <feature>:<value> ... <feature>:<value> # <info> 
<target> .=. +1 | -1 | 0 | <float> 
<feature> .=. <integer> | "qid" 
<value> .=. <float> 
<info> .=. <string> 

(SVM ^光ウェブサイトからコピーパスタ):

-1 1:0.43 3:0.12 9284:0.2 # abcdef 

詳細についてはSVM^light websiteをご覧ください。

+0

Marc私はここでクラシファイアを "テスト"しようとしていません。完全に未知の文書を分類するという現実的な目的のために、今ここで使用したいと思います。 "テスト"ファイルでは、ドキュメントが属するクラスを知っていますので、それに応じてファイルを準備することができます。私が「本当の」分類をしようとしているとき、私はドキュメントとフィーチャ値のクラスを知らない(トレーニングとテストの段階でtf-idf値を使用していればidf値はない完全に未知の文書)。それではファイルの形式はどうなりますか? – ritesh

+0

@riteshクラシファイアの使用は、その精度を評価することに関心がない場合でも、一般に*テストフェーズ*と呼ばれます。最初の列(SVM^lightがこれを許可するかどうかわからない、libsvmが知っていることはわかっていない)を省略するか、そこにあなたが選択した値を使用する(間違いなく)。ラベルは、正確性を報告するためにのみ使用されます。だから、あなたがそれらを持っていない場合は、あなたの好きな番号を使用するだけで報告された正確さは完全に偽であることに注意してください。 –

+0

私は今私が本当に混乱していることを認めなければなりません。最初の列に(クラスラベルではなく)任意の数値を入れておきます。しかし、どのようにしてフィーチャ値を計算するのですか?[形式は ' .... ']ですか?訓練のために、私はtf-idfとクラスの頻度を使ってこの値を計算します。この値には、訓練文書の総数と、この文書が属するクラスの訓練文書の総数が考慮されます。テストの場合、これはトレーニングで使用された方法とは異なる方法で計算された値ですか?はいの場合、この価値はどうなるでしょうか? – ritesh

0

予測を行うために、ファイル形式は、テストや電車を作るためのものと同じである、すなわち

<line> .=. <target> <feature>:<value> ... <feature>:<value> # <info> 
<target> .=. +1 | -1 | 0 | <float> 
<feature> .=. <integer> | "qid" 
<value> .=. <float> 
<info> .=. <string> 

しかし、予測を行うために、ターゲットは、このようにあなたがターゲットとして0値を使用する必要があり、unknowです。ティは唯一の違いです。これが誰かを助けることを願っています

関連する問題