【问题标题】:Lemmatize tokenised column in pandas大熊猫中的词形化标记列
【发布时间】:2020-01-02 17:15:48
【问题描述】:

我正在尝试对标记化列 cmets_tokenized 进行词形还原

我愿意:

import nltk
from nltk.stem import WordNetLemmatizer 

# Init the Wordnet Lemmatizer
lemmatizer = WordNetLemmatizer()

def lemmatize_text(text):
    return [lemmatizer.lemmatize(w) for w in df1["comments_tokenized"]]

df1['comments_lemmatized'] = df1["comments_tokenized"].apply(lemmatize_text)

但是有

TypeError: unhashable type: 'list'

我可以做些什么来对包含词袋的列进行词形还原?

以及如何避免将 [don't] 划分为 [do,n't] 的标记化问题?

【问题讨论】:

    标签: pandas nltk lemmatization


    【解决方案1】:

    你已经接近你的功能了!由于您在系列中使用apply,因此您无需专门调用函数中的列。您也根本没有在函数中使用输入 text。所以改变

    def lemmatize_text(text):
        return [lemmatizer.lemmatize(w) for w in df1["comments_tokenized"]]
    

    def lemmatize_text(text):
        lemmatizer = WordNetLemmatizer()
        return [lemmatizer.lemmatize(w) for w in text]  ##Notice the use of text.
    

    一个例子:

    df = pd.DataFrame({'A':[["cats","cacti","geese","rocks"]]})
                                 A
    0  [cats, cacti, geese, rocks]
    
    def lemmatize_text(text):
        lemmatizer = WordNetLemmatizer()
        return [lemmatizer.lemmatize(w) for w in text]
    
    df['A'].apply(lemmatize_text)
    
    0    [cat, cactus, goose, rock]
    

    【讨论】:

    • df = pd.DataFrame({'A':[["cats are playing","He is running","The were fishing"]]}) 我该怎么做?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 2021-03-28
    相关资源
    最近更新 更多