gpt4 book ai didi

python - 如何防止 TfidfVectorizer 获取数字作为词汇

转载 作者:太空狗 更新时间:2023-10-30 02:39:02 25 4
gpt4 key购买 nike

我像这样使用 TfidfVectorizer:

from sklearn.feature_extraction.text import TfidfVectorizer
stop_words = stopwords.words("english")
vectorizer = TfidfVectorizer(stop_words=stop_words, min_df=200)
xs['train'] = vectorizer.fit_transform(docs['train'])
xs['test'] = vectorizer.transform(docs['test']).toarray()

但是在检查 vectorizer.vocabulary_ 时,我注意到它学习的是纯数字特征:

[(u'00', 0), (u'000', 1), (u'0000', 2), (u'00000', 3), (u'000000', 4)

我不想要这个。我该如何预防?

最佳答案

您可以在初始化矢量器时定义token_pattern。默认的是 u'(?u)\b\w\w+\b' ((?u) 部分只是把 re.UNICODE 标志)。可以摆弄它,直到你得到你需要的东西。

类似于:

vectorizer = TfidfVectorizer(stop_words=stop_words,
min_df=200,
token_pattern=u'(?u)\b\w*[a-zA-Z]\w*\b')

另一种选择(如果数字出现在样本中很重要)是在向量化之前屏蔽所有数字。

re.sub('\b[0-9][0-9.,-]*\b', 'NUMBER-SPECIAL-TOKEN', sample)

这样,数字将在矢量化器的词汇表中出现相同的位置,您也不会完全忽略它们。

关于python - 如何防止 TfidfVectorizer 获取数字作为词汇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45547568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com