所以我建立了用于案例折叠和词干分析的函数,但是输出不是我想要的。这是印度尼西亚语的文本预处理,但您不需要理解语言,我的问题是输出的格式。代码如下所示:
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']
非常感谢您对我的帮助,我为此工作了几个小时,因为我不经常自己构建函数
这个问题来自于这样一个事实:你给函数case一次折叠整个句子列表。 然后,在您的函数中,这一行:
将从您的句子列表中选取每个句子,并将它们相互连接成一个包含所有句子的句子,如下所示:
您的所有处理都将在这一个句子上完成,因此返回一个词干和处理过的句子
为了避免这种情况,您应该使用apply函数对数据帧的每一行调用函数:
您还应该删除函数中现在不再需要的这一行:
相关问题 更多 >
编程相关推荐