nltkでテキストを文・センテンス単位で分割する
概要
自然言語処理やテキストマイニングをしていると文単位で処理・分析したいということはたまにあるので、テキスト(複数文)→センテンス(単一の文)という変換をしたくなることがあります。
英語の場合は、nltkを使うと簡単です。
nltk.sent_tokenizeで一発
>>> import nltk >>> s = "It's very easy. You should use 'nltk.sent_tokenize()'." >>> result = nltk.sent_tokenize(s) >>> result ["It's very easy.", "You should use 'nltk.sent_tokenize()'."]
簡単ですね。
他の言語でやりたいんじゃ
第二引数に言語を指定できます。
nltk.tokenize package — NLTK 3.4.4 documentation
使える言語は以下のものです(punktというリソースを使う必要があり、使う前にpunktを落とす必要があります。エラーメッセージに手順が出てくるので簡単です。また、以下のリストはpunktに含まれる一覧を拾ったものです)。
czech danish dutch english estonian finnish french german greek italian norwegian polish portuguese russian slovene spanish swedish turkish
日本語はないんじゃい・・・正規表現などで地道に分割しましょう。
まとめ
英語であればそれなりに満足の行く結果が得られますので、いいと思いました。