在 pandas Series 和 Dataframe 中使用 Spacy 的词形还原问题

lov*_*guy 1 python series dataframe pandas spacy

我正在使用 Pandas 和 Spacy 处理形状为 (14640,16) 的文本数据,但在获取文本的词元化形式时遇到问题。此外,如果我使用仅包含文本列的 pandas 系列(即具有一列的数据框),也存在不同的问题。

代码:(数据框)

nlp = spacy.load("en_core_web_sm")
df['parsed_tweets'] = df['text'].apply(lambda x: nlp(x))
df[:3]
Run Code Online (Sandbox Code Playgroud)

结果: 结果

之后,我使用 parsed_tweets 迭代该列以获取 lemmetized 数据,但出现错误。

代码:

for token in df['parsed_tweets']:
  print(token.lemma_)
Run Code Online (Sandbox Code Playgroud)

错误: 错误

代码:(熊猫系列)

df1['tweets'] = df['text']

nlp = spacy.load("en_core_web_sm")
for text in nlp.pipe(iter(df1), batch_size = 1000, n_threads=-1):
  print(text)
Run Code Online (Sandbox Code Playgroud)

错误: 错误

有人可以帮我解决这些错误吗?我尝试了其他 stackoverflow 解决方案,但无法获取 Spacy 的 doc 对象来迭代它并获取令牌和 lemmetized 令牌。我究竟做错了什么?

qai*_*ser 5

#you can directly get your lemmatized token by running list comprehension in your lambda function  

df['parsed_tweets'] = df['text'].apply(lambda x: [y.lemma_ for y in  nlp(x)])
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

print(type(df['parsed_tweets'][0]))
#op
spacy.tokens.doc.Doc


for i in range(df.shape[0]):
    for word in df['parsed_tweets'][i]:
        print(word.lemma_)
#op
play
football
i
be
work
hard
Run Code Online (Sandbox Code Playgroud)