我正在尝试标记pandas
系列中的每个句子。
我尝试使用文档中的方法执行文档中的操作,但是没有用:
x.apply(nltk.word_tokenize)
如果我只使用nltk.word_tokenize(x)
也不起作用,因为x
不是字符串。有人有什么主意吗?
编辑:x
是一个pandas
系列,带有句子:
0 A very, very, very slow-moving, aimless movie ...
1 Not sure who was more lost - the flat characte...
2 Attempting artiness with black & white and cle...
对于x.apply(nltk.word_tokenize)
,它返回的结果完全相同:
0 A very, very, very slow-moving, aimless movie ...
1 Not sure who was more lost - the flat characte...
2 Attempting artiness with black & white and cle...
对于nltk.word_tokenize(x)
,错误是:
TypeError: expected string or bytes-like object
答案 0 :(得分:2)
问题:您要保存中间结果吗? x.apply()
创建原始Series
的副本,并将适当的转换应用于Series
的每个元素。参见下面的示例,它可能会如何影响您的代码...
我们首先要确认word_tokenize()
是否适用于示例文本片段。
>>> import pandas as pd
>>> from nltk import word_tokenize
>>> word_tokenize('hello how are you') # confirming that word_tokenize works.
['hello', 'how', 'are', 'you']
然后创建一个Series
来玩。
>>> s = pd.Series(['hello how are you',
'lorem ipsum isumming lorems',
'more stuff in a line'])
>>> print(s)
0 hello how are you
1 lorem ipsum isumming lorems
2 more stuff in a line
dtype: object
在交互式Python提示符上使用word_tokenize
函数执行apply()
表示它已标记化...
但这并不表示这是副本...不是对s
的永久更改
>>> s.apply(word_tokenize)
0 [hello, how, are, you]
1 [lorem, ipsum, isumming, lorems]
2 [more, stuff, in, a, line]
dtype: object
实际上,我们可以打印s
来表明它没有变化...
>>> print(s)
0 hello how are you
1 lorem ipsum isumming lorems
2 more stuff in a line
dtype: object
相反,如果我们在wt
函数调用的结果中提供标签(在这种情况下为apply()
),则可以使我们永久保存结果。通过打印wt
可以看到。
>>> wt = s.apply(word_tokenize)
>>> print(wt)
0 [hello, how, are, you]
1 [lorem, ipsum, isumming, lorems]
2 [more, stuff, in, a, line]
dtype: object
在交互式提示上执行此操作可以使我们更容易地检测到这种情况,但是有时在脚本中运行该条件意味着生成副本的事实将以静默方式通过而没有任何指示。
答案 1 :(得分:0)
apply调用应该正常工作。我尝试了您的代码,它对我来说很好用。您能否分享您正在使用的确切代码
In [16]: s
Out[16]:
0 A very, very, very slow-moving, aimless movie
1 Not sure who was more lost - the flat characte
dtype: object
In [17]: s.apply(nltk.word_tokenize)
Out[17]:
0 [A, very, ,, very, ,, very, slow-moving, ,, ai...
1 [Not, sure, who, was, more, lost, -, the, flat...
dtype: object