Маркировка последовательности для предложений, а не токенов - PullRequest
1 голос
/ 04 февраля 2020

У меня есть предложения, которые принадлежат абзацу. Каждое предложение имеет метку. [s1, s2, s3,…], [l1, l2, l3,…] Я понимаю, что я должен кодировать каждое предложение, используя кодировщик, а затем использовать маркировку последовательности. Не могли бы вы подсказать мне, как я могу это сделать, комбинируя их?

1 Ответ

2 голосов
/ 04 февраля 2020

Если я правильно понимаю ваш вопрос, вы ищете кодирование ваших предложений в числительном c представлении.

Допустим, у вас есть такие данные, как:

data = ["Sarah, is that you? Hahahahahaha  Todd give you another black eye??"
        "Well, being slick comes with the job of being a propagandist, Andi..."
        "Sad to lose a young person who was earnestly working for the common good and public safety when so many are in the basement smoking pot and playing computer games."]

labels = [0,1,0]

Теперь вы хотите чтобы построить классификатор, для обучения данные классификатора должны быть в формате цифр c, поэтому здесь мы перенесем текстовые данные в структуру цифр c, для этого мы будем использовать векторизатор tf-idf, который будет создавать матрицу для текстовых данных, а затем применять любые алгоритм.

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.svm import LinearSVC
from sklearn.pipeline import Pipeline

vectorizerPipe = Pipeline([
                     ('tfidf', TfidfVectorizer(lowercase=True,stop_words='english')),
                     ('classification', LinearSVC(penalty='l2',loss='hinge'))])

trained_model = vectorizerPipe.fit(data,labels)

Здесь создается конвейер, где первым шагом является извлечение векторного элемента (преобразование текстовых данных в формат нумерации c), а на следующем шаге мы применяем к нему алгоритм. В обоих шагах есть много параметров, которые вы можете попробовать. позже мы запустим конвейер методом .fit и передадим данные и метки.

...