шаблон токенов для чисел в tfidfvectorizer sklearn в python - PullRequest
0 голосов
/ 24 мая 2018

Мне нужно вычислить матрицу tfidf для нескольких предложений.предложение включает в себя как цифры, так и слова.Я использую приведенный ниже код, чтобы сделать это

import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer

data1=['1/8 wire','4 tube','1-1/4 brush']
dataset=pd.DataFrame(data1, columns=['des'])
vectorizer1 = TfidfVectorizer(lowercase=False)
tf_idf_matrix = pd.DataFrame(vectorizer1.fit_transform(dataset['des']).toarray(),columns=vectorizer1.get_feature_names())

Функция Tfidf рассматривает только слова в качестве своего словаря, т.е.

Out[3]: ['brush', 'tube', 'wire']

, но мне нужны числа, чтобы быть частью токенов

Ожидается

Out[3]: ['brush', 'tube', 'wire','1/8','4','1-1/4']

После прочтения документации TfidfVectorizer я узнал, что необходимо изменить параметры token_pattern и tokenizer .Но я не понимаю, как изменить его, чтобы учитывать цифры и знаки препинания.

Может кто-нибудь, пожалуйста, скажите мне, как изменить параметры.

1 Ответ

0 голосов
/ 24 мая 2018

Вы правы, token_pattern требуется собственный шаблон регулярного выражения, передайте регулярное выражение, которое обрабатывает один или несколько символов, которые не содержат пробельные символы, как один токен.

tfidf = TfidfVectorizer(lowercase=False, token_pattern=r'\S+') 
tf_idf_matrix = pd.DataFrame(
    tfidf.fit_transform(dataset['des']).toarray(), 
    columns=tfidf.get_feature_names()
)

print(tf_idf_matrix)

      1-1/4       1/8         4     brush      tube      wire
0  0.000000  0.707107  0.000000  0.000000  0.000000  0.707107
1  0.000000  0.000000  0.707107  0.000000  0.707107  0.000000
2  0.707107  0.000000  0.000000  0.707107  0.000000  0.000000
...