Выполните сегментацию предложений, используя пространство Python
Сегментация предложений — важнейшая задача обработки естественного языка (НЛП). В этой статье мы собираемся исследовать, как добиться разделения предложений, используя spacy, эффективную библиотеку Python для НЛП. Сегментация предложений включает часть записи контента в личные предложения, что дает возможность использовать различные приложения НЛП. Мы рассмотрим три подхода: разделение на основе правил с использованием предварительно обученной демонстрации Spacy, разделение на основе машинного обучения с индивидуальной подготовкой и создание индивидуального сегментированного курса с использованием Spacy Matcher. Эти подходы обеспечивают адаптивность и профессионализм, позволяя дизайнерам эффективно фрагментировать предложения в своих проектах НЛП на основе Python.
Выполнение сегментации предложений с использованием пространства Python
Простая интеграция — spacy известен своей скоростью и производительностью. Он создан с умом и использует оптимизированные вычисления, что делает его идеальным для умелой обработки огромных объемов контента.
Профессиональный и быстрый — spacy предоставляет предварительно обученные модели для разных диалектов, включая английский, который включает в себя готовые возможности разделения предложений. Эти модели создаются на основе огромных корпусов и постоянно обновляются и совершенствуются, избавляя вас от необходимости готовить модели претензий с нуля.
Предварительно обученные модели – предварительно обученные модели и этимологические правила spacy точно различают границы предложений на основе акцентуации, капитализации и других сигналов, специфичных для языка. Это гарантирует, что произойдет четкое разделение предложений, даже в тех случаях, когда границы предложения не отображаются постоянно с помощью точки.
Точные границы предложений – пространство позволяет вам настраивать и точно настраивать процесс сегментации предложений в соответствии с вашими конкретными потребностями. Вы подготовите свои собственные модели машинного обучения, используя объясненную информацию, или создадите собственные правила с помощью урока Matcher для обработки конкретных случаев или предварительных требований, специфичных для конкретной предметной области.
-
Настраиваемость. Разделение предложений может быть решающим шагом для многочисленных задач НЛП, таких как маркировка частей речи, подтверждение названия вещества и изучение мнений.
Подход 1. Сегментация предложений на основе правил.
Алгоритм
Основным подходом, который мы собираемся исследовать, может быть основанный на правилах подход к разделению предложений с использованием пробелов.
Spacy предоставляет предварительно обученную английскую библиотеку под названием «en_core_web_sm», которая включает в себя сегментатор предложений по умолчанию.
Это демонстрирует использование набора правил для определения границ предложения на основе акцентуации и других подсказок, специфичных для языка.
Пример
#pip install spacy
#python -m spacy download en_core_web_sm
import spacy
nlp = spacy.load("en_core_web_sm")
text = "This is the first sentence. This is the second sentence. And this is the third sentence."
doc = nlp(text)
sentences = [sent.text for sent in doc.sents]
for sentence in sentences:
print(sentence)
Выход
This is the first sentence.
This is the second sentence.
And this is the third sentence.
Подход 2. Сегментация предложений на основе машинного обучения.
Алгоритм
Второй подход, который мы собираемся исследовать, может представлять собой подход к разделению предложений на основе машинного обучения с использованием пробелов.
spacy позволяет вам подготовить собственный сегментатор предложений для претензии, используя объясненную информацию.
Чтобы обучить сегментатор предложений на основе машинного обучения, нам нужен корпус контента, который физически прокомментирован границами предложений.
Каждое предложение в корпусе должно быть отмечено смещением начала и завершения.
Пример
import spacy
from spacy.gold import GoldParse
from spacy.language import EntityRecognizer
nlp = spacy.load("en_core_web_sm")
text = "This is the first sentence. This is the second sentence. And this is the third sentence."
sentences = ["This is the first sentence.", "This is the second sentence.", "And this is the third sentence."]
annotations = [{"entities": [(0, 25)]}, {"entities": [(0, 26)]}, {"entities": [(0, 25)]}]
train_data = list(zip(sentences, annotations))
nlp.entity.add_label("SENTENCE")
other_pipes = [pipe for pipe in nlp.pipe_names if pipe != "ner"]
with nlp.disable_pipes(*other_pipes):
optimizer = nlp.begin_training()
for i in range(10):
losses = {}
for text, annotations in train_data:
doc = nlp.make_doc(text)
gold = GoldParse(doc, entities=annotations)
nlp.update([gold], sgd=optimizer, losses=losses)
print(losses)
doc = nlp(text)
sentences = [sent.text for sent in doc.sents]
for sentence in sentences:
print(sentence)
Выход
This is the first sentence.
This is the second sentence.
And this is the third sentence.
Заключение
В этой статье мы исследовали два разных подхода к разделению предложений с использованием пробелов в Python. Мы начали со встроенного сегментатора предложений Spacy на основе правил, который дает полезный способ фрагментировать предложения на основе акцентуации и правил, специфичных для языка. На этом этапе мы исследовали подход, основанный на машинном обучении, где мы подготовили собственный сегментатор предложений, используя уточненную информацию. Каждый подход имеет свои предпочтения и может быть использован в зависимости от потребностей вашего проекта НЛП. Независимо от того, хотите ли вы простой сегментатор на основе правил или более продвинутую систему, основанную на машинном обучении, spacy дает адаптивность и контроль для эффективного разделения предложений.