iT邦幫忙

0

CountVectorizer詞袋問題

我想要用CountVectorizer來計算每個數字1~10出現的次數,
但只能抓出10的次數,其他數字都無法統計出來,
換成純文字可以正常計算
不知道是不是CountVectorizer把一位數字當作數字不統計
想請問板上大大是否有解法或是更好的計算方式

謝謝

import pandas as pd
import numpy as np
from sklearn.feature_extraction.text import CountVectorizer

data_list= [
    '6 1 8 7 2 3 4 ', 
    '8 6 4 7 9 3 1 ', 
    '10 4 6 7 5 2 9', 
    '7 2 10 9 8 6 4', 
 ]
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(data_list)
print(vectorizer.get_feature_names())
print(X.toarray())

----------------------------------------
['10']
[[0]
 [0]
 [1]
 [1]]
 

1 個回答

1
海綿寶寶
iT邦大神 1 級 ‧ 2020-03-14 20:16:08

依據官方文件說明
預設抓取的 token 是「2個字元(含)以上」
所以只會抓到 10

可以修改預設的設定
就是參數 token_pattern (值為正則表示式)
把原本的
token_pattern='(?u)\b\w\w+\b',
改成
token_pattern='(?u)\b\w+\b',
試試看

draguitar iT邦新手 5 級 ‧ 2020-03-14 20:30:46 檢舉

謝謝海綿寶寶詳細的解說,以後我要先仔細查閱官方文件!!

我要發表回答

立即登入回答