bert分词器及文本还原

此博客使用Python进行文本处理。借助pandas读取Excel文件,利用BERT分词器对文本进行分词。先合并标题和内容,去除HTML标签、停用词、特殊字符和标点符号,再将分词结果添加到新列,逆向分词还原后也添加到新列,最后将处理后的数据保存到新的Excel文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import pandas as pd
from transformers import BertTokenizer
import re
import html
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize


# 加载BERT分词器
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')

# 读取Excel文件中的文本数据(假设在第一个sheet中)
file_path = 'Indonesia news overall.xlsx'
df = pd.read_excel(file_path, header=0)  # 使用第一行作为列名

# 合并标题和内容到一列
df['合并文本'] = df['标题'].astype(str) + ' ' + df['内容'].astype(str)

# 对合并文本进行BERT分词
tokenized_texts = []
original_texts = []  # 用于存储还原后的文本

for text in df['合并文本'].values.tolist():
    # 去除HTML标签
    text = html.unescape(text)

    # 分词
    tokens = word_tokenize(text)

    # 去除停用词
    stop_words = set(stopwords.words('english'))
    tokens = [token for token in tokens if token.lower() not in stop_words]

    # 将标记的ID转换回原始单词形式
    input_ids = tokenizer.convert_tokens_to_ids(tokens)
    original_tokens = tokenizer.convert_ids_to_tokens(input_ids)

    # 去除特殊字符和标点符号
    cleaned_tokens = [token for token in original_tokens if re.match(r'^\w+$', token)]

    # 将分词结果合并为一个字符串
    merged_text = " ".join(cleaned_tokens)
    tokenized_texts.append(merged_text)
    original_texts.append(text)  # 保留原始文本

# 将分词结果添加为新的列
df['Tokenized_Content'] = tokenized_texts

# 将还原后的文本添加为新的列
df['Original_Content'] = original_texts

# 逆向分词还原并将结果添加为新的列
reconstructed_texts = []
for input_ids in tokenizer(df['Tokenized_Content'].tolist(), return_tensors='pt', padding=True, truncation=True)['input_ids']:
    reconstructed_text = tokenizer.decode(input_ids, skip_special_tokens=True)
    reconstructed_texts.append(reconstructed_text)

df['Reconstructed_Content'] = reconstructed_texts

# 将带有分词结果的DataFrame写入新的Excel文件
output_file_path = 'Merged_Tokenized_News.xlsx'
df.to_excel(output_file_path, index=False)

print("合并分词结果后的数据已保存至 Merged_Tokenized_News.xlsx")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值