Как учитывать «пунктуацию» в CountVectorizer?

Я использую CountVectorizer of Sklearn для преобразования моих строк в вектор. Однако CountVectorizer по умолчанию выбирает токены из 2 и более символов, а также игнорирует знаки препинания и считает их разделителями. Я хочу рассматривать даже один символ как токен, а также включать знаки препинания. Например:

aaa 1 2.75 zzz
aaa 2 3.75 www

Я хочу матрицу

1 1 1 0 1 1 0 
1 0 1 1 0 0 1

Есть ли простой способ достичь этой цели?

Я думаю, что хорошие предложения здесь vent = CountVectorizer(token_pattern=r"(?u)\b\w\w+\b|!|\?|\"|\'") stackoverflow.com/questions/39254134/…

Petr Matuska 28.05.2019 17:26

Это сильно отличается от того, что я ищу. Я хочу сохранить '.' как часть токена, но ссылка предоставила регулярное выражение, которое учитывает '.' как отдельное слово

Amir 28.05.2019 17:58
Тонкая настройка GPT-3 с помощью Anaconda
Тонкая настройка GPT-3 с помощью Anaconda
Зарегистрируйте аккаунт Open ai, а затем получите ключ API ниже.
0
2
195
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать собственный токенизатор, как в этом примере:

import re

new_docs=["aaa 1 2.75 zzz","aaa 2 3.75 www"]

def my_tokenizer(text):
    return re.split("\\s+",text)


cv = CountVectorizer(new_docs,tokenizer=my_tokenizer)
count_vector=cv.fit_transform(new_docs)
print(cv.vocabulary_)

Пример вывода:

{'aaa': 4, '1': 0, '2.75': 2, 'zzz': 6, '2': 1, '3.75': 3, 'www': 5}

Подробнее Примеры использования CountVectorizer здесь.

Другие вопросы по теме