gpt4 book ai didi

python - CountVectorizer fit-transform() 不适用于自定义 token_pattern

转载 作者:太空宇宙 更新时间:2023-11-03 15:22:27 24 4
gpt4 key购买 nike

我需要对包含“R”、“C”等编程语言名称的文本使用 CountVectorizer。但 CountVectorizer 会丢弃仅包含一个字符的“单词”。

    cv1 = CountVectorizer(min_df=2, stop_words='english')
tokenize = cv1.build_tokenizer()
tokenize("Python, Time Series, Cloud, Data Modeling, R")

输出:

输出[172]:['Python'、'时间'、'系列'、'云'、'数据'、'建模']

然后我调整“token_pattern”,使其将“R”也视为 token 。

    cv1 = CountVectorizer(min_df=1, stop_words='english', token_pattern=r'(?u)\b\w\w+\b|R|C' ,tokenizer=None)
tokenize = cv1.build_tokenizer()
tokenize("Python, Time Series, Cloud, R ,Data Modeling")

输出:输出[187]:['Python'、'时间'、'系列'、'云'、'R'、'数据'、'建模']

但是,

    cvmatrix1 = cv1.fit_transform(["Python, Time Series, Cloud, R ,Data Modeling"])
cv1.vocabulary_

给出输出:

输出[189]:{'云':0,'数据':1,'建模':2,'Python':3,'系列':4,'时间':5}

为什么会发生这种情况?`

最佳答案

删除R的原因是正则表达式捕获大写字母R,而分词器的实际输入将是小写。其背后的原因是pre-processor在标记化原始字符串之前调用 .lower() 函数:

tokenize = cv1.build_tokenizer()
preprocess = cv1.build_preprocessor()
tokenize(preprocess("Python, Time Series, Cloud, R ,Data Modeling"))

产量:

['python', 'time', 'series', 'cloud', 'data', 'modeling']

关于python - CountVectorizer fit-transform() 不适用于自定义 token_pattern,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43422740/

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