2016-11-21 11 views
1

現在、機械学習プロジェクトで作業中で、データセットを構築中です。データセットは、1文から約50文(句読点を含む)までの長さが異なる複数の異なるテキスト機能で構成されます。このデータをプリプロセスして保存し、Pythonを使用した機械学習に使用する最良の方法は何ですか?バイナリ分類のテキストデータセットを格納する

答えて

0

あなたは、類似の抽出のような、より複雑なタスクを実行するか、文章の間の比較をしたいされている場合、ほとんどのケースでは、あなたはいくつかのケースではしかし、Wordののバッグといわれる方法を用いることができ、あなたが使用する必要がありますWord2Vec

バッグオブワード

あなたは、あなたがエンコードする古典的なBag-Of-Word表現を使用できます各サンプルをすべてのサンプルからのすべての単語のカウントを示す長いベクトルに変換する。

"I like apple, and she likes apple and banana."

"I love dogs but Sara prefer cats.":たとえば、次の2つのサンプルを持っている場合。

その後、すべての可能な単語が(順序はここでは関係ありません)です:あなたはsklearnを使用している場合

I she Sara like likes love prefer and but apple banana dogs cats , . 

その後、2つのサンプルは

First: 1 1 0 1 1 0 0 2 0 2 1 0 0 1 1 
Second: 1 0 1 0 0 1 1 0 1 0 0 1 1 0 1 

にエンコードされます、タスクが希望

from sklearn.feature_extraction.text import CountVectorizer 
vectorizer = CountVectorizer() 
corpus = [ 
    'This is the first document.', 
    'This is the second second document.', 
    'And the third one.', 
    'Is this the first document?', 
] 
X = vectorizer.fit_transform(corpus) 
# Now you can feed X into any other machine learning algorithms.      

Word2Vec

Word2Vecは、ニューラルネットワークを埋め込むを訓練することによって単語間の関係を見つけるより複雑な方法です。埋め込みは、平易な英語で、を提供するすべてのサンプルのコンテキストで、単語の数学的表現、と考えることができます。コアの考え方は、の場合はという単語が似ているということです。

Word2Vecの結果は、すべてのサンプルに表示されているすべての単語のベクトル表現(埋め込み)です。驚くべきことは、ベクトルに対してアルゴリズム操作を実行できることです。クールな例は次のとおりです。Queen - Woman + Man = Kingreference here

Word2Vecを使用するために、我々はここで基本的な設定で、gensimと呼ばれるパッケージを使用することができます。ここでは

model = Word2Vec(sentences, size=100, window=5, min_count=5, workers=4) 
model.most_similar(positive=['woman', 'king'], negative=['man']) 
>>> [('queen', 0.50882536), ...] 

sentencesあなたのデータであり、sizeは、埋め込みの大きさ、 sizeが大きいほど、単語を表すスペースが多くなり、常にがオーバーフットしてと考える必要があります。 windowは、私たちが気にしている文脈のサイズです。それは、訓練の際に、文脈からターゲットを予測しているときに見ているターゲット単語の前の単語の数です。

+0

最初にPubMedからデータのロードをダウンロードし、テキストの前処理を計画する必要があります。これをどのように先に保存できますか? – Toby

+0

あなたがダウンロードしているデータが[this](https://www.ncbi.nlm.nih.gov/protein/BAC80069.1)のようなものであれば、あなたはそれらを任意のフォーマットのテキストファイルとしてダウンロードすることができます。あなたはそれを必要とします、あなたは 'fileを使って(ロードすることができます)(http://stackoverflow.com/questions/3925614/how-do-you-read-a-file-into-a-list-in-python)。 readline() 'を実行してテキストを行単位で読み込みます – Jason

0

一般的な方法の1つは、辞書(すべての可能性のある単語)を作成し、この辞書の関数ですべての例をエンコードすることです(たとえば、これは非常に小さく限られた辞書です)。辞書:hello、world、from、python。すべての単語が位置に関連付けられます。例のすべてで、存在する場合は0、存在する場合は1を持つベクトルを定義します。たとえば、「hello python」の例では、次のようにエンコードします。1,0,0,1

関連する問題