Поиск по сайту:

Выполните сегментацию предложений, используя пространство 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 дает адаптивность и контроль для эффективного разделения предложений.

Статьи по данной тематике: