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()'."]
 簡単ですね。

他の言語でやりたいんじゃ

 第二引数に言語を指定できます。

 使える言語は以下のものです(punktというリソースを使う必要があり、使う前にpunktを落とす必要があります。エラーメッセージに手順が出てくるので簡単です。また、以下のリストはpunktに含まれる一覧を拾ったものです)。
czech
danish
dutch
english
estonian
finnish
french
german
greek
italian
norwegian
polish
portuguese
russian
slovene
spanish
swedish
turkish
 日本語はないんじゃい・・・正規表現などで地道に分割しましょう。

まとめ

 英語であればそれなりに満足の行く結果が得られますので、いいと思いました。