如何用TfidfVectorizer的token_pattern匹配所有空格分隔词汇
TfidfVectorizer匹配所有空格分隔词汇的正确方案
要匹配所有仅以空格分隔的词汇(包括单字符如"0"、"a",以及带特殊符号的如"0?0"这类),你最初使用的token_pattern=r"[^ ]+"可能无法达到预期效果,因为它仅匹配非空格字符序列,但无法确保是独立的空格分隔词汇。
两种有效解决方法:
使用单词边界正则匹配
用\b定义单词边界,搭配\S+匹配所有非空白字符序列,确保捕获完整的空格分隔词汇:vectorizer = TfidfVectorizer(smooth_idf=False, token_pattern=r"\b\S+\b")\b:匹配单词边界,确保目标词汇被空格或文本首尾包裹\S+:匹配一个或多个非空白字符,覆盖所有你需要的词汇类型
直接用空格分割作为分词器
如果完全不需要正则匹配,直接指定tokenizer为str.split,严格按空格分割文本:vectorizer = TfidfVectorizer(smooth_idf=False, tokenizer=str.split)这种方式更直接,完全符合“仅以空格分隔”的需求。
内容的提问来源于stack exchange,提问作者aaaaa0a
相关产品推荐
相关产品推荐

