我的数据框内容
comment
0 abg ko metedarah duit rakyat nak buat belanja ...
1 tutup tv n radio jgn dngar janji bajet 2 dr ta...
2 ya lah ko dah dera rakyat bajet besar untuk ra...
3 oiii kerjaan bn ko org sdr x dh lh kerajaan xd...
4 bertambah lg hutang negara diambil oleh tangan...
将替换为文件中的列表
word correction
0 abg abang
1 n dan
2 dr dari
3 ko kau
4 org orang
任何可能的方式?
答案 0 :(得分:1)
您可以考虑在pandas中使用带有str.replace()
方法的正则表达式来更改在单词边界(\b
)找到的单词的实例,然后替换为更正:
>>> data
comment
0 abg ko metedarah duit rakyat nak buat belanja
1 tutup tv n radio jgn dngar janji bajet 2 dr ta
2 ya lah ko dah dera rakyat bajet besar untuk ra
3 oiii kerjaan bn ko org sdr x dh lh kerajaan xd
4 bertambah lg hutang negara diambil oleh tangan
>>> correction_df
word correction
0 abg abang
1 n dan
2 dr dari
3 ko kau
4 org orang
for word, correction in correction_df.itertuples(index=False,name=None):
data.comment = data.comment.str.replace(r'\b{0}\b'.format(word),correction)
>>> data
comment
0 abang kau metedarah duit rakyat nak buat belanja
1 tutup tv dan radio jgn dngar janji bajet 2 dari ta
2 ya lah kau dah dera rakyat bajet besar untuk ra
3 oiii kerjaan bn kau orang sdr x dh lh kerajaan xd
4 bertambah lg hutang negara diambil oleh tangan
答案 1 :(得分:0)
是否有更好的解决方案,但这里有些脏东西,有效:
comments = ["abg ko metedarah duit rakyat nak buat belanja",
"tutup tv n radio jgn dngar janji bajet 2 dr ta",
"ya lah ko dah dera rakyat bajet besar untuk ra",
"oiii kerjaan bn ko org sdr x dh lh kerajaan xd",
"bertambah lg hutang negara diambil oleh tangan"]
corrections =
{"abg" : "abang",
"n" : "dan",
"dr" : "dari",
"ko" : "kau",
"org" : "orang",
}
data = pd.DataFrame(comments)
data.columns = ["comment"]
def correct(w,corrections):
c =corrections.get(w)
return c if c else w
def make_corrections(sent,corrections):
return " ".join((correct(w, corrections) for w in sent.split()))
data.apply(lambda x: make_corrections(x.comment, corrections),axis=1)
代码循环遍历每个单词,并用校正替换它(如果存在)。这需要时间在语料库的长度。