在每一行应用函数以确定句子的结构

问题描述

我正在尝试为此数据集的每一行添加一列,包括句子的结构:

Sentence
    I ate an apple pie,yesterday. 
    I ate an orange,yesterday.
    I eat a lemon,today. 

为了将这个功能应用于每一行,我编写了以下内容

def stru():
    nlp = spacy.load('en_core_web_sm',disable=['ner','textcat'])

    doc = nlp(file.Sentence)
    pos = ""
    for token in doc:
        pos += token.pos_ + " "
    return

然后df.Struct=df.Sentence.apply(stru)

我的预期输出将是这样的:

Sentence                                  Struct
    I ate an apple pie,yesterday.        PRONOUN VERB NOUN ADJECTIVE
    I ate an orange,yesterday.           PRONOUN VERB NOUN ADJECTIVE         
    I eat a lemon,today.                 PRONOUN VERB NOUN ADJECTIVE

您能告诉我这是什么问题吗?

解决方法

您需要将特定的句子传递给函数,然后“返回”结果,即pos:

def stru(sentence):
    nlp = spacy.load('en_core_web_sm',disable=['ner','textcat'])
    doc = nlp(sentence)
    pos = ""
    for token in doc:
        pos += token.pos_ + " "
    return pos