2016-08-26 17 views
3

私は、任意の句読点なしでアラビア語テキストからのトークンを返すためにregexp_tokenize()を使用しています:regexp_tokenizeとアラビア語のテキスト

import re,string,sys 
from nltk.tokenize import regexp_tokenize 

def PreProcess_text(Input): 
    tokens=regexp_tokenize(Input, r'[،؟!.؛]\s*', gaps=True) 
    return tokens 

H = raw_input('H:') 
Cleand= PreProcess_text(H) 
print '\n'.join(Cleand) 

それはうまく働いたが、私はテキストを印刷しようとすると問題があります。

テキストايمان،سعد用出力:

?يم 
    ?ن 
    ? 
    ? 
    ? 

が、テキストもアラビア語句読点で、英語であれば、それは正しい結果を出力します。

テキストhi،eman用出力:

 hi 
    eman 
+0

あなたのアラビア語のテキストの予想出力は何ですか? – NullUserException

+0

おそらくアラビア語が後方に印刷されているという事実です。 perlでは、私は の出力を得て、سعد – sln

+0

あなたはPython 2.xを使用していますか? Python 3.4では、 'ايمان、سعد'と入力すると'ايمان'と 'سعد'が得られます。 –

答えて

2

あなたがraw_inputを使用する場合、シンボルはバイトとして符号化されます。

あなたは

H.decode('utf8') 

でUnicode文字列に変換する必要があり、あなたがあなたの正規表現を維持することがあります。

tokens=regexp_tokenize(Input, r'[،؟!.؛]\s*', gaps=True) 
+1

はい正規表現が働いた、ありがとう! – Eman

関連する問題