如何使用Keras Tokenizer去除TXT文件中的标点符号与数字?
使用Keras Tokenizer去除文本中的标点与数字
方法一:自定义Tokenizer过滤规则(简洁高效)
Keras Tokenizer的filters参数可指定需要过滤的单个字符,默认已包含常见标点,只需把数字(0-9)加入过滤列表,就能自动移除标点和数字:
import os from tensorflow.keras.preprocessing.text import Tokenizer # 读取文件夹下所有TXT文件 def load_txt_files(folder_path): texts = [] for filename in os.listdir(folder_path): if filename.endswith('.txt'): with open(os.path.join(folder_path, filename), 'r', encoding='utf-8') as f: texts.append(f.read()) return texts # 初始化Tokenizer,添加数字到过滤规则 tokenizer = Tokenizer(filters='!"#$%&()*+,-./:;<=>?@[\]^_`{|}~\t\n0123456789') # 加载文本并拟合Tokenizer texts = load_txt_files('你的TXT文件夹路径') tokenizer.fit_on_texts(texts) # 测试转换:将文本转为序列(已去除标点和数字) sample_seq = tokenizer.texts_to_sequences([texts[0]]) print(sample_seq)
方法二:先手动预处理文本(更灵活)
如果需要对数字做特殊处理(比如保留特定格式的数字),可以先用正则表达式移除数字,再用Tokenizer过滤标点:
import os import re from tensorflow.keras.preprocessing.text import Tokenizer def load_txt_files(folder_path): texts = [] for filename in os.listdir(folder_path): if filename.endswith('.txt'): with open(os.path.join(folder_path, filename), 'r', encoding='utf-8') as f: texts.append(f.read()) return texts # 预处理:移除所有数字 def remove_numbers(text): return re.sub(r'\d+', '', text) # 初始化Tokenizer(使用默认标点过滤规则) tokenizer = Tokenizer() # 加载并预处理文本 texts = load_txt_files('你的TXT文件夹路径') processed_texts = [remove_numbers(text) for text in texts] # 拟合Tokenizer并转换文本 tokenizer.fit_on_texts(processed_texts) sample_seq = tokenizer.texts_to_sequences([processed_texts[0]]) print(sample_seq)
注意事项
- 读取文件时请指定正确编码(如
utf-8),避免乱码。 - 如果需要过滤中文标点,可在
filters参数中添加对应字符,例如:filters='!"#$%&()*+,-./:;<=>?@[\]^_{|}~\t\n0123456789,。!?;:”“‘’'`
内容的提问来源于stack exchange,提问作者Thiziri
相关产品推荐
相关产品推荐

