web-dev-qa-db-ja.com

Spacyでドキュメントを文章で分割する方法

ドキュメント(段落、本など)を文に分割するにはどうすればよいですか。

例えば、 "The dog ran. The cat jumped"から["The dog ran", "The cat jumped"]スペイシーで?

9
Ulad Kasach

回答

import spacy
nlp = spacy.load('en_core_web_sm')

text = 'My first birthday was great. My 2. was even better.'
sentences = [i for i in nlp(text).sents]

追加情報
これは、モデル「en_core_web_sm」がシステムにすでにインストールされていることを前提としています。そうでない場合は、ターミナルで次のコマンドを実行することで簡単にインストールできます。

$ python -m spacy download en_core_web_sm

(利用可能なすべてのモデルの概要については、 ここ を参照してください。)

データによっては、これはspacy.lang.en.Englishを使用するよりも良い結果につながる可能性があります。 1つの(非常に単純な)比較例:

import spacy
from spacy.lang.en import English

nlp_simple = English()
nlp_simple.add_pipe(nlp_simple.create_pipe('sentencizer'))

nlp_better = spacy.load('en_core_web_sm')


text = 'My first birthday was great. My 2. was even better.'

for nlp in [nlp_simple, nlp_better]:
    for i in nlp(text).sents:
        print(i)
    print('-' * 20)

出力:

>>> My first birthday was great.
>>> My 2.
>>> was even better.
>>> --------------------
>>> My first birthday was great.
>>> My 2. was even better.
>>> --------------------
0
KB_