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

NLTK分词异常:含连续重复字母单词被拆分问题求助

问题原因

nltk.tokenize.word_tokenize基于Penn Treebank分词规范,这套规则会将口语化缩约词(比如gonna、wanna)拆分为词根和后缀部分——gonna本质是"going to"的口语缩合,按照规则会被拆成gon和na,这是工具内置的行为,并非你的代码逻辑问题。

解决方案1:使用nltk的TweetTokenizer

TweetTokenizer专门针对口语化/社交媒体文本优化,能保留gonna这类缩约词作为单个token:

from nltk.tokenize import TweetTokenizer

def clean_str_and_tokenise(line):
    chars_to_remove = [',', '.', '"', "'", '/', '*', ',', '?', '!', '-', '\n', '“', '”', '_', '&', '\ufeff', '&', ';', ":"]
    text_clean = "".join([i.lower() for i in line if i not in chars_to_remove])
    print(text_clean)
    
    tknzr = TweetTokenizer()
    return tknzr.tokenize(text_clean)

测试test_str2会得到预期结果:['never', 'gonna', 'give', 'you', 'up']

解决方案2:自定义正则分词规则

如果不想替换原有分词器,可以用正则匹配指定缩约词,优先保留它们:

import re
from nltk.tokenize import word_tokenize

# 定义需要保留的口语缩约词列表
contractions = r'\b(gonna|wanna|gotta|lemme|gimme)\b'

def clean_str_and_tokenise(line):
    chars_to_remove = [',', '.', '"', "'", '/', '*', ',', '?', '!', '-', '\n', '“', '”', '_', '&', '\ufeff', '&', ';', ":"]
    text_clean = "".join([i.lower() for i in line if i not in chars_to_remove])
    print(text_clean)
    
    tokens = []
    # 分割文本:缩约词和其他部分
    parts = re.split(f'({contractions})', text_clean)
    for part in parts:
        if part.strip():
            if re.match(contractions, part):
                tokens.append(part)
            else:
                tokens.extend(word_tokenize(part))
    return tokens

这个方法可以精准控制需要保留的缩约词,同时兼容原分词逻辑。

解决方案3:使用spaCy分词器

spaCy的预训练模型对日常口语词汇的处理更精准,默认就能识别gonna为单个token:

import spacy

# 需先安装spaCy并下载模型:python -m spacy download en_core_web_sm
nlp = spacy.load("en_core_web_sm")

def clean_str_and_tokenise(line):
    chars_to_remove = [',', '.', '"', "'", '/', '*', ',', '?', '!', '-', '\n', '“', '”', '_', '&', '\ufeff', '&', ';', ":"]
    text_clean = "".join([i.lower() for i in line if i not in chars_to_remove])
    print(text_clean)
    
    doc = nlp(text_clean)
    return [token.text for token in doc]

内容的提问来源于stack exchange,提问作者avg-bitsian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:55:24