отдельные тексты в предложениях NLTK vs spaCy - PullRequest
0 голосов
/ 02 июня 2019

Я хочу разделить тексты на предложения.

смотря в переполнении стека я нашел:

С НЛТК

from nltk.tokenize import sent_tokenize
text="""Hello Mr. Smith, how are you doing today? The weathe is great, and city is awesome. The sky is pinkish-blue. You shouldn't eat cardboard"""
tokenized_text=sent_tokenize(text)
print(tokenized_text)

С ПРОСТРАНСТВОМ

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]

Вопрос в том, что в фоновом режиме для spacy нужно делать по-другому с так называемой create_pipe. Приговоры важны для обучения ваших собственных встраиваний слов для НЛП. Должна быть причина, по которой spaCy не включает прямо из коробки токенизатор предложений.

Спасибо.

ПРИМЕЧАНИЕ. Имейте в виду, что просто .split (.) Не работает, в тексте есть несколько десятичных чисел и токены другого типа, содержащие '.'

Ответы [ 2 ]

1 голос
/ 06 июня 2019

По умолчанию spaCy использует свой анализатор зависимостей для сегментации предложений, что требует загрузки статистической модели.sentencizer - это сегментатор предложений на основе правил, который можно использовать для определения собственных правил сегментации предложений без загрузки модели.

Если вы не против оставить активированный анализатор,Вы можете использовать следующий код:

import spacy
nlp = spacy.load('en_core_web_sm') # or whatever model you have installed
raw_text = 'Hello, world. Here are two sentences.'
doc = nlp(raw_text)
sentences = [sent.string.strip() for sent in doc.sents]
0 голосов
/ 06 июня 2019

Конвейер обработки в spaCy имеет модульную настройку, дополнительная информация приведена здесь: https://spacy.io/usage/processing-pipelines. Вы определяете, какие детали вы хотите, определяя трубы. Существуют некоторые варианты использования, когда вам потенциально не нужны предложения, например, когда вам нужно только представление пакета слов. Наверное, поэтому sentencizer не всегда включается автоматически - но он есть, если вам это нужно.

Обратите внимание, что English() - довольно общая модель - вы можете найти здесь несколько более полезных предварительно обученных статистических моделей: https://spacy.io/models/en

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...