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

在Python中如何将双列CSV文件转换为Bigrams?

将CSV文件转换为Bigrams的实现方法

下面提供两种Python实现方案,帮你把给定的CSV文本列转换为二元组(Bigrams),同时保留对应的类别信息:

方案一:使用NLTK+Pandas(专业分词处理)

适合需要准确处理标点、特殊字符的场景,步骤如下:

  1. 先安装依赖库(未安装的话执行):
pip install pandas nltk
  1. 运行处理代码:
import pandas as pd
from nltk.util import bigrams
from nltk.tokenize import word_tokenize

# 首次运行需下载分词模型,取消注释以下两行
# import nltk
# nltk.download('punkt')

# 读取制表符分隔的CSV文件
df = pd.read_csv('demo.csv', sep='\t')

def generate_bigrams(text):
    # 分词并转小写统一格式
    tokens = word_tokenize(text.lower())
    # 过滤标点符号(可选,按需调整)
    tokens = [tok for tok in tokens if tok.isalnum()]
    # 生成bigram并转为字符串格式
    return [' '.join(bigram) for bigram in bigrams(tokens)]

# 为每行文本生成bigrams
df['bigrams'] = df['words'].apply(generate_bigrams)

# 查看结果
print(df[['class', 'bigrams']])
# 保存结果到新CSV
df.to_csv('demo_bigrams.csv', sep='\t', index=False)

方案二:纯Python实现(无额外依赖)

适合快速处理、不想安装第三方库的场景:

import pandas as pd

def generate_bigrams_simple(text):
    # 按空格分割文本并转小写
    raw_tokens = text.lower().split()
    # 去除每个token首尾的标点
    tokens = [tok.strip(',.?') for tok in raw_tokens if tok.strip(',.?')]
    # 生成相邻二元组
    return [f"{tokens[i]} {tokens[i+1]}" for i in range(len(tokens)-1)]

# 读取CSV
df = pd.read_csv('demo.csv', sep='\t')
# 生成bigrams列
df['bigrams'] = df['words'].apply(generate_bigrams_simple)

# 输出结果
print(df[['class', 'bigrams']])

示例输出(以第一行为例)

原文本:hi my name is Jeff.
生成的Bigrams:['hi my', 'my name', 'name is', 'is jeff']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:55:17