You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用NLTK对DataFrame分词时如何保留小数同时去除多余标点

解决方案

方案1:自定义NLTK正则分词器(推荐)

直接在分词阶段实现保留小数、过滤独立标点的需求,无需额外后处理,性能更优,可直接适配DataFrame场景使用:

import nltk
from nltk.tokenize import RegexpTokenizer

# 定义分词规则:优先匹配小数、整数、英文单词,自动跳过单独标点
custom_rule = r'\d+\.\d+|[A-Za-z]+|\d+'
tokenizer = RegexpTokenizer(custom_rule)

# 直接对DataFrame指定列执行分词
Data_preprocessing['clean_custom_content_tokenize'] = Data_preprocessing['tweet_without_stopwords'].apply(tokenizer.tokenize)

如果有其他需要保留的特殊格式(比如带连字符的复合词、带特定符号的专有名词),只需要调整custom_rule的正则匹配规则即可。

方案2:分词后列表过滤

如果不想改动原有分词逻辑,可以在nltk默认分词后追加过滤步骤,仅保留符合规则的分词单元:

import re
import nltk

def clean_token_list(tokens):
    # 匹配规则:仅保留小数、整数、英文单词,过滤独立标点
    valid_token = re.compile(r'^(\d+\.\d+|[A-Za-z]+|\d+)$')
    return [token for token in tokens if valid_token.match(token)]

# 原有分词逻辑不变,追加过滤步骤
Data_preprocessing['clean_custom_content_tokenize'] = Data_preprocessing['tweet_without_stopwords']\
    .apply(nltk.word_tokenize)\
    .apply(clean_token_list)

两种方法都可以实现保留小数的同时过滤多余独立标点的需求,无需额外转换数据格式,可直接作用于DataFrame列。

内容的提问来源于stack exchange,提问作者kostya ivanov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 22:24:04