首页 > 解决方案 > 从字典中删除停用词

问题描述

下面的列表由词干分析器生成,包括文档中最常见的单词。

list=[('d', 438),
 ('ricc', 308),
 ('cas', 256),
 ('sal', 237),
 ('nuov', 206),
 ('cos', 203),
 ('immunitar', 202),
 ('prim', 193),
 ('mineral', 192),
 ('molt', 172),
 ('frutt', 167),
 ('aliment', 164),
 ('b', 164)]

但是,它包含应使用停用词列表排除的单个字母。我想删除这些词(我使用的是意大利语停用词)。我试过如下:

it_stopwords= set(stopwords.words('italian'))
highest =counts.most_common()[:20]
highest = [w for w in highest if not w in it_stopwords]

但没有从列表中删除任何单词。我想是因为它是一本字典,上面的代码无法应用。

我希望你能帮助我。谢谢

标签: pythonpandas

解决方案


首先,不要使用 shadow 内置名称,如list,它会导致坏事发生。如果您愿意,可以使用_listwhich 是有效的替代方法作为调用约定。然后,您仍然可以编写自定义函数并将其用于过滤器调用:

def delete_stopwords(word):
    it_stopwords = set(stopwords.words('italian'))
    if word in it_stopwords:
     return False
    return True

filterList = filter(delete_stopwords,_list)

注意我写的函数不是最快的,但它应该可以工作,你可能想编写自己的函数,例如只创建一次集合。我也不知道您用来生成停用词的库,但即使没有显式构建到set.


推荐阅读