用于情感分析的归一化词

Normalization words for sentiment analysis

我目前正在做情绪分析,但遇到了问题。

我对单词进行了很大的规范化,我想在标记化之前对文本进行规范化,就像这个例子一样:

data normal
kamu knp sayang kamu kenapa sayang
drpd sedih mending belajar dari pada sedih mending belajar
dmna sekarang di mana sekarang

这是我的代码:

import pandas as pd

slang = pd.DataFrame({'before': ['knp', 'dmna', 'drpd'], 'after': ['kenapa', 'di mana', 'dari pada']})
df = pd.DataFrame({'data': ['kamu knp sayang', 'drpd sedih mending bermain']})
                  
normalisasi = {}

for index, row in slang.iterrows():
  if row[0] not in normalisasi:
    normalisasi[row[0]] = row[1]


def normalized_term(document):
    return [normalisasi[term] if term in normalisasi else term for term in document]

df['normal'] = df['data'].apply(normalized_term)
df

但是,结果是这样的: result

我想要示例中的结果 table。

pandas 中有一个名为 str.replace 的实用程序,它允许我们用另一个甚至 find/replace 模式替换子字符串。您可以找到完整的文档 here。您想要的输出将如下所示:

更新

答案有两处错误:

  1. 您只能在 whole word 模式下替换,而不是 subword
  2. 在俚语文件中的每个条目之后,您必须keep the changes不能丢弃它们

所以它会是这样的:

import pandas as pd
df = pd.read_excel('data bersih.xlsx')
slang = pd.read_excel('slang.xlsx')
df['normal'] = df.text
for idx, row in slang.iterrows():
    df['normal'] = df.normal.str.replace(r"\b"+row['before']+r"\b", row['after'], regex=True)

输出:

                                                   text  \
0                           hari ini udh mulai ppkm yaa   
1     mohon info apakah pgs pasar turi selama ppkm b...   
2     di rumah aja soalnya lagi ppkm entah bakal nga...   
3     pangkal penanganan pandemi di indonesia yang t...   
4                              ppkm mikro anjingggggggg   
...                                                 ...   
9808  drpd nonton sinetron mending bagi duit kayak g...   
9809                     ppkm pelan pelan kalau masukin   
9810  masih ada kepala desa camat bahkan kepala daer...   
9811            aku suka ppkm tapi tanpa pp di depannya   
9812  menteri ini perlu tidak dibayarkan gajinya set...   

                                                 normal  
0                         hari ini sudah mulai ppkm yaa  
1     mohon informasi apakah pgs pasar turi selama p...  
2     di rumah saja soalnya lagi ppkm entah bakal se...  
3     pangkal penanganan pandemi di indonesia yang t...  
4                              ppkm mikro anjingggggggg  
...                                                 ...  
9808  dari pada nonton sinema elektronik lebih baik ...  
9809                    ppkm pelan pelan kalau masukkan  
9810  masih ada kepala desa camat bahkan kepala daer...  
9811  aku suka ppkm tapi tanpa pulang pergi di depannya  
9812  menteri ini perlu tidak dibayarkan gajinya set...  

[9813 rows x 2 columns]