静かなる名辞

pythonとプログラミングのこと


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

 日本語はないんじゃい・・・正規表現などで地道に分割しましょう。

関連記事:【python】区切り文字を含めてsplitする - 静かなる名辞

まとめ

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