如何使用Boost Tokenize库对CSV文件分词并解决字符串转换问题?
CSV分词与Tokenizer参数设置解决方案
一、CSV内容读取与预处理
先把CSV里的目标字符串提取出来,打破逐行处理的局限:
import pandas as pd # 读取CSV,替换成你的目标列名 df = pd.read_csv("your_file.csv") # 提取所有目标字符串,存入列表统一处理 texts = df["target_column"].tolist()
如果不用pandas,原生csv模块也能实现:
import csv texts = [] with open("your_file.csv", "r", encoding="utf-8") as f: reader = csv.DictReader(f) for row in reader: texts.append(row["target_column"]) # 替换成你的目标列名
二、Tokenizer参数设置(以常见库为例)
1. Jieba(中文分词)
要自定义分词符号,可通过预处理替换分隔符或调整分词规则:
import jieba import re # 自定义分词符号集合,比如逗号、分号、竖线 custom_seps = r"[,;|]" for text in texts: # 把自定义分隔符替换成空格,让jieba按分隔符拆分 processed_text = re.sub(custom_seps, " ", text) # 精确模式分词,如需细粒度可设cut_all=True tokens = jieba.lcut(processed_text, cut_all=False) print(tokens)
2. Hugging Face Tokenizers(通用分词)
通过设置pre_tokenizer自定义分词规则,支持多分隔符组合:
from tokenizers import Tokenizer, pre_tokenizers from tokenizers.models import WordLevel # 初始化基础分词器 tokenizer = Tokenizer(WordLevel()) # 组合多分隔符规则,isolated表示保留分隔符作为单独token pre_tokenizer = pre_tokenizers.Sequence([ pre_tokenizers.Split(separator=",", behavior="isolated"), pre_tokenizers.Split(separator="|", behavior="isolated"), pre_tokenizers.Split(separator=" ", behavior="removed") ]) tokenizer.pre_tokenizer = pre_tokenizer # 批量处理CSV提取的文本 for text in texts: output = tokenizer.encode(text) print(output.tokens)
3. NLTK(英文分词)
用RegexpTokenizer自定义正则分词模式:
from nltk.tokenize import RegexpTokenizer # 正则规则:匹配单词,或指定分隔符作为独立token tokenizer = RegexpTokenizer(r"\w+|[;,|]") for text in texts: tokens = tokenizer.tokenize(text) print(tokens)
三、注意事项
- 预处理时要清除CSV字符串中的转义字符(如
\"),避免干扰分词 - 若需处理多列内容,可循环遍历所有目标列存入
texts列表 - 正则定义分隔符时,需对
.、*这类特殊字符添加转义符\
内容的提问来源于stack exchange,提问作者SerTitan
相关产品推荐
相关产品推荐

