Как я могу разбить документ (например, абзац, книгу и т. д.) на предложения.
Например, "The dog ran. The cat jumped"
в ["The dog ran", "The cat jumped"]
с пробелом?
Как я могу разбить документ (например, абзац, книгу и т. д.) на предложения.
Например, "The dog ran. The cat jumped"
в ["The dog ran", "The cat jumped"]
с пробелом?
Актуальный ответ таков:
from __future__ import unicode_literals, print_function
from spacy.lang.en import English # updated
raw_text = 'Hello, world. Here are two sentences.'
nlp = English()
nlp.add_pipe(nlp.create_pipe('sentencizer')) # updated
doc = nlp(raw_text)
sentences = [sent.string.strip() for sent in doc.sents]
en_core_web_sm
работало лучше, а en_core_web_lg
еще лучше, и достаточно быстро для моих нужд. См. ответ KB_.
- person dbenton; 24.05.2020
nlp.add_pipe('sentencizer')
, как отмечает @user8189050.
- person smci; 13.03.2021
sent.string.strip()
на sent.text.strip()
- person Thang M. Pham; 29.06.2021
Взято с страницы поддержки spacy на github.
from __future__ import unicode_literals, print_function
from spacy.en import English
raw_text = 'Hello, world. Here are two sentences.'
nlp = English()
doc = nlp(raw_text)
sentences = [sent.string.strip() for sent in doc.sents]
Ответить
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
. Один (очень простой) пример сравнения:
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.
>>> --------------------
В spacy 3.0.1 они изменили конвейер.
from spacy.lang.en import English
nlp = English()
nlp.add_pipe('sentencizer')
def split_in_sentences(text):
doc = nlp(text)
return [str(sent).strip() for sent in doc.sents]
my_string.split(".")
- person Julien   schedule 19.09.2017