Я пытаюсь обучить классификатор текста, используя CountVectorizer от sklearn. Проблема в том, что в моих учебных документах есть много токенов, которые указаны для документа c. Так, например, есть обычные слова на английском языке sh, с которыми метод CountVectorizer.fit_transform отлично работает, но есть некоторые отформатированные токены, которые бы соответствовали регулярному выражению: '\ w \ d \ d \ w \ w \ d ', например,' d84ke2 '. Как и сейчас, метод fit_transform просто взял бы «d84ke2» по номиналу и использовал бы его как функцию.
Я хочу иметь возможность использовать эти указанные c токены, которые соответствуют этому заданному c регулярному выражению, в качестве своей собственной функции, и оставить обычные слова engli sh в качестве собственных функций, поскольку создание функции такой как 'd84ke2', будет бесполезен, так как он больше не появится в любом другом документе.
Мне еще предстоит найти способ сделать это, а тем более «лучший». Ниже приведен пример кода, который у меня есть, и вы можете видеть, что токены 'j64ke2', 'r32kl4', 'w35kf9' и 'e93mf9' все превращены в свои собственные функции. Я повторяю для ясности: я хочу в основном объединить эти функции в одну и сохранить другие.
docs = ['the quick brown j64ke2 jumped over the lazy dogs r32kl4.',
'an apple a day keeps the w35kf9 away',
'you got the lions share of the e93mf9']
import numpy as np
# define target and target_names
target_names = ['zero', 'one', 'two']
target = np.array([0, 1, 2])
# Create message bunch.
from sklearn.utils import Bunch
doc_info = Bunch(data=docs, target=target, target_names=target_names)
# Vectorize training data
from sklearn.feature_extraction.text import CountVectorizer
count_vect = CountVectorizer()
count_vect.fit(doc_info.data)
vocab = count_vect.vocabulary_
vocab_keys = list(vocab.keys())
#vocab_vals = list(vocab.values())
X_train_counts = count_vect.transform(doc_info.data)
X = X_train_counts.toarray()
import pandas as pd
df = pd.DataFrame(X, columns=vocab_keys)