RegexpTokenizerを使用してテキストをトークン処理しようとしています。NLTK - nltk.tokenize.RegexpTokenizer - regexが正常に動作しません。
コード:
from nltk.tokenize import RegexpTokenizer
#from nltk.tokenize import word_tokenize
line = "U.S.A Count U.S.A. Sec.of U.S. Name:Dr.John Doe J.Doe 1.11 1,000 10--20 10-20"
pattern = '[\d|\.|\,]+|[A-Z][\.|A-Z]+\b[\.]*|[\w]+|\S'
tokenizer = RegexpTokenizer(pattern)
print tokenizer.tokenize(line)
#print word_tokenize(line)
出力: ' '
[ 'U'、 'S'、 'A'、 'カウント'、'。' 「U」、「S」、「。」、「A」、「。」、「Sec」、「。」、「of」、「U」、「。」、「S」。 「Doe」、「Doe」、「Doe」、「1.11」、「1,000」、「10」、「Doe」、「Doe」、「Doe」、 ' - '、 ' - '、 '20'、 '10'、 ' - '、 '20']
予想される出力: ''
[ 'USA'、 'カウント'、 'USA'、 '秒'、 'の'、 '米国'、 '名前'、 ':' 「Doe」、「Doe」、「Doe」、「1.11」、「1,000」、「10」、「 - 」、「 - 」、「20」、 '10 '、' - '、' 20 ']
tokenizerが私の予想されるトークン「spearting」をなぜ「USA」、「US」ですか? この問題を解決するにはどうすればよいですか?
私の正規表現:https://regex101.com/r/dS1jW9/1
'[[USA \。] {4、} | [\ w] + ''も '............'と一致します。単一の '\ w'を文字クラスに入れ、文字クラスの中にドットをエスケープする必要はありません。 –
合意 - しかし、テストデータが与えられた(と私はより良い解決策を考えるにはあまりにも怠惰でした)これは私が与えたものです:) –