3

フランス語の単語をトークン化しようとしていますが、フランス語の単語をトークン化すると、「^」記号を含む単語は \xe を返します。実装したコードは次のとおりです。

import nltk
from nltk.tokenize import WhitespaceTokenizer
from nltk.tokenize import SpaceTokenizer
from nltk.tokenize import RegexpTokenizer
data = "Vous êtes au volant d'une voiture et vous roulez à vitesse"
#wst = WhitespaceTokenizer()
#tokenizer = RegexpTokenizer('\s+', gaps=True)
token=WhitespaceTokenizer().tokenize(data)
print token

私が得た出力

['Vous', '\xeates', 'au', 'volant', "d'une", 'voiture', 'et', 'vous', 'roulez', '\xe0', 'vitesse']

望ましい出力

['Vous', 'êtes', 'au', 'volant', "d'une", 'voiture', 'et', 'vous', 'roulez', 'à', 'vitesse']
4

3 に答える 3

0

NTLK の第 3 章のセクション「3.3 Unicode を使用したテキスト処理」を参照してください。

文字列の前にuが追加されていることを確認してください。問題ありません。@tripleeeが示唆したように、その章からも注意してください。

画面にレンダリングされるグリフを決定する要因は多数あります。エンコーディングが正しいと確信しているにもかかわらず、Python コードが期待どおりのグリフを生成できない場合は、システムに必要なフォントがインストールされていることも確認する必要があります。

于 2013-09-01T15:07:37.527 に答える
0

トークンが自然にスペースで区切られている単純な文であれば、フランス語の空白トークナイザは実際には必要ありません。そうでない場合は、nltk.tokenize.word_tokenize()より良いサービスを提供します。

Python < 3 で UTF-8 エンコードされたテキストをコンソールに出力する方法を参照してください。

# -*- coding: utf-8 -*-

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

sentence = "Vous êtes au volant d'une voiture et vous roulez à grande $3.88 vitesse"
print sentence.split()

from nltk.tokenize import word_tokenize
print word_tokenize(sentence)

from nltk.tokenize import wordpunct_tokenize
print wordpunct_tokenize(sentence)
于 2013-09-10T13:16:27.203 に答える