2012-02-22 4 views
0

すべて、Pythonを使用したスト​​ップワードの削除

私はクリーンアップが必要なテキストを持っており、ほとんどが「ほとんど」動作しています。

def removeStopwords(self, data): 
    with open(r'stopwords.txt') as stopwords: 
     wordList = [] 
     for i in stopwords: 
      wordList.append(i.strip()) 
     charList = list(data) 
     cat = ''.join(char for char in charList if not char in wordList).split() 
     return ' '.join(cat) 

このページの先頭行に移動します。 http://en.wikipedia.org/wiki/Paragraphを入力し、この場合は関心のないすべての文字を削除します。すべて英数字以外の文字です。

段落(ギリシャの段落から「横に書いてください」または「横に書いている」)は、特定のポイントやアイデアを扱う書面による自己完結型の単位です。段落は1つまたは複数の文章で構成されます。[1] [2]段落の始まりは、新しい行から始まります。最初の行がインデントされることがあります。さまざまな時に、段落の始まりがピルクローによって示されました:¶

出力は、単語の一部が正しく再結合されず、修正方法がわからないことを除けば、かなりよく見えます。

横に書き込むためのギリシャparagraphosから段落または横に書かれている自己完結ユニット

「自己完結」という言葉を注意「自己完結」でした。

EDIT:ストップワードファイルの内容は単なる束です。

! $%^ 、 & *( ) {} [ ] <

、 。 / | \ ? 〜 ' : ; 「

私は本当にこのような場合には句読点た文字を削除しようとしていたので、私は全くの単語のリストを必要としませんが判明。

 cat = ''.join(data.translate(None, string.punctuation)).split() 
     print ' '.join(cat).lower() 
+0

stopwords.txtの内容は何ですか?むしろ句読記号のリストではなく、言葉を停止しますか? – geoffspear

+1

私は通常、「ストップワードの削除」とは実際の単語(「of」や「the」など)を削除すると考えています。あなたがここでやろうとしているのは、特定の文字を実際に削除することです(句読点を削除するなど)。あれは正しいですか? –

+0

@Woobleストップワードは、英数字以外の文字または文字と数字以外のすべてでいっぱいです。 – aeupinhere

答えて

1

別々の機能であなたのストップワード/ stopcharsをロードします。

ファイル名/パスをハードコードしないでください。

あなたのwordListはリストではなくsetである必要があります。

ただし、単語ではなく文字で作業している場合は、str.translateを調べてください。

+0

いいえ... HWではありません。これらの文字を自分のデータから削除/置換してJaccardインデックスを作成する必要があります。 – aeupinhere

+0

これは私の問題を解決しました。 – aeupinhere

2

バージョン2.x

どこへ行く
line = 'hello!' 
line.translate(None, '!$%') #'hello' 

answers

+0

+1匿名のダウンリストを無視します。 'str.translate'は行く方法です。多分あなたの例を変更して、英数字以外の文字を削除するようにしてください。 –

-2

一つの方法は、置き換えるメートルを使用することですあなたが望んでいない文字の網羅的なリストを持っています。例えば

c=['a','h'] 
a= 'john' 
for item in c: 
    a =a.replace(item,'') 
    print a 

次のように出力されます ジョン ジョン

+0

興味深い。このようにしても同じ結果が得られます。 〜に対してwordcard: data = data.replace(item、 '') 印刷データ – aeupinhere