python - 在 pandas 数据框中形成大词组
问题描述
我一直在尝试将包含已经标记化的单词的 pandas 数据框转换为二元组,但我没有成功。我尝试了多个代码,但要么不断收到错误消息,要么得到奇怪的答案。我大约 2 周前才开始使用 python,我真的很挣扎。任何帮助,将不胜感激。谢谢
这是我到目前为止所尝试的。
from nltk.util import ngrams
generic_tweets['bigrams'] = generic_tweets['tweet'].apply(lambda row: list(map(lambda x:ngrams(x,2), row)))
generic_tweets['bigrams'].head()
在哪里
generic_tweets['tweet'].head()
0 [awww, thats, bummer, shoulda, got, david, car...
1 [upset, that, he, cant, update, his, facebook,...
2 [dived, many, time, ball, managed, save, rest,...
3 [whole, body, feel, itchy, like, it, on, fire]
4 [no, it, not, behaving, at, all, im, mad, why,...
5 [not, whole, crew]
6 [need, hug]
我想要的是
0 [(awww, thats), (thats, bummer), (bummer, shoulda)...
1 [(upset, that), (that, he), (he, cant), (cant, update)...
2 [(dived, many), (many, time), (time, ball), (ball, managed)...
但我得到的是
0 [<generator object ngrams at 0x000002A38014B84...
1 [<generator object ngrams at 0x000002A30BA0AB1...
2 [<generator object ngrams at 0x000002A3A9182B8...
3 [<generator object ngrams at 0x000002A3A918713...
4 [<generator object ngrams at 0x000002A3A91874F...
Name: bigrams, dtype: object
解决方案
此输出的原因隐藏在您正在应用的 lambda 函数的主体中:
generic_tweets['bigrams'] = generic_tweets['tweet'].apply(lambda row: list(map(lambda x:ngrams(x,2), row)))
我相信你应该做的不是应用ngrams(x,2)
do list(ngrams(row,2))
,它会摆脱你在答案中得到的生成器,并给你单词而不是字母级别的 ngram:
generi_tweets['bigrams'] = df['tweet'].apply(lambda row: list(nltk.ngrams(row, 2)))
另一件事是,在不包含的情况下访问数据框中的值list
也会泄露ngrams
函数的结果。
推荐阅读
- python - 微调 Inception V3 输出张量形状
- .net-core - 单片到微服务架构
- python - 如何将特定概率分数的返回值表示为浮点数但限制为小数点后两位?
- java - 如何在 Firebase 中退出我的 Google 帐户,这样当我再次登录时,我可以选择我想登录的帐户?
- jquery - 烧瓶中使用的 javascript 和 jquery 文件在哪里?
- android - Android 11(R) 中的权限被拒绝问题
- javascript - web3.eth.accounts[0] 返回 undefined 并且 app.vote(1,{ from:web3.eth.accounts[0] }) 给出错误
- python - Python - Tabula - 字体中使用的 OpenType 布局表未在 PDFBox 中实现,将被忽略
- laravel - laravel中会话超时时如何触发事件处理程序?
- python - 用于获取没有特定标签的实例名称的 Lambda 脚本