2016-05-16 1 views
0

商品の説明から機能を抽出するテキストパーサーを作成しています。プレーンテキストからフィーチャーを抽出するにはどうすればよいですか?

例:

text = "Canon EOS 7D Mark II Digital SLR Camera with 18-135mm IS STM Lens" 
features = extract(text) 
print features 

Brand: Canon 
Model: EOS 7D 
.... 

私はこれを行う方法は、構造化データとシステムを訓練し、機能に用語をマッピングすることができ転置インデックスを考え出すことです。これはほとんどうまく動作します。テキストは50ml、または2kgなどの測定が含まれている場合

、転置インデックスは、例えばのため2kg -> Size50ml -> Sizeを言うだろう。

ここでの問題は、私が前に見たことがない値を得るときに、13mlのように処理されないことです。しかし、パターンはサイズにマッチするので、サイズとしてタグ付けすることができます。

私はテキストから得たトークンを前処理して、私が知っているパターンを探すことでこの問題を解決しようと考えていました。したがって、新しいパターンが識別された場合、そのパターンを前処理に追加する必要があります。

私はこれを知るにはこれが最善の方法でしょうか?または、これを行うためのより良い方法がありますか?

答えて

1

見えないケースの古くからの問題です。特定の接尾辞(ml、kgなど)の前に数字のような文字をつかんで、サイズとして扱うようにスクレーパーを訓練することができます。この問題は、タイプミスであり、フォーマットの間違ったテキストが構造データに入る可能性があります。以前には見たことのない値を処理する方法については正しい答えがありません。個々にQCを行うか、その周りにルールを設定する必要があります。これはデータセットに依存します。

パターンを識別するには、手動で入力するか、多くのレコードを手動で分類してアルゴリズムに学習させる必要があります。それは非常に有用ではありませんが、多くはデータに大きく依存しています。

+0

ありがとうございました。私は同じ考えをしていた。 –

0

あなたは、このようなトレーニングデータを使用している場合:

word label 
10ml size-valume 
20kg size-weight 
etc... 

あなたは、文字nグラムに基づく分類器を訓練することができ、それはミリリットルが、それは11ミリリットルを見たりしてもサイズ・ボリュームであることを検出するであろうml11などを使用する場合は、数字を1つの数値(たとえば0)に変換して、11-mlが特徴抽出前に0-mlと見なされるようにする必要があります。

このためには、前処理モジュールと大きなトレーニングサンプルが必要です。特徴抽出のために、scikit-learnの文字n-gramとSVMを使うことができます。

関連する問題