2016-11-30 5 views
1

私は、憎悪や人種差別の検出に関する研究のために非常に「右側の」ウェブサイトをクロールしようとしています。NLTKを使用したエンコードの問題

私はPythonでいくつかのストップワードと句読点を削除しようとしていますが、NLTKを使用していますが、私はエンコーディングの問題に遭遇しました...私はpython 2.7を使用しています。

stop_words = set(nltk.corpus.stopwords.words("english")) 
for key, value in data.iteritems(): 
    print type(value), value 
    tokenized_article = nltk.word_tokenize(value.lower()) 
    print tokenized_article 
    break 

と出力の外観が好き:私はクロールのウェブサイトからこのは「\ u2019」の存在である理由(私は追加...サンプルを短くする)

<type 'str'> A Negress Bernie ... they’re not going to take it anymore. 

['a', 'negress', 'bernie', ... , 'they\u2019re', 'not', 'going', 'to', 'take', 'it', 'anymore', '.'] 

を私は理解していませんそれはそこにあるべきではありません。誰かが私にそれに乗る方法を教えてもらえれば。 UTF-8でエンコードしようとしましたが、まだ同じ問題があります。

+0

'\ u2019'は、Unicodeシンボル[RIGHT単一引用符(http://unicode.org/cldr/utility/character.jsp?a=2019)です。あまりにも多くの異なる問題の文字を持っていない場合、あなたは単に[あなたの文字列を修正する]ことができます(http://stackoverflow.com/questions/24358361/removing-u2018-and-u2019-character) – alexis

答えて

1
stop_words = set(nltk.corpus.stopwords.words("english")) 
for key, value in data.iteritems(): 
    print type(value), value 
    #replace value with ignored handler 
    value = value.encode('ascii', 'ignore') 
    tokenized_article = nltk.word_tokenize(value.lower()) 
    print tokenized_article 
    break 
+1

ありがとう:)私は '私は 'theyre'を持っているでしょう。そして、私は '?'を取り除くことができます。 with string.punctuation – mel

+1

私はあなたの仕事の話題が好き、 –

+0

これは良いアドバイスではありません。テキストを処理する前であっても、サイトのエンコードを明示的にクロールしておき、事前にクローラを適切なエンコーディングに設定する必要があります。それらがすべてUTF8であれば、Python3の文字列を比較する方が意味があり、苦痛を軽減します。 – alvas

関連する問題