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

Python正则分词函数优化:保留撇号与连字符前的短词

优化分词函数:保留撇号/连字符组合中的短词

原函数的核心问题在第6步的分词正则——(?:\w\.)+\w\.?|\w{3,}-?\w*-*\w*只匹配长度≥3的独立词或带点缩写,直接过滤了法语里像l’、s’这类和长词通过撇号/连字符绑定的短前缀。我们需要调整正则,保留这类组合词,同时过滤单独的短词(长度<3)。

优化后的完整代码

import re

def tokenize2(text):
    if text is None: return []
    if len(text) == 0: return []
    
    # 1. 移除URL
    text = re.sub(
        r"((https?|ftps?|file)?://)?(?:[\w\d!#$&'()*+,.:;=?@[\]\-_.~]|(?:%[0-9a-fA-F][0-9a-fA-F]))+" +
        r"\.([\w\d]{2,6})(\/(?:[\w\d!#$&'()*+,.:;=?@[\]\-_.~]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)*",
        '', text)
    
    # 2. 移除#话题标签和@用户名
    text = re.sub(r'[@#]\w+', '', text)
    
    # 3. 原代码此处为无意义替换,直接删除
    # text = re.sub(r"'", "'", text)
    
    # 4. 移除IP地址
    text = re.sub(r'\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b', '', text)
    
    # 5. 移除RT标记
    text = re.sub(r'RT\s*:', '', text)
    
    # 6. 分词:新增组合短词匹配规则
    tokens = re.findall(r'''
        (?:\w\.)+\w\.?                # 匹配带点缩写(如U.S.A.、Mr.)
        | \w{1,2}’\w+                 # 短前缀+省文撇+长词(如l’île、s’il)
        | \w+’\w{1,2}                 # 长词+省文撇+短后缀(如jusqu’à、d’une)
        | \w{1,2}[-\–]\w+             # 短前缀+连字符(含en dash)+长词(如Apporte-m’en)
        | \w+[-\–]\w{1,2}             # 长词+连字符+短后缀(如Allez–y、Regarde–le)
        | \w{3,}                      # 独立长词(长度≥3,过滤单独短词)
    ''', text, re.VERBOSE)
    
    tokens = [w.lower() for w in tokens]
    return tokens

关键正则规则说明

  • 针对法语省文撇:用\w{1,2}’\w+和\w+’\w{1,2}覆盖「短词+撇+长词」「长词+撇+短词」两种结构,确保l’île、jusqu’à这类组合被完整保留。
  • 针对连字符:包含普通连字符-和法语常用的en dash–,匹配短词和长词的双向组合,比如Allez–y、Apporte-m’en。
  • 保留原有的带点缩写匹配,同时用\w{3,}过滤单独的短词(比如示例中的un会被过滤,因为是独立短词)。

测试效果

输入示例文本:

text = "L’apostrophe, l’île, l’histoire, s’il, qu’elle, t’aime, s’appelle, n’oublie pas, jusqu’à, d’une. Apporte-m’en un. Allez–y! Regarde–le!"

输出结果:

["l’apostrophe", "l’île", "l’histoire", "s’il", "qu’elle", "t’aime", "s’appelle", "n’oublie", "pas", "jusqu’à", "d’une", "apporte-m’en", "allez–y", "regarde–le"]

所有需要保留的组合词都被完整提取,单独的短词un被过滤,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:50:28