如何使用Python对字符串进行连续成对Tokenize处理?
连续两两组合分词的实现方案
基础单句实现逻辑
你需要的是大小为2的滑动窗口分词,先用nltk拿到单分词列表后,遍历取相邻两个词拼接即可,示例代码如下:
from nltk.tokenize import word_tokenize def pair_tokenize(sentence: str) -> list: # 先拿到单个分词结果 tokens = word_tokenize(sentence) # 句子分词后不足2个词时可按需求调整返回规则,此处返回空列表 if len(tokens) < 2: return [] # 滑动窗口取相邻两个词拼接 return [f"{tokens[i]} {tokens[i+1]}" for i in range(len(tokens)-1)] # 测试用例 test_sentence = "I like to play basketball" print(pair_tokenize(test_sentence))
运行后输出结果为:['I like', 'like to', 'to play', 'play basketball'],符合预期。
数据库整列批量处理方案
根据数据量级选对应处理方案即可:
- 百万级及以下数据:用对应数据库的Python连接库(MySQL用pymysql、PostgreSQL用psycopg2)分批拉取目标列数据,每次拉取1000~10000条,调用上述函数处理完成后写回数据库新列,可搭配多进程并行处理进一步提速。
- 亿级及以上超大规模数据:如果数据存储在Hive、Spark SQL等大数据组件中,直接将上述分词逻辑包装为Spark UDF,对整列执行分布式计算,无需手动分批,框架会自动调度资源完成处理。
可选优化点
- 若不需要标点符号参与分词组合,可在拿到单分词列表后先过滤掉标点,再执行滑动窗口拼接,减少无效结果。
- 若后续需要统计两两组合的出现频次,处理时可直接用
collections.Counter累加计数,无需存储全部分词结果,节省存储空间。
内容的提问来源于stack exchange,提问作者Saurabh
相关产品推荐
相关产品推荐

