如何在Python中将大小写折叠的输出存储到数据帧或列表中?

2024-09-26 22:50:58 发布

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

所以我建立了用于案例折叠和词干分析的函数,但是输出不是我想要的。这是印度尼西亚语的文本预处理,但您不需要理解语言,我的问题是输出的格式。代码如下所示:

import re 
import string

#import StemmerFactory class
from Sastrawi.Stemmer.StemmerFactory import StemmerFactory

#create stemmer
factory = StemmerFactory()
stemmer = factory.create_stemmer()

def case_fold(data, title = None):
        text = " ".join(words for words in data)
        text = text.lower() #lowercase
        text = re.sub(r"\d+", "", text) #remove numbers
        text = text.translate(str.maketrans("","",string.punctuation)) #remove punctuation
        text = text.strip() #remove whitepace
        text = stemmer.stem(text) #stemming
        return text

我像这样输入数据

import pandas as pd

cars = {'Brand': ['Ini &Adalah [contoh]56 kalimat 57?','dengan} tanda. baca?!','seharusnya sih bagus tapi jelek !!!','Audi A4'],
        'Price': [22000,25000,27000,35000]
        }
df = pd.DataFrame(cars, columns = ['Brand', 'Price'])

print(case_fold(df['Brand']))

我得到如下输出:

ini adalah contoh kalimat dengan tanda baca harus sih bagus tapi jelek audi a

而我需要的输出是这样的数据帧:

                        Brand  
0   ini adalah contoh kalimat 
1           dengan tanda baca  
2  harus sih bagus tapi jelek  
3                      audi a  

或者像这样的列表:

[ini adalah contoh kalimat',
 'dengan tanda baca',
 'harus sih bagus tapi jelek',
 'audi a']

非常感谢您对我的帮助,我为此工作了几个小时,因为我不经常自己构建函数


Tags: textimportremovebrandstemmertapisihkalimat
1条回答
网友
1楼 · 发布于 2024-09-26 22:50:58

这个问题来自于这样一个事实:你给函数case一次折叠整个句子列表。 然后,在您的函数中,这一行:

text = " ".join(words for words in data)

将从您的句子列表中选取每个句子,并将它们相互连接成一个包含所有句子的句子,如下所示:

'Ini &Adalah [contoh]56 kalimat 57? dengan} tanda. baca?! seharusnya sih bagus tapi jelek !!! Audi A4'

您的所有处理都将在这一个句子上完成,因此返回一个词干和处理过的句子

为了避免这种情况,您应该使用apply函数对数据帧的每一行调用函数:

df["processed"] = df["Brand"].apply(case_fold)

您还应该删除函数中现在不再需要的这一行:

text = " ".join(words for words in data)

相关问题 更多 >

    热门问题