将 pandas 数据框列传递给 NLTK 分词器

pro*_*off 6 python string tokenize nltk pandas

我有一个 pandas 数据框 raw_df,有 2 列、ID 和句子。我需要将每个句子转换为字符串。下面的代码不会产生错误,并表示规则的数据类型是“对象”。

raw_df['sentences'] = raw_df.sentences.astype(str)
raw.df.sentences.dtypes
Run Code Online (Sandbox Code Playgroud)

输出:dtype('O')

然后,我尝试对句子进行标记并得到一个 TypeError ,该错误表明该方法需要一个字符串或类似字节的对象。我究竟做错了什么?

raw_sentences=tokenizer.tokenize(raw_df)
Run Code Online (Sandbox Code Playgroud)

相同类型错误

raw_sentences = nltk.word_tokenize(raw_df)
Run Code Online (Sandbox Code Playgroud)

cs9*_*s95 6

我假设这是一个 NLTK 分词器。我相信这些通过将句子作为输入并返回标记化单词作为输出来工作。

你传递的是raw_df- 一个pd.DataFrame对象,而不是str. 您不能期望它在不告诉您自己的情况下按行应用该函数。有一个函数需apply要这样做。

raw_df['tokenized_sentences'] = raw_df['sentences'].apply(tokenizer.tokenize)
Run Code Online (Sandbox Code Playgroud)

假设这一切顺利,tokenized_sentences将是一列列表。

由于您正在 DataFrames 上执行文本处理,因此我建议您查看我的另一个答案:Applying NLTK-based text pre-processing on a pandas dataframe