首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Python 文本預處理:高效刪除中文標點符號的多種方法

     編輯:程式設計綜合問答

制作中文語料庫時,需刪除文本中的所有標點符號。本文對比正則表達式、字符串翻譯、第三方庫等多種方案的性能與適用場景。

方法對比

1. 正則表達式(通用、靈活)


import re

# 方案 A:匹配所有非中英文數字字符(保留字母數字)
def remove_punct_regex(text):
    return re.sub(r'[^\u4e00-\u9fa5a-zA-Z0-9]', '', text)

# 方案 B:顯式列出中文標點(更精確)
CN_PUNCT = r'[!,。?、;:「」『』()【】《》〈〉……——~·¥\s+]'
def remove_punct_explicit(text):
    return re.sub(CN_PUNCT, '', text)

# 方案 C:Unicode 類別 \p{P} (Python 3.6+ regex 模塊)
# pip install regex
import regex
def remove_punct_unicode(text):
    return regex.sub(r'\p{P}+', '', text)

2. str.translate(極速、內存效率高)


import string

# 構建翻譯表:標點 -> None
# 合併 ASCII 標點 + 常用中文標點
punct_map = str.maketrans('', '', string.punctuation + '!,。?、;:「」『』()【】《》〈〉……——~·¥')
def remove_punct_translate(text):
    return text.translate(punct_map)

3. 第三方庫 jieba/hanlp 分詞時自動過濾


import jieba

def tokenize_no_punct(text):
    # jieba 默認會將標點作為單獨詞元輸出
    words = jieba.lcut(text)
    return [w for w in words if w not in string.punctuation and w not in '!,。?、;:「」『』()【】《》〈〉……——~·¥']

性能測試(10MB 純文本)

方法耗時內存峰值優點缺點
re.sub (方案 A)~1.2s~50MB通用、支持複雜模式較慢、需編譯正則
str.translate~0.15s~10MB極快、C層實現、內存友好只能單字符映射、不支持正則
regex \p{P}~0.8s~30MB完整 Unicode 標點覆蓋需安裝 regex 包
jieba 分詞過濾~3.5s~200MB同時完成分詞若僅去標點則過重

推薦方案選擇

  • 純去標點、追求極致性能:str.translate + 預構建翻譯表
  • 需保留特定符號(如英文引號、百分號):正則表達式精確控制
  • 後續需分詞:直接用 jieba 分詞後過濾,一步到位
  • 處理多語言混雜文本:regex 模塊的 \p{P} 覆蓋所有 Unicode 標點

工具替代:UltraEdit/Notepad++ 批量替換

若為一次性數據清洗,無需寫代碼:

  1. 打開文件 → Ctrl+H(替換)
  2. 勾選「正則表達式」
  3. 查找:[!,。?、;:「」『』()【】《》〈〉……——~·¥\p{P}](Notepad++ 需安裝 Unicode 正則插件)
  4. 替換為:空
  5. 「全部替換」

中文語料庫資源推薦

新聞文本相似度分析流程建議


1. 獲取數據 → 2. 去標點/清洗 (str.translate) → 3. 分詞
4. 去停用詞 (哈工大停用詞表) → 5. TF-IDF / Word2Vec / BERT 向量化
6. 余弦相似度計算 → 7. 關鍵詞提取 (TextRank / TF-IDF)

總結

Python 刪除中文標點:**性能首選 str.translate,功能首選正則/ regex**。制作語料庫建議直接使用成熟分詞工具(jieba/hanlp)內置過濾,避免重複造輪子。語料庫資源豐富,按任務類型選擇:分類用 THUCTC/SogouCA,預訓練用 CLUECorpus,關鍵詞提取可基於分詞後統計實現。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
語料庫特點獲取方式
THUCTC (清華)中文文本分類,74萬+ 條,含標籤GitHub: thunlp/THUCTC
SogouCA搜狗新聞,290萬+ 文檔,18 大類搜狗實驗室官網申請
Chinese Wikipedia中文維基百科全量,開放授權dumps.wikimedia.org
CLUECorpus2020大規模預訓練語料,100GB+GitHub: CLUEbenchmark/CLUECorpus2020
People's Daily 1998經典標註語料,詞性標註GitHub 多個復現倉庫