Как использовать соотношение тип / токен в качестве функции для LinearSV C in Python? - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть файл .csv с каждой строкой, содержащей два столбца: сам текст и вычисленное соотношение тип / токен.

type_token_ratio = Pipeline([
    ('selector',NumberSelector(key='type_token_ratio')),
    ('standard',StandardScaler())
])
class NumberSelector(BaseEstimator, TransformerMixin):
   def __init__(self,key):
       self.key = key

   def fit(self, X, y=None):
       return self

   def transform(self, X):
       return X[[self.key]]

type_token_ratio.fit_transform(train_texts)
classifier = Pipeline([
    ('feats', type_token_ratio),
    ('cls', LinearSVC())
])
classifier.fit(train_texts,train_labels)
y_pred = classifier.predict(test_texts)   
print(f1_score(test_labels,y_pred,average='macro'))

К сожалению, классификатор присваивает тестовым текстам только две метки большинства классов из восьми возможных, что приводит к значению f1, аналогичному основанной на случайности базовой линии. Это происходит с каждой функцией отношения, которую я пробовал, включая среднюю длину слова и среднюю длину предложения. Все такие функции являются поплавками. Что мне нужно сделать, чтобы использовать такие функции?

...