在包含列表的Pandas DataFrame列上映射

问题描述 投票:1回答:1

我正在做一些Textmining,因此我需要在标记化之后将我的文档变形。所以我编写了一个函数,它使用python nlp libary spacy将我的标记化文本列转换为一个lemmatized文本列。实际上我认为它很简单直接,但由于某种原因它不起作用。我的DataFrame看起来像:

1

如前所述,我已经编写了一个使用spacy对字符串列表进行词典化的函数:

de = spacy.load('de')
def lemmatizer(x):
   return [de(unicode(y))[0].lemma_ for y in x]

当我在一个简单的字符串列表上使用它时,它工作正常:

2

当我尝试使用map在我的过滤列上使用它时出现问题。

removed_pd['test'] = removed_pd['filtered'].map(lambda x : lemmatizer(x))

3

我不知道为什么,因为我的lemmatizer函数在列表上运行,而'filtered'列包含列表。

] 4

并使用其他列表函数,如len工作正常:

removed_pd['test'] = removed_pd['filtered'].map(lambda x : len(x))    

5

python python-2.7 pandas spacy
1个回答
0
投票

我用了textblob-de python包。 pypi link

from textblob_de.lemmatizers import PatternParserLemmatizer


def lemmatize_text(text):
    _lemmatizer = PatternParserLemmatizer()
    return [_lemmatizer.lemmatize(w)[0][0] for w in text]

removed_pd['test'] = removed_pd['filtered'].apply(lemmatize_text) 
© www.soinside.com 2019 - 2024. All rights reserved.