python拆分句子、去除句子符号等并分词
2024-01-03 15:31:16
import re
def split_text_into_batches(text, max_tokens_per_batch):
# 定义一个正则表达式,在中文标点符号处拆分句子
sentence_splitter = re.compile(r'(?<=[。!?])')
# 将文本拆分为句子
sentences = [sentence.strip() for sentence in sentence_splitter.split(text) if sentence.strip()]
# 初始化变量
batches = []
current_batch = ""
for sentence in sentences:
if len(current_batch) + len(sentence) <= max_tokens_per_batch:
current_batch += sentence + " "
else:
# 找到距离 max_tokens_per_batch 限制最近的标点符号
last_punctuation_index = max(current_batch.rfind('。'), current_batch.rfind('!'), current_batch.rfind('?'))
# 如果限制范围内没有标点符号,就在最后一个空格处拆分
split_index = last_punctuation_index if last_punctuation_index != -1 else current_batch.rfind(' ')
# 将批次添加到拆分索引处
batches.append(current_batch[:split_index].strip())
# 新批次从拆分索引开始
current_batch = sentence + " "
if current_batch.strip(): # 确保不将空字符串添加到批次中
batches.append(current_batch.strip())
return batches
text = ""
max_tokens_per_batch = 20
batches = split_text_into_batches(text, max_tokens_per_batch)
print("Batches:", batches)
import re
import nltk
import jieba
nltk.download('punkt')
import string
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
def clean_html_tags(text):
clean_text = re.sub(r'<.*?>', '', text)
return clean_text
def remove_links(text):
clean_text = re.sub(r'http\S+', '', text)
return clean_text
def remove_special_characters(text):
clean_text = ''.join(char for char in text if char not in string.punctuation)
return clean_text
def remove_extra_whitespace(text):
clean_text = ' '.join(text.split())
return clean_text
def remove_stopwords(text):
stop_words = set(stopwords.words('english'))
word_tokens = word_tokenize(text)
clean_text = ' '.join(word for word in word_tokens if word.lower() not in stop_words)
return clean_text
def clean_chinese_text(text):
# 清除HTML标签
cleaned_text = clean_html_tags(text)
# 去除链接
cleaned_text = remove_links(cleaned_text)
# 去除特殊字符
cleaned_text = remove_special_characters(cleaned_text)
# 去除额外的空白
cleaned_text = remove_extra_whitespace(cleaned_text)
# 去除停用词
cleaned_text = remove_stopwords(cleaned_text)
# 使用jieba进行分词
word_list = jieba.lcut(cleaned_text)
# 拼接成清洗后的文本
cleaned_text = ' '.join(word_list)
return cleaned_text
input_text =""
cleaned_text = clean_chinese_text(input_text)
print(cleaned_text)
文章来源:https://blog.csdn.net/weixin_44740756/article/details/135362584
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!