CountVectorizer преобразует слова в нижний регистр

114
8

В моей модели классификации мне нужно поддерживать заглавные буквы, но когда я использую sklearn countVectorizer для создания словаря, заглавные буквы преобразуются в строчные буквы!

Чтобы исключить неявное tokinization, я построил токенизатор, который просто передает текст без какой-либо операции.

мой код:

co = dict()

def tokenizeManu(txt):
return txt.split()

def corpDict(x):
print('1: ', x)
count = CountVectorizer(ngram_range=(1, 1), tokenizer=tokenizeManu)
countFit = count.fit_transform(x)
vocab = count.get_feature_names()
dist = np.sum(countFit.toarray(), axis=0)
for tag, count in zip(vocab, dist):
co[str(tag)] = count

x = ['I\'m John Dev', 'We are the only']

corpDict(x)
print(co)

выход:

1:  ["I'm John Dev", 'We are the only'] #<- before building the vocab.
{'john': 1, 'the': 1, 'we': 1, 'only': 1, 'dev': 1, "i'm": 1, 'are': 1} #<- after

спросил(а) 2021-01-28T01:49:37+03:00 2 месяца, 2 недели назад
1
Решение
62

Вы можете установить атрибут lowercase False

count = CountVectorizer(ngram_range=(1, 1), tokenizer=tokenizeManu,lowercase=False)

Здесь Атрибуты CountVectorizer

CountVectorizer(analyzer=u'word', binary=False, charset=None,
charset_error=None, decode_error=u'strict',
dtype=<type 'numpy.int64'>, encoding=u'utf-8', input=u'content',
lowercase=True, max_df=1.0, max_features=None, min_df=0,
ngram_range=(1, 1), preprocessor=None, stop_words=None,
strip_accents=None, token_pattern=u'(?u)\\b\\w\\w+\\b',
tokenizer=None, vocabulary=None)

ответил(а) 2021-01-28T01:49:37+03:00 2 месяца, 2 недели назад
61

Как поясняется в документации, здесь. CountVectorizer имеет lowercase параметр, который по умолчанию имеет значение True. Чтобы отключить это поведение, вам необходимо установить lowercase=False следующим образом:

count  = CountVectorizer(ngram_range=(1, 1), tokenizer=tokenizeManu, lowercase=False)

ответил(а) 2021-01-28T01:49:37+03:00 2 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема