pandas 删除词典中没有的单词

fkaflof6  于 2022-12-17  发布在  其他
关注(0)|答案(1)|浏览(165)

我有一个数据表,其中包含来自在线评论的单词元组。它包含太多错别字,因此我尝试删除不属于词典的单词。我尝试使用的词典是KBBI(印度尼西亚语词典)https://pypi.org/project/kbbi/,从...

pip install kbbi
from kbbi import KBBI

我有麻烦匹配我的数据与字典,因为我不熟悉它的数据类型。我从原始资源中找到的函数显示,它允许我们搜索一个单词,它将返回定义。我只需要在字典内搜索(或者其他方式是提取所有文本内的txt文件字典)。这里是一个输入的例子...

# trying to look for "anjing" in the dictionary. Anjing is Indonesian for dog.    
anjing = KBBI('anjing')
print (anjing)

它的输出

an.jing
1. (n)  mamalia yang biasa dipelihara untuk menjaga rumah, berburu, dan sebagainya 〔Canis familiaris〕
2. (n)  anjing yang biasa dipelihara untuk menjaga rumah, berburu, dan sebagainya 〔Canis familiaris〕

这就是我期望我的结果会是什么样子(注意粗体字被删除了,因为它不在字典里)...
| 之前|后|
| - ------|- ------|
| [马西赫、布洛姆、凯尔、朱加曼]|[马西赫,凯尔]|
| [alhmdllh,sangat,membantu,meski,bunga,cukup,besar](阿拉伯语)|[阿尔赫姆德利赫、桑加特、门班图、梅斯基、邦加、库库普、贝萨]|
以下是我目前为止尝试的方法...

def remove_typo(text):
    text = [word for word in text if word in KBBI]
    return text

df['after'] = df['before'].apply(lambda x: remove_typo(x))

我在第2行遇到一个错误,说“'type'类型的参数不可迭代”。

qvk1mo1f

qvk1mo1f1#

我检查了kbbi的文档,解决方案变更为try-except

from kbbi import KBBI, TidakDitemukann 

L = [['masih', 'blom', 'cair', 'jugagmn', 'in'], 
     ['alhmdllh', 'sangat', 'membantu', 'meski', 'bunga', 'cukup', 'besar']]

df = pd.DataFrame({'before':L})

def remove_typo(text):
    out = []
    for word in text:
        try:
            if KBBI (word):
                out.append(word)
        except TidakDitemukan:
                pass
    return out

df['after'] = df['before'].apply(remove_typo)

print (df)
                                              before  \
0                   [masih, blom, cair, jugagmn, in]   
1  [alhmdllh, sangat, membantu, meski, bunga, cuk...   

                                            after  
0                                   [masih, cair]  
1  [sangat, membantu, meski, bunga, cukup, besar]

相关问题