2016-09-04 7 views
0

サンプルセットを用意する必要はありません。CountVectorizerを使用してスペースのないユニコード文の正規表現

私は、各配列が文からの単語のセットを含む2次元配列を持っています。

CountVectorizerを使用して、2D配列全体でfit_transformを効果的に呼び出すことで、単語のボキャブラリを構築できます。

はしかし、私のような文章があります。

u'Besides EU nations , Switzerland also made a high contribution at Rs 171 million LOCATION_SLOT~-nn+nations~-prep_besides nations~-prep_besides+made~prep_at made~prep_at+rs~num rs~num+NUMBER_SLOT' 

をそして、私の現在のベクトライザーはトークンとして~+のようなものを除去するのに厳しすぎます。一方、各単語をsplit()というトークンで表示する場合は、rs~num+NUMBER_SLOTはのように、ボキャブ自体の単語にする必要があります。同時に、thea(通常のストップワードセット)のようなストップワードは削除する必要があります。

現在のベクトライザー:

vectorizer = CountVectorizer(analyzer="word",stop_words=None,tokenizer=None,preprocessor=None,max_features=5000) 

あなたはtoken_patternを指定することができますが、私は私が私の目的を達成するために使用する可能性があるかわからないです。しよう:

token_pattern="[^\s]*" 

はの語彙につながる:u''として物事を台無しに

{u'': 0, u'p~prep_to': 3764, u'de~dobj': 1107, u'wednesday': 4880, ...} 

は私のボキャブラリーで私が欲しいものではありません。

このタイプの正しいトークンパターンは、vocabulary_としたいですか?

+0

はwordpunct_tokenizeですか? http://www.nltk.org/_modules/nltk/tokenize/regexp.html – RAVI

+0

すごいですが、いずれかにストップウォールを削除するオプションがありますか?私は基本的に空白(超簡単)上の文字列を分割し、トークンで識別されたストップワードを削除する必要があります。私は推測しても問題はありません。 –

+0

http://stackoverflow.com/a/19133088/1168680 – RAVI

答えて

0

私はこれを理解しました。ベクタライザは0以上の空白以外の項目を許可していました.1つ以上の空白を許可する必要があります。正しいCountVectorizerは次のとおりです。

CountVectorizer(analyzer="word",token_pattern="[\S]+",tokenizer=None,preprocessor=None,stop_words=None,max_features=5000) 
関連する問題