Python文本清理

2024-09-24 00:24:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在清理一些文本数据,并且有一个函数可以清理任何非英语/jibberish单词。它做得很好,但是,有几个词是产品名称,没有被识别为真实的词,所以它们被删除。我正试图想出一种方法,在课文中保留某些单词

以下是我目前掌握的代码:

    def clean_non_eng(text):
       words = set(nltk.corpus.words.words())
       text = " ".join(w for w in nltk.wordpunct_tokenize(text) if w.lower() in words or not 
       w.isalpha())
       return text

我想的是有一个包含要保留的单词的列表,并将其合并到我的函数中以避免删除它们

    words_to_keep = ('wordtokeep1', 'wordtokeep2', 'wordtokeep3')

有没有一种方法可以让我把另一个“或”语句,比如“或不在字里行间”?我尝试过几种不同的方法,但迄今为止都没有成功

到现在为止,如果我调用这个函数,它会像这样

clean_non_eng('您好,这是对wordtokeep'的测试)

它将返回:“你好,这是一个测试”


Tags: 数据方法函数textin文本clean单词
1条回答
网友
1楼 · 发布于 2024-09-24 00:24:15

您不应该使用or w not in words_to_keep,而应该使用 or w in words_to_keep
我认为这应该解决你的问题

def clean_non_eng(text):
    words = set(nltk.corpus.words.words())
    text = " ".join(w for w in nltk.wordpunct_tokenize(text) if w.lower() in words or not 
 w.isalpha() or w in words_to_keep)
       return text

相关问题 更多 >