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

如何移除文本指定词汇并保留标点(孟加拉语文本处理)

解决孟加拉语文本中带标点目标词汇的移除问题

问题说明

现有Python代码可移除词表中的纯孟加拉语词汇,但无法处理末尾带有标点(,, ।, ?)的目标词汇。例如输入文本:

বিশ্বের তথা দূষিত না বায়ুর না, শহরের না।

当前代码仅能移除তথা和না,输出为:

বিশ্বের দূষিত বায়ুর না, শহরের না।

需要实现移除带标点的目标词汇同时保留标点,期望输出:

বিশ্বের দূষিত বায়ুর, শহরের।

解决方案

核心思路是拆分每个词的词汇主体和末尾标点,判断词汇是否属于移除列表:若是则仅保留标点;若否则保留完整的词(词汇+标点),最后调整标点与前序词汇的拼接逻辑,避免多余空格。

word_list = {'নিজের', 'তথা', 'না'}
punctuations = {',', '।', '?'}

def remove_w(text):
    processed_words = []
    for word in text.split():
        # 分离词汇主体与末尾的标点
        clean_word = word
        trailing_punct = ''
        # 从词的末尾提取所有连续标点
        while clean_word and clean_word[-1] in punctuations:
            trailing_punct = clean_word[-1] + trailing_punct
            clean_word = clean_word[:-1]
        
        # 根据词汇是否在移除列表处理内容
        if clean_word not in word_list:
            processed_words.append(clean_word + trailing_punct)
        else:
            # 移除词汇,仅保留标点(如果存在)
            if trailing_punct:
                processed_words.append(trailing_punct)
    
    # 调整拼接逻辑:标点直接追加到前一个词汇后,避免空格
    result = []
    for item in processed_words:
        if item in punctuations and result:
            result[-1] += item
        else:
            result.append(item)
    
    return ' '.join(result)

# 测试示例
input_text = 'বিশ্বের তথা দূষিত না বায়ুর না, শহরের না।'
print(remove_w(input_text))  # 输出: বিশ্বের দূষিত বায়ুর, শহরের।

代码逻辑解析

  1. 标点分离:遍历每个词,从末尾提取所有连续的目标标点,将词汇主体与标点拆分
  2. 词汇判断:检查拆分后的词汇主体是否在移除列表中,决定保留完整词还是仅保留标点
  3. 拼接优化:处理标点的拼接方式,直接将标点追加到前一个词汇末尾,避免出现বায়ুর ,这类不符合语法的空格

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:13:21