首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Spacy中的nlp.pipe()获取Dataframe列的doc对象

使用Spacy中的nlp.pipe()获取Dataframe列的doc对象
EN

Stack Overflow用户
提问于 2019-11-13 16:57:10
回答 1查看 2.2K关注 0票数 2

我正在使用Spacy nlp.pipe()来获取熊猫Dataframe列中文本数据的doc对象,但是在代码中作为" text“返回的解析文本只有32length。而的形状为(14640,16)。这是数据链接,如果有人想要读取这些数据。

代码语言:javascript
运行
复制
nlp = spacy.load("en_core_web_sm")
for text in nlp.pipe(iter(df['text']), batch_size = 1000, n_threads=-1):
  print(text)

len(text)

结果:

代码语言:javascript
运行
复制
32

有人能帮我解决这件事吗?我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-14 08:29:23

根据Doc对象这里的Spacy文档,__len__操作符获取“文档中的令牌数量”。

数据中的最后一个文本是:

代码语言:javascript
运行
复制
>>> df['text'].values[-1]
@AmericanAir we have 8 ppl so we need 2 know how many seats are on the next flight. Plz put us on standby for 4 people on the next flight?

在运行nlp.pipe()方法之后,这个句子将被标记为32个标记,这正是您所要求的。要验证这一点,请在len(text)之后运行以下代码,并得到确切的结果:

代码语言:javascript
运行
复制
>>> last_tokens = [token for token in text]
>>> last_tokens
[@AmericanAir, we, have, 8, ppl, so, we, need, 2, know, how, many, seats, are, on, the, next, flight, ., Plz, put, us, on, standby, for, 4, people, on, the, next, flight, ?]

>>> len(last_tokens)
32

编辑

您可以迭代从管道返回的每个doc的令牌,如下所示:

代码语言:javascript
运行
复制
nlp = spacy.load("en_core_web_sm")
for text in nlp.pipe(iter(df['text']), batch_size = 1000, n_threads=-1):
    for token in text:
        print(token)
    print('\n')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58841995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档