提前道歉,因为这是我的第一个问题。我正在使用nltk来标记一系列来自我已加载到df的csv的推文。标记化工作正常,并将此类[[My,uncle,...]]输出到df中的单元格中。我想然后将POS标记器应用于df的整列的标记化文本。我使用下面的代码来做到这一点。我遇到困难的一句话是df['tagged'] = df['tokenized'].apply(lambda row: [nltk.pos_tag(row) for item in row])
。我知道我正在迭代错误的元素(行与项目),但无法找出正确的方法。代码如下:
import pandas as pd
import numpy as np
import nltk
from nltk.tokenize import word_tokenize,wordpunct_tokenize
from nltk.tag import pos_tag
read_test = pd.read_csv("simontwittertest.csv")
df = read_test
df['tokenized'] = df['content'].apply(lambda row: [nltk.wordpunct_tokenize(row) for item in row])
df['tagged'] = df['tokenized'].apply(lambda row: [nltk.pos_tag(row) for item in row])
print(df['tagged'])`
出于兴趣,我发现了一个pos_tag的小错误,它只适用于NLTK 3.1而不适用于NLTK 3.2(至少使用Python 2.7) 非常感谢`
答案 0 :(得分:1)
如果要将lambda函数应用于行,则需要指定axis=1
:
df['tokenized'] = df['content'].apply(
lambda row: [nltk.wordpunct_tokenize(row) for item in row], axis=1)
df['tagged'] = df['tokenized'].apply(
lambda row: [nltk.pos_tag(row) for item in row], axis=1)