この記事で説明するこれらのソリューションの1つ。
これらの実験を自宅で繰り返そうとしないでください。
そして、試してみると、焼けたプロセッサのクレームは受け入れられません。
したがって、データセットwww.cs.cornell.edu/people/pabo/movie-review-data/review_polarity.tar.gzがあります
1000件の否定的レビューと1000件の肯定的レビューで構成されています。
畳み込みニューラルネットワーク、word2vec、またはxzアーカイバーと線形分類器
とても簡単です。
1. 100個のランダムテキスト(50個のネガティブテキストと50個のポジティブテキスト)を取得します。
2.データセットからそれらを捨てます。
3.残りの1900のそれぞれについて、100のそれぞれが次の方法でスローされる一般的な距離を考慮します。
XとYを、距離を計算する必要がある2つのファイルとします。
そして、xzアーカイバーへの圧縮後のファイルNの長さをZ(N)とします。
値を計算する
X = Z(X)
Y = Z(Y)
XY = Z(XY)
YX = Z(YX)
最後の2つの値は、最初のケースではXファイルとYファイル、2番目のケースではYとXの連結をアーカイブした結果です。
そして今、 ここで取った魔法の式を考えます
属性=(最小( XY 、 YX )-最小( X 、 Y ))/最大( X 、 Y )
4. 1900 x 100のマトリックスがあります
次に、0から1に正規化する必要があります。
5.タダム:
$ svm-train -v 10 -s 0 -t 0 -c 10 rand100.norm.svm
相互検証の精度= 75.6316%
なぜ機能するのですか?
事実は、2つのテキストでより一般的なシーケンス、より大きな圧縮Z(XY)
したがって、システム自体が共通の文字グループを割り当てます。
おそらく、200個のランダムファイルの方がうまくいくでしょう。
しかし、自宅でこれを繰り返さないという警告を覚えていますか?
自宅のコンピューターで行列を計算するプロセスには、1つのスレッドの場合、1日かかる場合があります。
または、冷却が不十分な場合は、プロセッサをマルチスレッドモードで焼きます。
ちなみに、これは冗談ではありません。他のアルゴリズムはさらに厳格ですが、私はかつて惑星の反対側のデータセンターで2台のサーバーを焼きました。
そして、それが、この方法が、適用されたファロメトリーのフレームワークで理論的にのみ興味がある理由です。
PS
コードはささいなことを超えないでしょう-私はすべてをシェルおよびパール大麦のオンラインプレーヤーで行いました。ホモサップでそれらを読み取ろうとすると、アーカイブは大脳皮質で直接起こり始めます。 そして、ご存知のように、ニューラルネットワークはそのような負荷にあまり適応していません。
PPS
そして、私はこの実験に触発されました-この投稿 。
更新
レビューから判断して、実用的な部分を示して、私はこれがなぜ必要であるかを明確にしませんでした。
実際、実際の問題では、この方法は明らかに適用できません。コストが非常に高くなります。
圧縮による距離の計算方法は古くから知られており、理論的な背景があります。
これに慣れることを望む人にこれをお勧めします 。
ただし、質問は特定の方法ではありません。
現代のアナリストは、分類器を長期間、高価に、そして手で構築しています。
手は、フィーチャスカルプトからネットワーク構造の開発まで、一般的に多くのことを行います。
ここでは、主題分野の知識を必要としない完全に不可知な方法を示しました。 まったくありません。 ファイルの内容がどの言語で書かれているかは気にしません。唯一の制限は、バイトの線形ストリームであることです(したがって、画像では機能しません)。
はい、例はおもちゃのカテゴリに属します;実際の問題では、そのようなアルゴリズムは無意味です。
しかし、おもちゃの問題に不可知論的な方法がある場合、それらは大きなものに存在する可能性があります。 そして、そのようなメソッドの検索は、L2メトリックでオートエンコーダーをトレーニングするよりもはるかに興味深いものです。
特に、ここで使用されているNCDメトリックでは自動エンコーダーが機能しない可能性が高いことを考慮してください。