句読点を含め、トークン化したい文があります。しかし、「can't」のようなものではない単語が「ca」と「n't」にトークン化され、分割がアポストロフィの 1 文字前になり、残りの短縮語が分割されるように、短縮形を処理する必要があります。 "you've" や "It's" のようなアポストロフィーでは、"you"、"'ve"、"It"、"'s" に変わります。これは私が立ち往生しているところです。基本的に、NKTL の TreebankWord Tokenizer の動作とほぼ同じです: NLTK Word Tokenization Demo
ここで提案されているソリューションの1つを使用していますが、これは私が望むように収縮を処理しません:
re.findall("'\w+|[\w]+|[^\s\w]", "Hello, I'm a string! Please don't kill me? It's his car.")
そして、私はこの結果を得る:
['Hello', ',', 'I', "'m', 'a', 'string', '!', 'Please', 'don', "'t', 'kill', 'me' , '?', 'It', "'s", 'his', 'car', '.']
「do」および「n't」である必要がない場合を除いて、アポストロフィを正しく処理します。誰でもそれを修正する方法を知っていますか?
標準ライブラリしか使用できないため、この場合 NLTK はオプションではありません。